मेरे प्रोफाइलर में, बेरेंट्रिक निर्देशांक ढूंढना स्पष्ट रूप से कुछ हद तक अड़चन है। मैं इसे और अधिक कुशल बनाने के लिए देख रहा हूं।
यह शर्ली में विधि का पालन करता है , जहां आप त्रिकोण के अंदर बिंदु 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 ;
}
यह विधि काम करती है, लेकिन मैं एक अधिक कुशल की तलाश में हूं!