اختبار تحدّب المضلّع
يجيب اختبار تحدّب المضلّع عن سؤال أساسي في الهندسة الحسابية: إذا أُعطي حلق مرتّب من الرؤوس الديكارتية، هل يبقى كل زاوية داخلية على الأكثر مئة وثمانين درجة بحيث لا ينخسف الشكل إلى الداخل؟ يحتاج المساحون الذين يتحققون من قطع المساحة، ومطوّرو الألعاب الذين يصمّمون أغلفة الاصطدام، وفرق نظم المعلومات الجغرافية التي تنظّف مضلّعات السياج الجغرافي، ومصدّرو CAD الذين يفرضون قيود التحدّب، وأدوات الصف التي تصحّح تمارين المضلّعات البسيطة إلى إجابة حتمية بنعم أو لا دون إقامة مكتبة هندسية كاملة. تقبل هذه القدرة قائمة مرتّبة من الرؤوس، وتدور مرة واحدة حول الحلق المغلق، وتقارن الجداء المتجهي الثنائي الأبعاد لكل زوج من الحواف المتتالية. عندما يشارك كل جداء متجهي غير صفري الإشارة نفسها، تسير كل انعطافة في الاتجاه نفسه ويكون المضلّع محدّباً؛ أمّا الإشارات المختلطة فتعني زاوية منعكسة واحدة على الأقل ويكون المضلّع مقعّراً. تشير الجداءات الصفرية إلى رؤوس على استقامة واحدة ويُسمح بها دون كسر التحدّب. يشغّل الوحدة التحليلية النقية نفسها أداة المتصفح المجانية ومسار API المدفوع مسبقاً، فلا تختلف نتائج تصحيح الواجبات وخطوط الإنتاج بين مربع ومخمّس على شكل سهم.
شغّل الأداة مجانًا
طريقة الاستخدام
أدخل القيم في النموذج أعلاه. تتحقق الأداة منها قبل الحساب ثم تعرض النتيجة في الصفحة نفسها.
راجع بياناتك
اتبع التسميات والوحدات الموضحة بجانب كل حقل. إذا كانت قيمة مفقودة أو خارج النطاق، توضح الصفحة الحقل الذي يحتاج إلى تصحيح.
أعد الحساب أو نفّذه آليًا
استخدم أداة الويب للفحوص الفردية، واستخدم الواجهة البرمجية عند دمج الإمكانية نفسها في سير عمل آلي.
حالات الاستخدام
احصل على النتيجة الآن
أدخل مجموعة من القيم وشاهد النتيجة من دون إعداد جدول بيانات أو برنامج نصي.
قارن السيناريوهات
غيّر قيمة واحدة في كل مرة وأعد الحساب لمعرفة ما الذي يؤثر في النتيجة.
أتمت العمل المتكرر
استخدم الواجهة البرمجية عندما تحتاج إلى تشغيل الحساب نفسه داخل منتجك أو سير عملك.
الأسئلة الشائعة
كيف تختبرون إن كان المضلّع محدّباً؟
أرسلوا رؤوساً مرتّبة كأزواج {x, y} أو [x, y] (ثلاثة على الأقل). تحسب API الجداءات المتجهية للحواف المتتالية حول الحلق وتعيد is_convex true عندما تشارك كل الجداءات غير الصفرية الإشارة نفسها.
ماذا إن كانت بعض الرؤوس المتتالية على استقامة واحدة؟
يُسمح بالجداءات المتجهية الصفرية. نقاط منتصف الحافة على الاستقامة لا تكسر التحدّب وحدها؛ فقط الانعطافات المختلطة يساراً ويميناً تعلّم مضلّعاً مقعّراً.
هل يهم ترتيب الرؤوس (مع عقارب الساعة أم عكسها)؟
أي توجيه متسق مقبول. تبلّغ الاستجابة orientation ك clockwise أو counterclockwise عند التحدّب، و mixed عندما تختلف الانعطافات.
ماذا يحدث بأقل من ثلاثة رؤوس؟
تفشل المهمة ب invalid_input بعد تطبيع الحلق. يحتاج اختبار تحدّب المضلّع إلى ثلاثة رؤوس على الأقل؛ والإدخال غير الصالح لا يُفوتر.
كم يكلّف اختبار تحدّب المضلّع؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقاً ب $0.002 لكل استدعاء ناجح؛ والإدخال غير الصالح لا يُفوتر.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/geo/polygon-is-convex \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"vertices":[{"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/polygon-is-convex", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"vertices": [
{
"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/polygon-is-convex",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"vertices": [
{
"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/polygon-is-convex", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"vertices":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"vertices":[{"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/polygon-is-convex", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"vertices": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
}
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.polygon_is_convex",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |