|
Класс, содержащий некоторые полезные функции для работы с геометрией
geofunc.h
geofunc.cpp
Краткое описание функций:
получение обратной матрицы размером 3x3 результат в r
void matrix3Invert(double a[3][3], double r[3][3]);
поворот точки относительно
произвольного центра [2D]
x,y - координаты точки
xCenter,yCenter - координаты центра поворота
ang - угол, angMode - угол в радианах или градусах 'd'-градусы, 'r'-радианы
void pointRotate(double &x,double &y,double xCenter,double
yCenter,double ang,char angMode);
проверка на нахождение точки в треугольнике [2D]
x1,y1,x2,y2,x3,y3 - координаты вершин треугольника
x,y - координаты точки
bool pointInTriangle(double x1,double y1,double x2,double y2,double x3,double
y3,double x,double y);
проверка на пересечение двух отрезков [2D]
x1,y1,x2,y2 - координаты начала и конца первого отрезка
x3,y3,x4,y4 - координаты начала и конца второго отрезка
x,y - координаты пересечения
bool vectorCross(double x1, double y1, double x2, double
y2, double x3, double y3, double x4, double y4, double &x, double &y);
нахождение перпендикуляра
к прямой, проходящего через точку x,y [2D]
A, B, C - параметры прямой
Ar,Br,Cr - параметры прямой, перпендикулярной к данной
void ortoLine(double A,double B, double C,double x,double
y,double &Ar,double &Br,double &Cr);
нахождение
перпендикуляра к прямой, проходящего через точку x,y [2D]
x1, y1, x2,y2 - прямая задается двумя точками
Ar,Br,Cr - параметры прямой, перпендикулярной к данной
void ortoLine(double x1, double y1, double x2, double
y2, double x, double y, double &Ar, double &Br, double &Cr);
нахождение расстояния
до прямой от точки (x,y) [2D]
A, B, C - параметры прямой
double distToLine(double A, double B, double C, double x, double y);
x1, y1, x2,y2 - прямая задается двумя точками
double distToLine(double x1, double y1, double x2, double y2, double x, double
y);
нахождение угла, который составляет вектор с осью Ox [2D]
x1, y1, x2, y2 - начало и конец вектора
retMode - 'd' возвращаемое значение в градусах, 'r' радианы
double vectorAngle(double x1,double y1,double x2,double y2,char retMode);
поиск
расстояния от точки (x1,y1,z1) до (x2,y2,z2) [3D]
double length3D(double x1,double y1,double z1,double x2,double y2,double z2);
расстояние от точки (x1,y1) до (x2,y2) [2D]
double length2D(double x1,double y1,double x2,double y2);
нахождение векторного
произведения векторов a и b, результат в c
void vector3CrossProduct(double a1,double a2,double a3,double
b1,double b2,double b3, double &c1,double &c2,double &c3);
проверка на пересечение
двух прямых, заданных двумя точками
x1, y1, x2, y2 - координаты точек, через которые проходит первая прямая
x1, y1, x2, y2 - координаты точек, через которые проходит вторая прямая
x, y - координаты пересечения
bool crossLine2D(double x1,double y1,double x2,double
y2,double x3,double y3,double x4,double y4,double &x,double &y);
|