2012-01-20 10 views
20

पर किसी बिंदु की ऑर्थोगोनल प्रक्षेपण कैसे मिल सकता है, मान लें कि मेरे पास बिंदु (एक्स, वाई, जेड) और बिंदु बिंदु (ए, बी, सी) और सामान्य (डी, ई, एफ) के साथ बिंदु है। मैं उस बिंदु को खोजना चाहता हूं जो विमान पर पहली बिंदु के ऑर्थोगोनल प्रक्षेपण का परिणाम है। मैं इसे 3 डी ग्राफिक्स प्रोग्रामिंग में उपयोग कर रहा हूं। मैं विमान पर कुछ प्रकार की क्लिपिंग हासिल करना चाहता हूं।मुझे

उत्तर

45

एक बिंदु q = (x, y, z) का प्रक्षेपण एक बिंदु p = (a, b, c) और एक सामान्य n = (d, e, f) द्वारा दिए गए एक हवाई जहाज पर इस गणना मानता है कि n एक इकाई वेक्टर है

q_proj = q - dot(q - p, n) * n 

है।

0

मैं क्यूटी में इस समारोह का उपयोग कर QVector3D को क्रियान्वित किया है:

QVector3D getPointProjectionInPlane(QVector3D point, QVector3D planePoint, QVector3D planeNormal) 
{ 
    //q_proj = q - dot(q - p, n) * n 
    QVector3D normalizedPlaneNormal = planeNormal.normalized(); 
    QVector3D pointProjection = point - QVector3D::dotProduct(point - planePoint, normalizedPlaneNormal) * normalizedPlaneNormal; 
    return pointProjection; 
} 
+0

यह पिछले, स्वीकार किए जाते हैं जवाब के रूप में एक ही एल्गोरिथ्म का उपयोग करता है और के लिए नहीं कहा एक भाषा का उपयोग करता। यह उत्तर स्वीकार्य उत्तर में क्या जोड़ता है? –