Trong hồ sơ của tôi, việc tìm tọa độ nhị phân rõ ràng là một phần của nút cổ chai. Tôi đang tìm cách để làm cho nó hiệu quả hơn.
Nó theo phương pháp trong shirley , trong đó bạn tính diện tích các hình tam giác được hình thành bằng cách nhúng điểm P bên trong tam giác.
Mã số:
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 ;
}
Phương pháp này hiệu quả, nhưng tôi đang tìm kiếm một phương pháp hiệu quả hơn!