Я пытаюсь проверить, находится ли вершина внутри треугольника, но у меня возникают проблемы при разработке функции CCW для 3D-среды.
для функции CCW для 2D среды будет выглядеть так:
//CCW calculates the cross produt
double CCW ( point A , point B , point C ) {
return (B.x-A.x) * (C.y-A.y) - (B.y-A.y) * (C.x-A.x);
}
//The other part is designed to work on 3D
typedef struct{
double x;
double y;
double z;
}Point;
int inTriangle(point A, point B, point C, point D){
Point E;
E.x = (A.x + B.x + C.x)/3;
E.y = (A.y + B.y + C.y)/3;
E.z = (A.z + B.z + C.z)/3;
return ( CCW(A,B,D) * CCW (A,B,E) > 0 &&
CCW(B,C,D) * CCW(B,C,E) > 0 &&
CCW(A,C,D) * CCW(A,C,E) );
}