كيفية تحديد Triangle داخل مستطيل مع إعطاء إحداثي في هذا المستطيل
-
22-09-2019 - |
سؤال
إعطاء مستطيل من العرض ث والارتفاع ح. والإحداثيات x ، y في هذا المستطيل أود تحديد المثلث الذي أنا في الداخل.
أي يجب أن تأخذ الوظيفة معلمات (x ، y) وإرجاع A أو B أو C أو D أو A رقم صفر تمثل هذا الفهرس المثلث IE (0 = A ، 1 = B ، 2 = C ، 3 = D) إذا كانت بهذا الترتيب.
أعتقد أن هذا سيكون شيئًا مثل> = صيغة الخط الأحمر و> = صيغة الخط الأخضر؟
أود تنفيذ هذا في vb.net
المحلول
aboveRed = x*h > y*w;
aboveGreen = (w-x)*h > y*w;
if (aboveRed)
{
if (aboveGreen) return "C"; else return "B";
}
else
{
if (aboveGreen) return "D"; else return "A";
}
نصائح أخرى
معادلة الخط الأخضر: h * x + w * y = h * w
معادلة الخط الأحمر: x * h - y * w = 0
Public Function GetTriangleNumber(ByVal x As Integer, ByVal y As Integer)
As Integer
Dim overGreenLine As Boolean = ((((h * x) + (w * y)) - (h * w)) < 0)
Dim overRedLine As Boolean = (((h * x) - (w * y)) > 0)
If overGreenLine Then
Return IIf(overRedLine, 2, 3)
End If
Return IIf(overRedLine, 1, 0)
End Function
أود أن أفكر في زاوية الخط إلى النقطة من أعلى اليسار والأعلى من الزوايا اليمنى. إذا كان أقل من 45 درجة (ضبط الاتجاه الأساسي للحافة) في كلتا الحالتين ، فإن النقطة في C. ستغطي مجموعات أخرى المثلثات الثلاثة الأخرى.
لا تحتاج فعليًا إلى حساب وظائف المثلثات العكسية للقيام بذلك ، لأن نسبة أطوال الخطوط تمنحك معلومات كافية (والخطيئة (45) ... أو بالأحرى الخطيئة (PI/4) هي قيمة ثابتة) .