ठीक है, यह ऐसा कुछ है जो एक साधारण मैट्रिक्स प्रश्न होना चाहिए, लेकिन मैट्रिस की मेरी समझ कुछ हद तक सीमित है। यहां परिदृश्य है: मेरे पास 1 पीएक्स स्प्राइट द्वारा 1 पीएक्स है कि मैं कुछ मात्रा x और y (प्रत्येक तरफ अलग-अलग मात्रा) द्वारा स्केल करना चाहता हूं, और फिर मैं उस कोण को उस कोण से घूमना चाहता हूं, और फिर मैं सक्षम होना चाहता हूं ठीक से पूरी चीज को स्थिति दें (ऊपर बाएं या केंद्र से, मुझे कोई फर्क नहीं पड़ता)।सी # में एक बार में एक मैट्रिक्स को घुमाएं, स्केल करें और अनुवाद कैसे करें?
अब तक मेरी कोड थोड़ा करीब है, लेकिन यह कोण मैं में पारित के आधार पर कुछ यादृच्छिक राशि से बंद हो जाता है
मुझे लगता है कि है कि यह यह करना होगा:।
Point center = new Point(50, 50);
float width = 60;
float height = 100;
float angle = 0.5;
Vector3 axis = new Vector3(center.X, center.Y, 0);
axis.Normalize();
Matrix m = Matrix.Scaling(width, height, 0) *
Matrix.RotationAxis(axis, angle) *
Matrix.Translation(center.X, center.Y, 0);
लेकिन यह घूर्णन रेखा के रास्ते के पैमाने को कम करने के लिए जाता है, भले ही मुझे लगता है कि यह सही तरह की स्थिति है।
मैं भी इस की कोशिश की है:
Matrix m = Matrix.Transformation2D(new Vector2(center.X, center.Y), 0f,
new Vector2(width, height), new Vector2(center.X, center.Y),
angle, Vector2.Zero);
लाइन बिल्कुल सही लग रहा है, सही सही आकार और आकृति के साथ है, लेकिन मैं इसे सही ढंग से सब पर स्थिति नहीं कर सकते। यदि मैं ऊपर दिए गए कॉल के अंत में अनुवाद वेक्टर का उपयोग करता हूं, या यदि मैं Sprite.Draw का उपयोग कर स्थिति सेट करता हूं, तो न तो सही काम करता है।
यह सब स्लिम डीएक्स में है। मैं क्या गलत कर रहा हूं?
हम्म ... यह बहुत करीब लगता है। मूल, स्केल और घुमावदार चरणों का अनुवाद बहुत अच्छा काम करता है, लेकिन फिर जब मैं वांछित स्थान पर अनुवाद करने का प्रयास करता हूं तो यह वास्तव में अजीब तरीके से कार्य करता है - मैं एक्स कूडिनेट बदलता हूं, और यह एक्स और वाई दोनों में चलता है। मैं सोच रहा हूं कि यह घुमावदार स्थान में अनुवाद कर रहा है ... – x4000
एक और चीज जो अभी तक मुझे स्पष्ट नहीं है, मूल में अनुवाद कैसे करें। मेरे पास दो बिंदु हैं, साथ ही एक तिहाई जो उनके केंद्र में है। मैं केंद्र को मूल में अनुवाद कर रहा हूं, लेकिन क्या मुझे अलग तरीके से अनुवाद करना चाहिए? – x4000
जहां आप चाहते हैं वहां वापस अनुवाद करने की बजाय, क्या आप केवल उस स्थान की स्थिति बदल सकते हैं जहां आप आकर्षित करते हैं? –