2010-12-06 12 views
5

मेरे पास एक मॉडल 3 डी ग्रुप है जो ऑब्जेक्ट की ट्रांसफॉर्म प्रॉपर्टी पर लागू एक्सिसएन्गलरोटेशन 3 डी का उपयोग करके किसी भी एक्स, वाई, जेड अक्ष के चारों ओर घुमाया जाता है।प्रत्येक धुरी पर 3 डी रोटेशन कोण कैसे पुनर्प्राप्त करें?

समस्या यह है कि मैं जाल पर लागू विभिन्न घूर्णन के नियंत्रण में नहीं हूं। मुझे प्रत्येक रेंडर लूप पर प्रत्येक एक्स, वाई, जेड अक्ष पर जाल के कोण को प्रदर्शित करने की आवश्यकता है।

मैं यह कैसे कर सकता हूं? मैंने ऑब्जेक्ट पर एक्सिस एंजलरोटेशन 3 डी ऑब्जेक्ट को पुनर्प्राप्त करने का प्रयास किया, लेकिन यह केवल मुझे रोटेशन देता है जो अंतिम बार लागू किया गया था। जो सही नहीं है।

उदाहरण के लिए वहाँ था एक्सिस के लिए आवेदन किया रोटेशन: Vector3D (1, 1, 0) कोण: 45

जेड धुरी के चारों ओर वास्तविक रोटेशन नहीं होगा 0. कैसे मैं वास्तविक प्राप्त कर सकते हैं प्रत्येक धुरी पर कोण?

उत्तर

2
double rotationX = Vector3D.AngleBetween(new Vector3D(1, 0, 0), yourMatrix3D.Transform(new Vector3D(1, 0, 0))); 
double rotationY = Vector3D.AngleBetween(new Vector3D(0, 1, 0), yourMatrix3D.Transform(new Vector3D(0, 1, 0))); 
double rotationZ = Vector3D.AngleBetween(new Vector3D(0, 0, 1), yourMatrix3D.Transform(new Vector3D(0, 0, 1))); 
1

Model3DGroup.Transform.Value संपत्ति एक Matrix3D पूरा बदलने का प्रतिनिधित्व करता है। http://msdn.microsoft.com/en-us/library/system.windows.media.media3d.matrix3d.aspx

मैट्रिक्स के तत्व पूर्ण परिवर्तन का प्रतिनिधित्व करते हैं। मैट्रिक्स फॉर्म से रोटेशन कोण (यूलर कोण) में रूपांतरण काफी सरल है। उदाहरण के लिए देखें http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToEuler/index.htm

संबंधित मुद्दे