내 프로파일 러에서 무게 중심 좌표를 찾는 것은 다소 병목 현상입니다. 더 효율적으로 만들고 싶습니다.
그것은 shirley 의 방법을 따릅니다. 여기서 삼각형 안에 점 P를 포함시켜 형성된 삼각형의 면적을 계산합니다.
암호:
Vector Triangle::getBarycentricCoordinatesAt( const Vector & P ) const
{
Vector bary ;
// The area of a triangle is
real areaABC = DOT( normal, CROSS( (b - a), (c - a) ) ) ;
real areaPBC = DOT( normal, CROSS( (b - P), (c - P) ) ) ;
real areaPCA = DOT( normal, CROSS( (c - P), (a - P) ) ) ;
bary.x = areaPBC / areaABC ; // alpha
bary.y = areaPCA / areaABC ; // beta
bary.z = 1.0f - bary.x - bary.y ; // gamma
return bary ;
}
이 방법은 효과가 있지만 더 효율적인 방법을 찾고 있습니다!