الهندسة 2D: كيفية التحقق مما إذا كانت هناك نقطة داخل زاوية

StackOverflow https://stackoverflow.com/questions/1167022

  •  19-09-2019
  •  | 
  •  

سؤال

لدي قضية هندسية التالية في 2D:

لدي نقطة قمت بها زاوية لانهائية (مخروط 2D) التي تعطى من خلال اتجاه وزاوية. (النقطة والاتجاه يشكل ناقلا متجه وإلى كل نصف جانبي من الزاوية يشكل مخروط 2D)

الآن أريد أن تحقق ما إذا كانت نقطة أخرى في ثنائية الأبعاد موجودة داخل هذا المخروط أو الخارج.

كيف احقق هذا؟ شكرًا!

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

المحلول

احسب المتجه من مركز المخروط إلى نقطة الاستعلام. تطبيع المتجه لتكون طوله 1، واتخاذ ناقلات المركز للمخروط وتطبيع هذا أيضا إلى طول 1.
الآن خذ المنتج نقطة بين المتجهات. منتج النقطة بين متجهتين طبيعيين هو كوزين الزاوية بينهما. خذ Arccos (acos في معظم اللغات) من المنتج نقطة وستحصل على الزاوية. قارن هذه الزاوية إلى زاوية مخروط (نصف زاوية في وصفك). إذا كان ذلك أقل، ثم النقطة المعنية موجودة داخل المخروط.

هذا يعمل في 2D و 3D.

نصائح أخرى

احسب زاوية الاتجاه باستخدام ARCTG من الاتجاه. اختراق الأصل من النقطة المحددة. احسب زاويةها (مرة أخرى عبر ARCTG من ناقل طبيعي)، والتحقق مما إذا كان يكمن ضمن حدود الزاوية.

أود أن أقول أن أفضل طريقة هي عرض النقطة على السطح 2D عمودي على اتجاه المخاريط. ثم قمت بحساب المسافة Othogonal بين نفس الطائرة والنقطة. أخيرا، تعرف عرض المخروط في هذا الارتفاع، حتى تتمكن من معرفة ما إذا كانت النقطة خارج هذا العرض.

دع المتجه من نقطة المنشأ إلى النقطة المحددة يجعل زاوية مع طبيعية تعمل عبر المركز. إذا كانت الزاوية أقل من نصف زاوية المخروط، فإنها تكمن داخل آخر في الخارج.

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