इम बारे में x और y अक्ष एक घन के एक सरल रोटेशन करने का प्रयास कर:ओपन मैट्रिक्स रोटेशन quaternions
मैं चाहता हूँ हमेशा एक राशि एक्स से एक्स अक्ष से अधिक घन बारी बारी से करने और अधिक घन बारी बारी से एक्स अक्ष रोटेशन
पहले की राशि y स्वतंत्र द्वारा yaxis मैं भोलेपन से किया था:
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
तो
लेकिन यह है कि पहली बार घूमता है ov er x फिर y पर घूमता है मैं एक्स एक्सेस के स्वतंत्र रूप से y पर घूमना चाहता हूं।
मैं quaternions में तलाश शुरू कर दी, तो मैं करने की कोशिश की:
Quaternion Rotation1;
Rotation1.createFromAxisAngle(0,1, 0, globalRotateY);
Rotation1.normalize();
Quaternion Rotation2;
Rotation2.createFromAxisAngle(1,0, 0, globalRotateX);
Rotation2.normalize();
GLfloat Matrix[16];
Quaternion q=Rotation2 * Rotation1;
q.createMatrix(Matrix);
glMultMatrixf(Matrix);
कि अभी लगभग वास्तव में क्या लगातार 2 glRotates कर पूरा किया गया है ... तो मैं im एक कदम या 2.
लापता लगता है quaternions जाने का रास्ता है या मैं कुछ अलग इस्तेमाल कर रहा हूँ? और यदि quaternions जाने का तरीका है तो घन को प्रत्येक धुरी से स्वतंत्र रूप से घूमने के लिए मैं कौन से कदम जोड़ सकता हूं। मुझे लगता है कि किसी और को एक ही मुद्दा है: Rotating OpenGL scene in 2 axes
ठीक मुझे यह कहना इस तरह से करते हैं ... क्या मैं करना चाहता हूँ माउस का उपयोग कर एक घन बारी बारी से है। मैं स्क्रीन वाई-अक्ष रोटेशन को नियंत्रित करने के लिए बाएं दाएं चाहता हूं और फिर स्क्रीन एक्स अक्ष रोटेशन को नियंत्रित करता हूं। मैं चाहता हूं कि वे अन्य धुरी से स्वतंत्र घुमाएं लेकिन केवल स्क्रीन पर वैश्विक अक्ष पर घुमाएं। यदि मैं 2 glRotations करता हूं तो मुझे यह व्यवहार नहीं मिलता है क्योंकि एक धुरी रोटेशन दूसरे पर निर्भर करता है। – yeahdixon
उदाहरण के लिए घन घूर्णन करना: कोई रोटेशन ऑपरेशंस केवल एक तरफ प्रकट करता है तो मैं glRotatef (90,1,0,0) करता हूं; \t glRotatef (45,0,1,0); \t ⁃ \t मुझे एक झुका हुआ घन (हीरा) देता है, जब मैं एक घन चाहता था जिसमें कैमरे का सामना करना पड़ता था जो वास्तव में संचालन को स्वैप करने का परिणाम होता: \t glRotatef (45,0,1,0); \t glRotatef (90,1,0,0); मैं केवल रोटेशन कमांड को स्वैप कर दूंगा लेकिन यह उसी समस्या में चलता है जब कोण मान फ़्लिप होते हैं। – yeahdixon