سؤال

أنا أقوم ببناء التحكم في قائمة العجلات. الفكرة هي أنك تدور العجلة حتى يتم عرض العنصر الذي تريد التصرف عليه ، ثم تنقر عليها أو أي شيء آخر. أحاول معرفة كيفية ترجمة حركات فأر المستخدم (X&Y) إلى عدد الدرجات لتدوير العجلة. يمكنني تنفيذ كل شيء ، أنا فقط أفتقد الرياضيات لإجراء التحويل. أي مساعدة أو مؤشرات موضع تقدير!

هل كانت مفيدة؟

المحلول

Angle between mouse positions

إذا قام المستخدم بنقل الماوس من [x1 ، y1] إلى [x2 ، y2] ، فإن ما تريده أساسًا هو العثور عليه

θ=θ12

أين:

θ1 = math.atan2 (y1 ، x1) ؛

θ2 = math.atan2 (y2 ، x2) ؛

الآن كل هذا يعتمد على المكان الذي تحدد فيه أصلك (مركز العجلة). إذا كان أصلك هو [x0 ، y0] ، فما عليك سوى طرح هذه القيم من إحداثيات الماوس الفعلية.

أيضًا على الشاشة ، يكون نظام التنسيق رأسًا على عقب ، لذا فإن 0،0 في أعلى اليسار بدلاً من أسفل اليسار ، لذلك ستحتاج إلى قلب ذلك ، لكن الرياضيات هي نفسها.

لاحظ أيضًا أن الزاوية تقاس بالراديان وليس الدرجات.

نصائح أخرى

خذ atan2() من بين موقفين لاحقين تقابل من مركز التحكم وتغيير القيمة بواسطة دلتا الزوايا مضروبة في ثابت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top