교차점이 삼각형 안에있을 때 true를 반환하는 bool intersect(const Ray& ray, Intersection& intersection)
메서드를 작성하려고합니다.삼각형의 내부 - 외부 테스트
내가 지금까지 한 것은 삼각형의 2 개의 벡터에 의해 생성 된 평면상의 점이 있는지 확인하는 것입니다.
문제는의 삼각가
Vec3 AB = b_-a_;
Vec3 AC = c_-a_;
double areaABC = vec_normal_triangle.dot(AB.cross(AC));
Vec3 PB = b_-intersection.pos;
Vec3 PC = c_-intersection.pos;
double alpha = vec_normal_triangle.dot(PB.cross(PC));
Vec3 PA = a_-position.pos;
double beta = vec_normal_triangle.dot(PC.cross(PA));
double gamma = 1-alpha-beta;
if((beta+gamma) < 1 && beta > 0 && gamma > 0) {
return true;
}
좌표
을 무게 중심 내부에서 포인트가 있는지 확인하기 위해 지금 실제로 무작위 포인트에 대한 그조차 삼각형. 누군가가 나를 설명하거나 3 개의 주어진 벡터에 대해 중심 좌표를 계산하는 방법을 알고 있습니까?vec_normal_triangle
가정
무엇을 원하십니까? barycenter? 중심 좌표는 무엇입니까? 또는 광선이 볼록한 다각형과 교차하는지 테스트하는 방법? 후자의 경우 [이 다른 질문] (http://stackoverflow.com/questions/4497841/optimal-algorithm-if-line-intersects-convex-polygon)을 참조하십시오. 꼭지점이 3 개인 볼록한 다각형은 항상 삼각형임을 기억하십시오! 그래서 당신은 그 질문의 답을'n = 3'으로 읽을 수 있습니다 – Cimbali