
A, B, C로 이루어진 삼각형 내의 점 P는 무게중심 좌표 w1, w2, w3에 대해 다음과 같이 표현할 수 있다.
다음은 w1, w2, w3를 구하기 위한 코드이다.
FVector BarycentricCoords( const FVector& P, const FVector& V0, const FVector& V1, const FVector& V2 )
{
FVector v02 = V0 - V2;
FVector v12 = V1 - V2;
FVector pv2 = Point - V2;
float m00 = v02.Dot( v02 );
float m01 = v02.Dot( v12 );
float m11 = v12.Dot( v12 );
float r0 = v02.Dot( pv2 );
float f1 = v12.Dot( pv2 );
float det = m00 * m11 - m01 * m01;
float invDet = 1.f / det;
float w1 = ( m11 * r0 - m01 * r1 ) * invDet;
float w2 = ( m00 * r1 - m01 * r0 ) * invDet;
float w3 = 1.f - w1 - w2;
return FVector( w1, w2, w3 );
}