2013-01-06 16 views
5

मेरे पास आइसोमेट्री का एक गुच्छा है [आर | टी] परिवर्तन matrices, यानी वे 3 डी कठोर परिवर्तन हैं। वर्तमान में मैं उन्हें Eigen एफ़िन transformations के रूप में संग्रहीत करता हूं, जो कॉम्पैक्ट फॉर्म में दर्शाया गया है। Eigen::AffineCompact3d जो [0 0 0] की अनावश्यक अंतिम पंक्ति को संग्रहीत नहीं करता है।ईजिन में कॉम्पैक्ट आइसोमेट्री रूपांतरण मैट्रिक्स का प्रतिनिधित्व कैसे करें?

मुझे यह भी पता है कि Eigen::Isometry3d है जो मुझे लगता है कि Transform<double, 3, AffineCompact, Isometry> का टाइपपीफ है।

मैं बाद में आइसोमेट्री के बाद हूं, एक सामान्य एफ़िन उलटा की तुलना में व्यस्त ट्रान्सफॉर्मेशन बहुत सस्ता (ट्रांसपोज़र) है। मुझे यह भी पता है कि जब मैं उलटा() affine_mat.inverse(Eigen::Isometry);

पर उपयोग करता हूं, लेकिन मैं हर समय मैन्युअल रूप से इशारा करते हुए आइसोमेट्रिक उलटा व्यवहार प्राप्त करना चाहता हूं। दूसरे शब्दों में, मैं जानना चाहता हूं, Eigen::IsometryCompact3d के व्यवहार को दोहराने का सबसे अच्छा तरीका क्या है जो ईजिन एपीआई में आश्चर्यजनक रूप से अनुपस्थित है?

उत्तर

1

isometries का प्रतिनिधित्व करने के लिए मैं वर्तमान में twists का उपयोग कर रहा हूं। यह पैरामीट्रिजेशन 6 तत्व वेक्टर द्वारा वर्णित किया जा सकता है।

मानक सजातीय मैट्रिक्स फॉर्मूलेशन में आगे और आगे बदलने के लिए आपको लॉग() और exp() (जैसे कनवर्ट करना धीमा ऑपरेशन) के आधार पर कुछ फ़ंक्शंस की आवश्यकता होगी।

यह सॉल्यूशन अनुकूल है यदि आपके पास दो फॉर्मूलेशन (या आप इसे शायद ही कभी करते हैं) के बीच आगे बढ़ने पर प्रदर्शन बाधा नहीं है या यदि आप मोड़ के गुणों का उपयोग करना चाहते हैं (उदाहरण के लिए संख्यात्मक अनुकूलन में)

+0

हां आम तौर पर एक लाइ समूह पुनर्भुगतान के लिए अच्छा है। लेकिन मेरे मामले में मैं बहुत सारे वैक्टरों का परिवर्तन कर रहा हूं, और मैट्रिक्स प्रतिनिधित्व मेरे लिए सबसे अच्छा काम करता है। मुझे लगता है कि ईजिन लेखकों ने किसी भी तरह से इस बात को याद किया। – iNFINITEi

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