center


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