FLImaging 6.5.8.1
DefinitionsMathematics.h
1#pragma once
2
11#include <cmath>
12
13#define FL_ABSOLUTE(val) ((val < 0) ? (-(val)) : val)
14#define FL_EPSILON_DOUBLE (2.2204460492503131e-16)
15#define FL_EPSILON_2DOUBLE (4.4408920985006262e-16)
16#define FL_EPSILON_ALMOST_DOUBLE (2.2204460492503131e-14)
17#define FL_EPSILON_ROUGH_DOUBLE (2.2204460492503131e-10)
18#define FL_EPSILON_FLOAT (1.19209290e-07f)
19#define FL_EPSILON_ROUGH (5.96046448e-06f)
20#define FL_EPSILON_QUITE_ROUGH (8.94069672e-05f)
21#define FL_EPSILON_VERY_ROUGH (2.98023224e-03f)
22#define FL_EPSILON_SUPER_ROUGH (2.98023224e-02f)
23#define FL_EPSILON_INT (1)
24
25#define FL_EQUAL_DOUBLE(doubleA, doubleB) ((((doubleA) - (doubleB)) < 0) ? ((((doubleB) - (doubleA))) < FL_EPSILON_DOUBLE) : (((doubleA) - (doubleB)) < FL_EPSILON_DOUBLE))
26#define FL_EQUAL_2DOUBLE(doubleA, doubleB) ((((doubleA) - (doubleB)) < 0) ? ((((doubleB) - (doubleA))) < FL_EPSILON_2DOUBLE) : (((doubleA) - (doubleB)) < FL_EPSILON_2DOUBLE))
27#define FL_EQUAL_ALMOST_DOUBLE(doubleA, doubleB) ((((doubleA) - (doubleB)) < 0) ? ((((doubleB) - (doubleA))) < FL_EPSILON_ALMOST_DOUBLE) : (((doubleA) - (doubleB)) < FL_EPSILON_ALMOST_DOUBLE))
28#define FL_EQUAL_ROUGH_DOUBLE(doubleA, doubleB) ((((doubleA) - (doubleB)) < 0) ? ((((doubleB) - (doubleA))) < FL_EPSILON_ROUGH_DOUBLE) : (((doubleA) - (doubleB)) < FL_EPSILON_ROUGH_DOUBLE))
29#define FL_EQUAL_FLOAT(floatA, floatB) ((((floatA) - (floatB)) < 0) ? (((floatB) - (floatA)) < FL_EPSILON_FLOAT) : (((floatA) - (floatB)) < FL_EPSILON_FLOAT))
30#define FL_EQUAL_ROUGH(floatA, floatB) ((((floatA) - (floatB)) < 0) ? (((floatB) - (floatA)) < FL_EPSILON_ROUGH) : (((floatA) - (floatB)) < FL_EPSILON_ROUGH))
31#define FL_EQUAL_QUITE_ROUGH(floatA, floatB) ((((floatA) - (floatB)) < 0) ? (((floatB) - (floatA)) < FL_EPSILON_QUITE_ROUGH) : (((floatA) - (floatB)) < FL_EPSILON_QUITE_ROUGH))
32#define FL_EQUAL_VERY_ROUGH(floatA, floatB) ((((floatA) - (floatB)) < 0) ? (((floatB) - (floatA)) < FL_EPSILON_VERY_ROUGH) : (((floatA) - (floatB)) < FL_EPSILON_VERY_ROUGH))
33#define FL_EQUAL_SUPER_ROUGH(floatA, floatB) ((((floatA) - (floatB)) < 0) ? (((floatB) - (floatA)) < FL_EPSILON_SUPER_ROUGH) : (((floatA) - (floatB)) < FL_EPSILON_SUPER_ROUGH))
34#define FL_EQUAL_INT(floatA, floatB) ((((floatA) - (floatB)) < 0) ? (((floatB) - (floatA)) < FL_EPSILON_INT) : (((floatA) - (floatB)) < FL_EPSILON_INT))
35#define FL_EQUAL_EPSILON(floatA, floatB, epsilon) ((((floatA) - (floatB)) < 0) ? (((floatB) - (floatA)) < epsilon) : (((floatA) - (floatB)) < epsilon))
36
37
38// pi
39#define FL_PI 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949
40// pi / 2
41#define FL_PI_2 1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803630124570636862293503303157794087440760460481414627045857682183946295180005665265274410233260692073475970755804716528635182879795976546093058690966305896552559274037231189981374783675942876362445613969091505975
42// pi / 4
43#define FL_PI_4 0.785398163397448309615660845819875721049292349843776455243736148076954101571552249657008706335529266995537021628320576661773461152387645557931339852032120279362571025675484630276389911155737238732595491107202743916483361532118912058446695791317800477286412141730865087152613581662053348401815062285318431146751651578897043720380230240707313522928841091973147590002832632637205116630346036737985377902358264317591439897988273046529345483152948276279637018615594990687391837971438181222806984545752987
44// 1 / pi
45#define FL_1_PI 0.318309886183790671537767526745028724068919291480912897495334688117793595268453070180227605532506171912145685453515916073785823692229157305755934821463399678458479933874818155146155492793850615377434785792434795323386724780483447258023664760228445399511431880923780173805347912240978821873875688171057446199892886800497344695478919221796646193566149812333972925609398897304375763149573133928482077991748278697219967736198399924885751170342357716862235037534321093095073976019478920729518667536118605
46// 2 / pi
47#define FL_2_PI 0.636619772367581343075535053490057448137838582961825794990669376235587190536906140360455211065012343824291370907031832147571647384458314611511869642926799356916959867749636310292310985587701230754869571584869590646773449560966894516047329520456890799022863761847560347610695824481957643747751376342114892399785773600994689390957838443593292387132299624667945851218797794608751526299146267856964155983496557394439935472396799849771502340684715433724470075068642186190147952038957841459037335072237210
48// 2 / sqrt(pi)
49#define FL_2_SQRTPI 1.128379167095512573896158903121545171688101258657997713688171443421284936882986828973487320404214726886056695812723414703379862989652325732730979040035537986585675274119196879520704928700435945142423160491545640441109017054346433244416926616222799025526908972046136475381837490317493231702602132796715543998754668320715597752333488152466078760432701203287243392470100916625063893758913312576651631043248869097731406379754861763556365896778950217001836917068443263565178670503666024049245124447449895
50// e
51#define FL_E 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793
52// log2(e)
53#define FL_LOG2E 1.442695040888963407359924681001892137426645954152985934135449406931109219181185079885526622893506344496997518309652544255593101687168359642720662158223479336274537369884718493630701387663532015533894318916664837643128615424047478422289497904795091530351338588054968865893096996368036110511075630844145427215828344941891933908577715790044171280246848341374522695182369011239094034459968539906113421722886278029158010630061976762445652605995073753240625655815475938178305239725510724813077156267545808
54// log10(e)
55#define FL_LOG10E 0.434294481903251827651128918916605082294397005803666566114453783165864649208870774729224949338431748318706106744766303733641679287158963906569221064662812265852127086568670329593370869658826688331163607738490514284434866676864658608513556148212348765343543435731725383562228139560304864665236609553937735617632343191671099141159789496299351245793492635765546907767108241915047991098967490010327753765357027008732855095173144067469795189951359408804042393151886810840254465408979702986328682876262414
56// ln(2)
57#define FL_LN2 0.693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542001481020570685733685520235758130557032670751635075961930727570828371435190307038623891673471123350115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740430385500801944170641671518644712839968171784546957026271631064546150257207402481637773389638550695260668341137273873722928956493547025762652098859693201965058554764703306793654432547632744951250406
58// ln(10)
59#define FL_LN10 2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286248633409525465082806756666287369098781689482907208325554680843799894826233198528393505308965377732628846163366222287698219886746543667474404243274365155048934314939391479619404400222105101714174800368808401264708068556774321622835522011480466371565912137345074785694768346361679210180644507064800027750268491674655058685693567342067058113642922455440575892572420824131469568901675894
60// sqrt(2)
61#define FL_SQRT2 1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641572735013846230912297024924836055850737212644121497099935831413222665927505592755799950501152782060571470109559971605970274534596862014728517418640889198609552329230484308714321450839762603627995251407989687253396546331808829640620615258352395054745750287759961729835575220337531857011354374603408498847160386899970699004815030544027790316454247823068492936918621580578463111596668713013015618568987237
62// 1 / sqrt(2)
63#define FL_SQRT1_2 0.707106781186547524400844362104849039284835937688474036588339868995366239231053519425193767163820786367506923115456148512462418027925368606322060748549967915706611332963752796377899975250576391030285735054779985802985137267298431007364258709320444599304776164615242154357160725419881301813997625703994843626698273165904414820310307629176197527372875143879980864917787610168765928505677187301704249423580193449985349502407515272013895158227123911534246468459310790289231555798334356506507809284493619
64
65
66// pi, float literal
67#define FL_PI_F float(FL_PI)
68// pi / 2, float literal
69#define FL_PI_2_F float(FL_PI_2)
70// pi / 4, float literal
71#define FL_PI_4_F float(FL_PI_4)
72// 1 / pi, float literal
73#define FL_1_PI_F float(FL_1_PI)
74// 2 / pi, float literal
75#define FL_2_PI_F float(FL_2_PI)
76// 2 / sqrt(pi), float literal
77#define FL_2_SQRTPI_F float(FL_2_SQRTPI)
78// e, float literal
79#define FL_E_F float(FL_E)
80// log2(e), float literal
81#define FL_LOG2E_F float(FL_LOG2E)
82// log10(e), float literal
83#define FL_LOG10E_F float(FL_LOG10E)
84// ln(2), float literal
85#define FL_LN2_F float(FL_LN2)
86// ln(10), float literal
87#define FL_LN10_F float(FL_LN10)
88// sqrt(2), float literal
89#define FL_SQRT2_F float(FL_SQRT2)
90// 1 / sqrt(2), float literal
91#define FL_SQRT1_2_F float(FL_SQRT1_2)
92
93// pi / 180
94#define FL_PI_180 0.01745329251994329576923690768488612713442871888541725456097191440171009114603449443682241569634509482212304492507379059248385469227528101239847421893404711731916824501501076956169755358123860530516878869127117208703296358960264249018770435091817334393969804759401922415894696848137896329781811249522929846992781447953104541600844956090460696717619646871051439088895183628082678036956324526084411950894129476261314310884418384547842989962562107280621415596923544423749759639936529291606237743435007
95
96// 180 / pi
97#define FL_180_PI 57.29577951308232087679815481410517033240547246656432154916024386120284714832155263244096899585111094418622338163286489328144826460124831503606826786341194212252638809746726792630798870289311076793826144263826315820961046048702050644425965684112017191205773856628043128496262420337618793729762387079034031598071962408952204518620545992339631484190696622011512660969180151478763736692316410712677403851469016549959419251571198647943521066162438903520230675617779675711331568350620573131336015650134890
98
99#define FL_DEG_TO_RAD(x) ((x) * (FL_PI_180))
100#define FL_DEG_TO_RAD_F(x) ((x) * float(FL_PI_180))
101#define FL_RAD_TO_DEG(x) ((x) * (FL_180_PI))
102#define FL_RAD_TO_DEG_F(x) ((x) * float(FL_180_PI))
103
105namespace FLImaging
106{
108 namespace Foundation
109 {
118 {
126
134 };
135
144 {
150
156
162 };
163
172 {
178
184
190
196
202
208
214
220
226 };
227
240 {
241 // Tait-Bryan 각도 (세 가지 다른 축을 사용)
247
253
259
265
271
277
283
289
295
301
307
313
319
325
331
337
343
349
355
361
367
373
379
385
391
397 };
398
407 {
413
419 };
420
429 {
437
445 };
446
447 }
448}
ECoefficientOrder
계수의 나열 순서를 나타냅니다.
Definition DefinitionsMathematics.h:118
@ ECoefficientOrder_Descending
높은 차수부터 계수를 나열할 경우 Descending 입니다.
Definition DefinitionsMathematics.h:133
@ ECoefficientOrder_Ascending
낮은 차수부터 계수를 나열할 경우 Ascending 입니다.
Definition DefinitionsMathematics.h:125
EAccuracy
연산 정확도
Definition DefinitionsMathematics.h:144
@ EAccuracy_Bits256
Definition DefinitionsMathematics.h:161
@ EAccuracy_Bits64
Definition DefinitionsMathematics.h:149
@ EAccuracy_Bits128
Definition DefinitionsMathematics.h:155
ETransformType
변환 타입
Definition DefinitionsMathematics.h:172
@ ETransformType_Scale
Definition DefinitionsMathematics.h:189
@ ETransformType_BilateralSymmetry
Definition DefinitionsMathematics.h:207
@ ETransformType_ComplexTransform
Definition DefinitionsMathematics.h:219
@ ETransformType_Translation
Definition DefinitionsMathematics.h:183
@ ETransformType_Identity
Definition DefinitionsMathematics.h:177
@ ETransformType_NonOrthogonal
Definition DefinitionsMathematics.h:225
@ ETransformType_Rotation
Definition DefinitionsMathematics.h:195
@ ETransformType_RotationalSymmetry
Definition DefinitionsMathematics.h:213
@ ETransformType_PointSymmetry
Definition DefinitionsMathematics.h:201
EEulerSequence
회전 순서
Definition DefinitionsMathematics.h:240
@ EEulerSequence_Extrinsic_ZYZ
Definition DefinitionsMathematics.h:342
@ EEulerSequence_Intrinsic_XZY
Definition DefinitionsMathematics.h:288
@ EEulerSequence_EulerAngles
Definition DefinitionsMathematics.h:390
@ EEulerSequence_Extrinsic_YXZ
Definition DefinitionsMathematics.h:264
@ EEulerSequence_Extrinsic_ZXZ
Definition DefinitionsMathematics.h:348
@ EEulerSequence_Intrinsic_YZY
Definition DefinitionsMathematics.h:366
@ EEulerSequence_Extrinsic_YXY
Definition DefinitionsMathematics.h:336
@ EEulerSequence_Extrinsic_ZYX
Definition DefinitionsMathematics.h:276
@ EEulerSequence_Extrinsic_YZX
Definition DefinitionsMathematics.h:258
@ EEulerSequence_Intrinsic_ZXZ
Definition DefinitionsMathematics.h:378
@ EEulerSequence_Intrinsic_ZYZ
Definition DefinitionsMathematics.h:384
@ EEulerSequence_Extrinsic_XYX
Definition DefinitionsMathematics.h:318
@ EEulerSequence_Intrinsic_XZX
Definition DefinitionsMathematics.h:360
@ EEulerSequence_Intrinsic_YZX
Definition DefinitionsMathematics.h:294
@ EEulerSequence_Intrinsic_YXZ
Definition DefinitionsMathematics.h:300
@ EEulerSequence_Extrinsic_YZY
Definition DefinitionsMathematics.h:330
@ EEulerSequence_Intrinsic_XYZ
Definition DefinitionsMathematics.h:282
@ EEulerSequence_Extrinsic_XYZ
Definition DefinitionsMathematics.h:246
@ EEulerSequence_Extrinsic_ZXY
Definition DefinitionsMathematics.h:270
@ EEulerSequence_Extrinsic_XZY
Definition DefinitionsMathematics.h:252
@ EEulerSequence_Extrinsic_XZX
Definition DefinitionsMathematics.h:324
@ EEulerSequence_YawPitchRoll
Definition DefinitionsMathematics.h:396
@ EEulerSequence_Intrinsic_XYX
Definition DefinitionsMathematics.h:354
@ EEulerSequence_Intrinsic_YXY
Definition DefinitionsMathematics.h:372
@ EEulerSequence_Intrinsic_ZYX
Definition DefinitionsMathematics.h:312
@ EEulerSequence_Intrinsic_ZXY
Definition DefinitionsMathematics.h:306
EMatrixAxis
Definition DefinitionsMathematics.h:407
@ EMatrixAxis_Row
Definition DefinitionsMathematics.h:412
@ EMatrixAxis_Column
Definition DefinitionsMathematics.h:418
EMatrixSortOrder
Definition DefinitionsMathematics.h:429
@ EMatrixSortOrder_Ascending
오름차순 정렬
Definition DefinitionsMathematics.h:436
@ EMatrixSortOrder_Descending
내림차순 정렬
Definition DefinitionsMathematics.h:444