CiftiLib
A C++ library for CIFTI-2 and CIFTI-1 files
|
1 #ifndef __MATHFUNCTIONS_H__
2 #define __MATHFUNCTIONS_H__
49 static int64_t
factorial(
const int64_t n);
55 float normalVectorOut[3]);
61 double normalVectorOut[3]);
67 float directionOut[3]);
86 const int32_t offset);
95 const float vectorsAll[],
96 const int32_t offset);
105 const float xyzAll[],
106 const int32_t offsetCoord1,
107 const int32_t offsetCoord2);
131 static void addVectors(
137 const float startXYZ[3],
138 const float endXYZ[3],
139 float unitVectorOut[3]);
142 const double startXYZ[3],
143 const double endXYZ[3],
144 double unitVectorOut[3]);
164 const float xyzAll[],
165 const int32_t offsetCoord1,
166 const int32_t offsetCoord2,
167 const int32_t offsetCoord3);
175 const float referenceNormal[3],
185 const float tolerance,
186 float intersectionOut[3]);
192 const float rayOrigin[3],
193 const float rayVector[3],
194 float intersectionXYZandDistance[3]);
198 const float origin[3],
199 const float normal[3],
200 float projectedPointOut[3]);
203 const float planeNormal[3],
204 const float pointInPlane[3],
205 const float queryPoint[3]);
209 const int32_t minimumValue,
210 const int32_t maximumValue);
214 const float minimumValue,
215 const float maximumValue);
219 const double minimumValue,
220 const double maximumValue);
225 const float point[3]);
230 const int32_t numElements);
236 float outputAverage[3]);
239 const float xyzAll[],
240 const int32_t offsetCoord1,
241 const int32_t offsetCoord2,
242 const int32_t offsetCoord3,
243 float outputAverage[],
244 const int32_t outputOffset);
261 static bool isNaN(
const float number);
263 static bool isPosInf(
const float number);
265 static bool isNegInf(
const float number);
268 static bool isInf(
const float number);
271 static bool isNumeric(
const float number);
276 const int32_t numElements,
277 const float tolerance);
279 static int32_t
clamp(
281 const int32_t minimum,
282 const int32_t maximum);
287 const float maximum);
290 static uint32_t
gcd(uint32_t num1, uint32_t num2);
296 static void quaternToMatrix(
const double cijk[4],
double matrix[3][3]);
302 static bool matrixToQuatern(
const double matrix[3][3],
double cijk[4]);
304 static double remainder(
const double numerator,
305 const double denominator);
307 static double round(
const double value);
313 #endif // __MATHFUNCTIONS_H__
static void subtractVectors(const float v1[3], const float v2[3], float resultOut[3])
Definition: MathFunctions.cxx:541
static bool rayIntersectPlane(const float p1[3], const float p2[3], const float p3[3], const float rayOrigin[3], const float rayVector[3], float intersectionXYZandDistance[3])
Definition: MathFunctions.cxx:862
static float distanceToLine3D(const float p1[3], const float p2[3], const float point[3])
Definition: MathFunctions.cxx:1057
static float angle(const float p1[3], const float p2[3], const float p3[3])
Definition: MathFunctions.cxx:1162
static bool lineIntersection2D(const float p1[3], const float p2[3], const float q1[3], const float q2[3], const float tolerance, float intersectionOut[3])
Definition: MathFunctions.cxx:801
static float signedAngle(const float pi[3], const float pj[3], const float pk[3], const float n[3])
Definition: MathFunctions.cxx:1207
static float distanceSquared3D(const float p1[3], const float p2[3])
Definition: MathFunctions.cxx:435
static double round(const double value)
Definition: MathFunctions.cxx:1706
static uint32_t gcd(uint32_t num1, uint32_t num2)
greatest common divisor
Definition: MathFunctions.cxx:1343
static void quaternToMatrix(const float cijk[4], float matrix[3][3])
convert quaternion to rotation matrix
Definition: MathFunctions.cxx:1391
Definition: MathFunctions.h:39
static void averageOfThreeCoordinates(const float c1[3], const float c2[3], const float c3[3], float outputAverage[3])
Definition: MathFunctions.cxx:1113
static float signedDistanceFromPlane(const float planeNormal[3], const float pointInPlane[3], const float queryPoint[3])
Definition: MathFunctions.cxx:950
static bool arraysEqual(const float a[], const float b[], const int32_t numElements)
Definition: MathFunctions.cxx:1088
static bool isOddNumber(const int32_t number)
Definition: MathFunctions.cxx:1243
static bool isNumeric(const float number)
true only if not NaN, inf, or -inf
Definition: MathFunctions.cxx:1381
static int64_t permutations(const int64_t n, const int64_t k)
Definition: MathFunctions.cxx:88
static float triangleAreaSigned2D(const float p1[3], const float p2[3], const float p3[3])
Definition: MathFunctions.cxx:734
static float normalizeVector(float vectorsAll[], const int32_t offset)
Definition: MathFunctions.cxx:319
static bool isEvenNumber(const int32_t number)
Definition: MathFunctions.cxx:1256
static float triangleArea(const float v1[3], const float v2[3], const float v3[3])
Definition: MathFunctions.cxx:643
static float triangleAreaSigned3D(const float referenceNormal[3], const float p1[3], const float p2[3], const float p3[3])
Definition: MathFunctions.cxx:756
static int32_t limitRange(const int32_t value, const int32_t minimumValue, const int32_t maximumValue)
Definition: MathFunctions.cxx:979
static void normalizedCrossProduct(const float x1[], const float x2[], float resultOut[])
Definition: MathFunctions.cxx:294
static int64_t factorial(const int64_t n)
Definition: MathFunctions.cxx:109
static void normalVectorDirection(const float v1[3], const float v2[3], const float v3[3], float directionOut[3])
Definition: MathFunctions.cxx:226
static int32_t clamp(const int32_t value, const int32_t minimum, const int32_t maximum)
Definition: MathFunctions.cxx:1298
static bool normalVector(const float v1[3], const float v2[3], const float v3[3], float normalVectorOut[3])
Definition: MathFunctions.cxx:132
static double remainder(const double numerator, const double denominator)
Definition: MathFunctions.cxx:1636
static int64_t combinations(const int64_t n, const int64_t k)
Definition: MathFunctions.cxx:49
static void createUnitVector(const float startXYZ[3], const float endXYZ[3], float unitVectorOut[3])
Definition: MathFunctions.cxx:568
static double distanceSquared2D(const double x1, const double y1, const double x2, const double y2)
Definition: MathFunctions.cxx:1332
static bool isInf(const float number)
true if either inf or -inf
Definition: MathFunctions.cxx:1366
static void crossProduct(const float v1[], const float v2[], float resultOut[])
Definition: MathFunctions.cxx:256
static void projectPoint(const float pt[3], const float origin[3], const float normal[3], float projectedPointOut[3])
Definition: MathFunctions.cxx:917
static float vectorLength(const float vector[3])
Definition: MathFunctions.cxx:379
static float dotProduct(const float p1[3], const float p2[3])
Definition: MathFunctions.cxx:610
static bool compareArrays(const float a1[], const float a2[], const int32_t numElements, const float tolerance)
Definition: MathFunctions.cxx:1272
static float distance3D(const float p1[3], const float p2[3])
Definition: MathFunctions.cxx:477
static bool matrixToQuatern(const float matrix[3][3], float cijk[4])
try to convert 3x3 matrix to quaternion (return false if not a rotation matrix)
Definition: MathFunctions.cxx:1439
namespace for all CiftiLib functionality
Definition: CiftiBrainModelsMap.h:41