سؤال

إذا كان لدي polyline يصف الطريق وأعرف عرض الطريق في جميع الأجزاء، هل هناك خوارزمية يمكنني استخدامها لتحديد ما إذا كانت هناك نقطة على الطريق؟ أنا لست متأكدا تماما من كيفية القيام بذلك نظرا لأن الخط نفسه لديه عرض 1PX.

شكرا،

جيف

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

المحلول

ابحث عن مسافة الحد الأدنى من النقطة إلى الخط (سيكون ناقلا عموديا على الخط). الحساب الفعلي حيث P0 هو النقطة الأولى من قطاع الطرق، V هو متجه قطاعي الطريق و W هو متجه من P0 إلى النقطة المعنية. سيكون عليك تكرار أكثر من كل حافة في polyline. إذا كانت المسافة أقل من عرض هذا الجزء، فهي "على" الطريق ".

d = |v x w| / |v|

قد تكون الزوايا صعبة اعتمادا على ما إذا كنت تعاملها على أنها مدورة (دائرة نصف قطرها ثابتة) أو الزاوي.

نصائح أخرى

ربما يمكنك أخذ كل شريحة لكل خط، وبناء مستطيل مقطع الخط + عرضها، واستخدام خوارزميات تصادم مستطيل / نقطة لتحديد ما إذا كان المستطيل يحتوي على النقطة. ستحصل الخوارزمية الجيدة على العرض = 1 سيناريو، والتي يجب أن تحاول ببساطة إنشاء الوظيفة العكسية لمقطع الخط وتحديد ما إذا كانت y-1 (point.y) هي X بين line_sement.x1 و line_sement.x2

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