Rambler's Top100
  -   !    !
 


???????@Mail.ru

Rambler's Top100


 

мастерскаякласс для геометрии

Класс, содержащий некоторые полезные функции для работы с геометрией


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);