سؤال

أحاول كتابة صيغة في ActionScript 3 من شأنها أن تعطيني var "z" (يرجى الاطلاع على الصورة أدناه) بالدرجات، والتي سأقوم بعد ذلك بتحويلها إلى راديان.

سأعرف بالفعل قيمة vars "x" و"y".باستخدام علم المثلثات، كيف يمكنني حساب طول الوتر وبالتالي الزاوية المتغيرة لـ var z؟سيكون الحل في AS3 أو psuedocode مفيدًا جدًا.شكرًا.

triangle

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

المحلول

ما تحتاجه هو هذا:

var h:Number = Math.sqrt(x*x + y*y);
var z:Number = Math.atan2(y, x);

من المفترض أن يمنحك ذلك الزاوية بالراديان، وقد تحتاج إلى تبديل x/y وربما إضافة 90 درجة أو إزالتها ولكن من المفترض أن تفي بالغرض!(لاحظ أنك لا تحتاج حتى ح تحصل ض عندما تستخدم atan2)

أستخدم الضرب بدلاً من Math.pow() فقط لأن الرياضيات بطيئة جدًا، يمكنك القيام بما يلي:

var h:Number = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));

ويجب أن يكون هو نفسه تمامًا.

نصائح أخرى

z يعادل 180 - زاوية yH.أو:

180 - arctan(x/y) //Degrees
pi - arctan(x/y) //radians

أيضًا، إذا كانت مكتبات الرياضيات الخاصة بـ actionscript تحتوي على ذلك، فاستخدم arctan2، الذي يأخذ كلا من x وy ويتعامل مع العلامات بشكل صحيح.

الزاوية التي تريدها هي نفس الزاوية المقابلة للزاوية التي بين y وh.

لنتصل a الزاوية بين y و h, ، الزاوية التي تريدها هي في الواقع 180 - a أو PI - a اعتمادا على وحدتك (درجة أو راديان).

الآن تخبرنا الهندسة أن:

cos(a) = y/h
sin(a) = x/h
tan(a) = x/y

باستخدام tan() نحصل على:

a = arctan(x/y)

بما أننا نبحث عن 180-a، فيجب عليك حساب:

180 -  arctan(x/y)

ما قاله @Patrick هو أيضًا الوتر sqrt(x^2 + y^2).

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