Conscience Core
Namespaces | Functions
geom.cpp File Reference
#include "geom.h"
#include <CscCommon.h>

Namespaces

 conscience_utils
 
 conscience_utils::geom
 

Functions

bool conscience_utils::geom::isPointGreaterThan (const CscPoint3d *a, const CscPoint3d *b)
 
bool conscience_utils::geom::equalCscPoint3d (const CscPoint3d *a, const CscPoint3d *b)
 
void conscience_utils::geom::removeDuplicatePositionsPerf (vector< CscPoint3d * > *positions)
 
double conscience_utils::geom::degToRad (const double &degree)
 
float conscience_utils::geom::degToRad (const float &degree)
 
double conscience_utils::geom::radToDeg (const double &radian)
 
double conscience_utils::geom::getShortestAngleSigned (const double &fromAngle, const double &toAngle)
 
double conscience_utils::geom::averageOfAngleInRad (const vector< double > &angles)
 
double conscience_utils::geom::averageOfAngleInDeg (const vector< double > &angles)
 
double conscience_utils::geom::angleAdjustment (const double &angle)
 
double conscience_utils::geom::angleAdjustmentRadsPiToMinusPi (const double &angle)
 
CscQuaternion conscience_utils::geom::toQuaternion (double yaw, double pitch, double roll)
 Quaternion is a matrix representation of a rotation in a 3D space. Used to simplify some calculs. More...
 
double conscience_utils::geom::calculateAngleBetweenTwoPosition (CscPoint3d *secondPosition, CscPoint3d *firstPosition)
 
double conscience_utils::geom::distanceBetween (double x1, double y1, double x2, double y2)
 
CscQuaternion conscience_utils::geom::multiplyQuaternion (const CscQuaternion &quaternion1, const CscQuaternion &quaternion2)
 
CscPoint3dconscience_utils::geom::rotatePointWithQuaternion (CscPoint3d *point, const CscQuaternion &quaternion)
 
CscPoint3dconscience_utils::geom::transformPointFromMatrix (const CscPoint3d *point, const vector< double > &matrix)
 
vector< double > conscience_utils::geom::multiplyMatrices (const vector< double > &matrix1, vector< double > &matrix2)
 
Vec4 conscience_utils::geom::multiplyMatrixVec4 (const double matrix[4][4], const Vec4 &vec)
 
void conscience_utils::geom::multiplyMat4 (const double a[4][4], const double b[4][4], double result[4][4])
 
string conscience_utils::geom::mat4ToString (const double matrix[4][4])
 
string conscience_utils::geom::vec3ToString (const Vec3 &vec)
 
void conscience_utils::geom::copyMat4 (const double source[4][4], double target[4][4])
 
bool conscience_utils::geom::comparePoint3d (const CscPoint3d *p1, const CscPoint3d *p2)
 Compares two 3D points for equality, if a point is nullptr , return true only if the second is nullptr. More...
 
double conscience_utils::geom::getPointsHighestX (const std::vector< const CscPoint3d * > &areaVertices, optional< double > precision)
 
double conscience_utils::geom::getPointsLowestX (const std::vector< const CscPoint3d * > &areaVertices, optional< double > precision)
 
double conscience_utils::geom::getPointsHighestZ (const std::vector< const CscPoint3d * > &areaVertices, optional< double > precision)
 
double conscience_utils::geom::getPointsLowestZ (const std::vector< const CscPoint3d * > &areaVertices, optional< double > precision)
 
bool conscience_utils::geom::isPointInsideArea (const std::vector< const CscPoint3d * > &areaVertices, CscPoint3d *pointToCheck)
 
float conscience_utils::geom::getMinXForUpStep (float upMin, float upMax, const vector< CscPoint3d * > *positions)
 
float conscience_utils::geom::getMaxXForUpStep (float upMin, float upMax, const vector< CscPoint3d * > *positions)
 
float conscience_utils::geom::getMinYForUpStep (float upMin, float upMax, const vector< CscPoint3d * > *positions)
 
float conscience_utils::geom::getMaxYForUpStep (float upMin, float upMax, const vector< CscPoint3d * > *positions)
 
CscPoint3dconscience_utils::geom::zUpToYup (CscPoint3d *position)
 
CscPoint3dconscience_utils::geom::getMinPoint (vector< CscPoint3d * > *positions)
 
CscPoint3dconscience_utils::geom::getMaxPoint (vector< CscPoint3d * > *positions)
 
void conscience_utils::geom::removeDuplicatePositions (vector< CscPoint3d * > *positions)
 
double conscience_utils::geom::dotXZ (const CscPoint3d &a, const CscPoint3d &b)
 
double conscience_utils::geom::normXZ (const CscPoint3d &v)
 
CscPoint3d conscience_utils::geom::normalizeXZ (const CscPoint3d &v)
 
CscPoint3d conscience_utils::geom::perpendicularXZ (const CscPoint3d &v)
 
double conscience_utils::geom::signedDistanceToLineXZ (const CscPoint3d &p, const CscPoint3d &origin, const CscPoint3d &normal)
 
bool conscience_utils::geom::pointInTriangleXZWithEpsilon (const CscPoint3d &pt, const CscPoint3d &a, const CscPoint3d &b, const CscPoint3d &c, double epsilon)
 
bool conscience_utils::geom::pointInQuadXZWithEpsilon (const CscPoint3d &pt, const CscPoint3d &p1, const CscPoint3d &p2, const CscPoint3d &p3, const CscPoint3d &p4, double epsilon)
 
vector< CscPoint3d * > conscience_utils::geom::slicePolygonsAtY (const vector< CscPolygon * > &polygons, double ySlice, double precisionCm=5.0)
 Computes the 2D slice (plan cut) at Y = ySlice and returns a flat list of unique points. Internally builds closed contours and welds nearby vertices (tolerance = precisionCm). The result is a clean set of points that form continuous walls when drawn with nearest-neighbour or contour lines. More...