نقطة داخل مضلع
النقطة (1، 1) تقع داخل المستطيل الذي أركانه (0، 0) و(4، 0) و(4، 3) و(0، 3): شعاع يتجه يمينًا يقطع حدوده مرة واحدة، والعدد الفردي يعني الداخل. ويصلح الترتيب مع عقارب الساعة أو عكسها. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
يجيب اختبار النقطة داخل المضلع عن سؤال أساسي في الهندسة الحسابية: لموقع استعلام وشكل مغلق معرَّف بحلقة رؤوس مرتبة، هل يقع ذلك الموقع داخل الشكل؟ تحتاج أعمال المساحة ومنتجات الخرائط وأقنعة الاصطدام في الألعاب والجدران الجغرافية اللوجستية ومختبرات الهندسة في الصف نفس الإجابة الحتمية بدل رسم يدوي. ينفّذ هذا الفاحص خوارزمية صبّ الأشعة الزوجي-الفردي الكلاسيكية على إحداثيات مستوية: يُلقى نصف خط أفقي من نقطة الاختبار نحو اللانهاية الموجبة، وتُختبر كل حافة مضلع لتقاطع سليم، وتقرر زوجية عدد التقاطعات الداخل مقابل الخارج. تُعامل النقاط التي تقع تمامًا على حافة أو رأس كداخل وتُعلَّم بعلم حدود حتى لا يحتاج مستهلكو المجموعة المغلقة مرورًا ثانيًا. يُغلق المضلع ضمنيًا — لا يلزم تكرار أول رأس في النهاية — ويمكن تقديم الرؤوس ككائنات بحقول x وy أو كمصفوفات بعنصرين. عند أقل من ثلاثة رؤوس تفشل الطلب بخطأ تحقق واضح لأن المضلع يحتاج مثلثًا على الأقل.
كيف يعمل اختبار صبّ الأشعة الزوجي-الفردي
ابدأوا بنقطة استعلام منتهية بإحداثيين x وy وقائمة مرتبة من ثلاثة رؤوس مستوية على الأقل تشكّل مضلعًا بسيطًا مغلقًا عند وصل الرؤوس المتتالية وربط الأخير بالأول. لا تطلب الخوارزمية ترتيبًا مع عقارب الساعة أو ضدها؛ كلا الاتجاهين صالحان تحت قاعدة الزوجي-الفردي. من نقطة الاستعلام تخيلوا شعاعًا أفقيًا يسير يمينًا فقط لا يسارًا.
امشوا كل حافة للمضلع وقرروا إن كانت تقاطع الشعاع. تُتجاهل الحواف الأفقية لتفادي عدّ مزدوج مبهم. عندما تعلو حافة ارتفاع الشعاع — طرف فوق y الاستعلام بصرامة والآخر لا — يُحسب x التقاطع الدقيق بمعلمة خطية على الحافة.
إن وقع x الاستعلام يسار ذلك التقاطع بصرامة تسهم الحافة بتقاطع واحد؛ وإن تطابق التقاطع مع الاستعلام ضمن تسامح عددي ضئيل تُصنَّف النقطة على الحدود. بعد معالجة كل الحواف يعني عدد تقاطعات فردي الداخل وزوجي الخارج، وهو حجّة زوجية منحنى جوردان الكلاسيكية المتخصصة لشعاع أفقي. يجب أن تكون الإحداثيات منتهية؛ يُرفض NaN وInfinity.
أين تظهر فحوصات النقطة داخل المضلع في العمل الحقيقي
تسأل منتجات اللوجستيات والتوصيل إن كان تثبيت GPS للساعي داخل مضلع حي قبل عرض سعر حسب المنطقة، وتحتاج إجابة حتمية لا تنحرف بين معاينة خريطة المتصفح والخادم. تستخدم الألعاب والوسائط التفاعلية أقنعة اصطدام محاذاة للمحاور أو حرة كحلقات رؤوس وتختبر مواضع اللاعب أو المقذوف كل إطار دون سحب مكدس نظم معلومات جغرافية ثقيل. تعلّم وحدات الهندسة الحسابية في الصف صبّ الأشعة وحدس نظرية منحنى جوردان وحالات حافة النقطة العائمة؛ يساعد أوراكل موثوق واحد يعيد علم inside وعدد التقاطعات الخام الطلاب على التحقق من الواجبات خطوة بخطوة.
تصنّف أدوات التخطيط الحضري والمساحة نقاط عينات مقابل بصمات مبانٍ أو مضلعات تقسيم أثناء مراجعات تصميم مبكرة قبل ربط قواعد طبولوجيا كاملة. إن احتجتم لاحقًا محيط مضلع أو مساحته أو جيوديسيا دائرة عظمى أو ثقوب مضلعات متعددة بقاعدة اللف غير الصفري أو احتواء كروي على إهليلج WGS84، فاعاملوها كنوايا بحث وصفحات هبوط منفصلة بدل إثقال صفحة فاحص النقطة داخل المضلع المستوي.
حالات الاستخدام
عضوية الجدار الجغرافي للوجستيات
صنّفوا نقاط GPS أو نقر الخريطة مقابل مناطق التوصيل ومضلعات الأحياء بعلم inside حتمي مشترك بين معاينات المتصفح وتسعير الخلفية.
اختبار إصابة للألعاب والواجهة
اختبروا إن كان المؤشر أو اللاعب أو المقذوف داخل قناع مضلعي حر دون استيراد مكتبة نظم معلومات جغرافية كاملة إلى العميل.
الأسئلة الشائعة
أي خوارزمية يستخدمها فاحص النقطة داخل المضلع؟
صبّ أشعة زوجي-فردي: نصف خط أفقي من نقطة الاستعلام يعدّ التقاطعات مع حواف المضلع؛ الفردي داخل والزوجي خارج.
ماذا يحدث إن كان للمضلع أقل من ثلاثة رؤوس؟
يحتاج المضلع ثلاثة رؤوس على الأقل؛ القطعة أو النقطة الواحدة ليست حلقة صالحة للاحتواء.
هل يهم ترتيب الرؤوس (مع عقارب الساعة أم ضدها)؟
يعمل أي اتجاه تحت قاعدة الزوجي-الفردي. يجب أن يبقى الترتيب متسلسلًا حول الحدود؛ خلط الرؤوس ينتج شكلًا مختلفًا (غالبًا متقاطعًا ذاتيًا).
ماذا لو وقعت النقطة على الحافة تمامًا؟
تُعد النقطة الواقعة تمامًا على ضلع أو رأس داخل المضلع، وتشير النتيجة أيضًا إلى أنها على الحد، فتُحسب العلامة الموضوعة على خط السور ضمن المنطقة.
هل يجب تكرار الرأس الأول في النهاية؟
لا. يُغلق المضلع تلقائيًا ويتصل الرأس الأخير بالأول. يكفي إدخال ثلاثة رؤوس على الأقل بالترتيب، كل رأس على شكل زوج من x وy.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/geo/point-in-polygon \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x":1,"y":1,"polygon":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3}]}'const res = await fetch("https://api.kit.forhosting.com/geo/point-in-polygon", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x": 1,
"y": 1,
"polygon": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/point-in-polygon",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x": 1,
"y": 1,
"polygon": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/point-in-polygon", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x":1,"y":1,"polygon":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x":1,"y":1,"polygon":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/point-in-polygon", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"x": 1,
"y": 1,
"polygon": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
}
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.point_in_polygon",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
كيف يعمل اختبار صبّ الأشعة الزوجي-الفردي
اختصارات الحدود إلى داخل مع on_boundary صحيح حتى تُحسب العلامات على خط السياج محتواة. المسار كله حساب عائم حتمي بلا بذور عشوائية ولا طوابع زمنية ولا شبكة ولا انحراف نموذج، فالمدخلات المتطابقة تنتج دائمًا JSON متطابقًا. تُرفض الحلقات المتدهورة بأقل من ثلاثة رؤوس بـ invalid_input بدل معاملة قطعة كمضلع بصمت.
ما ترسلونه وما تستلمونه
أرسلوا نقطة الاختبار كحقلي x وy الرقميين الإلزاميين، والمضلع كمصفوفة إلزامية تحت الحقل polygon بثلاثة رؤوس على الأقل. تُدعم كائنات point متداخلة اختيارية للعملاء الذين يعبئون الاستعلام كبنية واحدة. عندما يكون طول مصفوفة polygon صفرًا أو واحدًا أو اثنين تفشل الطلب برسالة أن اختبار النقطة داخل المضلع يحتاج ثلاثة رؤوس على الأقل، ليصلح المستدعي الهندسة بدل التخمين. صلوا نموذج المتصفح المجاني لعروض الصف ونماذج الخرائط، ثم استدعوا العقد ذاته من السكربتات عند تصنيف جدران جغرافية جماعي أو مراجع انحدار. قد يكون كل رأس كائنًا بـ x وy أو مصفوفة برقمين؛ تُقبل أيضًا aliases vertices وpoints للحلقة. تفشل الحقول الناقصة والسلاسل غير الرقمية وNaN وInfinity بـ invalid_input ولا تُحاسب. عند النجاح تتضمن الاستجابة inside منطقيًا وon_boundary منطقيًا وكائن point منظفًا ومصفوفة polygon منظفة وn كعدد الرؤوس وcrossings كعدد صحيح لتقاطعات الشعاع-الحافة المستخدم في اختبار الزوجية وmethod=ray_casting وrule=even_odd. فحوصات دخان نموذجية: مربع وحدة باستعلام عند واحد فاصلة واحد داخل، واستعلام بعيد خارج المربع خارج، ومثلث بنقطة على ضلع داخل مع on_boundary صحيح. تسعير طلبات API الناجحة هو القاعدة المنشورة $0.002 لكل عنصر؛ إخفاقات التحقق لا تستهلك الرصيد المدفوع مسبقًا.
أين تظهر فحوصات النقطة داخل المضلع في العمل الحقيقي
ولأن هذه القدرة محرك parse خالص، فتسعير API هو القاعدة المنشورة $0.002 لكل عنصر ناجح والتحقق الفاشل لا يستهلك الرصيد.
حالات التكامل
هندسة حسابية في الصف
أظهروا صبّ الأشعة والزوجية وحالات حدود الحافة بـ JSON مستقر يتضمن أعداد التقاطعات للتحقق خطوة بخطوة.
أسئلة تقنية
هل تُحسب النقاط على الحافة كداخل؟
نعم. إن وقعت الاستعلام على حافة أو رأس ضمن تسامح عددي ضئيل فـ inside صحيح وon_boundary صحيح.
كم التكلفة؟
أداة المتصفح مجانية وتعمل محليًا. تستعمل طلبات API رصيد KIT المدفوع مسبقًا بـ $0.002 لكل عنصر ناجح؛ الإدخال غير الصالح لا يُحاسب.