سؤال

أريد أن أعرف كيفية التواصل الجديد للنقطة عند التدوير بواسطة زاوية نسبة إلى نقطة أخرى.

لدي سهم كتلة وتريد تدويرها بواسطة زاوية ثيتا نسبة إلى نقطة في منتصف قاعدة السهم.

هذا مطلوب للسماح لي في رسم مضلع بين ضوابط 2 على الشاشة. لا أستطيع استخدام وتدوير صورة.

مما نظرت به حتى الآن ما الذي يعقد الأمر أكثر من ذلك هو أن أصل الشاشة في الزاوية اليسرى العليا.

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

المحلول

إذا قمت بتدوير النقطة (px, py) حول النقطة (ox, oy) بواسطة زاوية theta ستحصل على:

P'x = cos (theta) * (px-ox) - sin (theta) * (py-oy) + ox p'y = sin (theta) * (px-ox) + cos (theta) * OY) + OY

نصائح أخرى

إذا كنت تستخدم GDI + للقيام بذلك، يمكنك استخدام Transform طرق Graphics هدف:

graphics.TranslateTransform(point of origin);
graphics.RotateTransform(rotation angle);

ثم ارسم الاشياء الفعلية.

إذا كان لديك System.Windows.Media مساحة الاسم المتاحة، ثم يمكنك استخدام التحولات المدمجة:

    using System.Windows.Media;

    var transform = new RotateTransform() {Angle = angleInDegrees, CenterX = center.X, CenterY = center.Y};
    var transformedPoint = transform.Transform(point);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top