حساب زوايا المضلع الداخلية من الإحداثيات
تستقبل هذه الحاسبة الإحداثيات الديكارتية المرتبة لمضلع بسيط، ثم تحسب الزاوية الداخلية عند كل رأس.
شغّل الأداة مجانًا
وهي تدعم المضلعات المحدبة والمقعرة، لذلك تعيد عند الرأس الغائر زاوية منعكسة أكبر من 180 درجة حين يلزم. تحافظ النتيجة على ترتيب الرؤوس، وتعرض جميع القياسات بالدرجات، وتحدد اتجاه الدوران، وتضيف المجموع النظري للزوايا. وبذلك يمكنكم استخدامها لفحص الأشكال الهندسية، والتحقق من بيانات الإحداثيات، واختبار أدوات الرسم، وإنشاء إجراءات آلية قابلة لإعادة الإنتاج.
أدخلوا حدود المضلع بترتيبها
قدموا ثلاثة رؤوس على الأقل في صورة كائنات تحتوي على إحداثيين عدديين محدودين x وy. يجب أن يتبع الترتيب حدود المضلع بصورة متصلة، سواء مع عقارب الساعة أم عكسها. لا تكرروا النقطة الأولى في النهاية، لأن الحاسبة تغلق الضلع الأخير تلقائيا. تصف الإحداثيات مستوى ديكارتيا مسطحا، ويمكن أن تمثل وحدات رسم أو أمتارا في نظام مسقط أو بكسلات أو أي مقياس خطي متسق. ولا تفسر بوصفها خطوط طول وعرض على سطح الأرض المنحني. يجب أن يشكل الإدخال مضلعا بسيطا صالحا: لا يجوز تطابق رأسين متجاورين، أو تكرار أي نقطة، أو انعدام المساحة المحصورة، أو تقاطع ضلعين غير متجاورين أو تلامسهما. تمنع هذه الشروط التباس الزاوية الداخلية عندما تلتف الحدود على نفسها. إذا فشل التحقق، تبين الاستجابة مشكلة الرأس أو الضلع المعني بدلا من إرجاع قياسات تبدو معقولة لشكل هندسي غير صالح. ويضمن الحد الأقصى للرؤوس بقاء التنفيذ في المتصفح وعبر API ضمن نطاق محدد.
افهموا النتائج المحدبة والمقعرة والمنعكسة
تنشئ الحاسبة عند كل رأس متجهين من النقطة الحالية نحو الجارين السابق واللاحق. ويحدد الضرب القياسي والضرب الاتجاهي الزاوية المحلية واتجاه الانعطاف. أما مساحة المضلع ذات الإشارة فتحدد ما إذا كانت الحدود الكاملة تسير مع عقارب الساعة أم عكسها. ويتيح الجمع بين الانعطاف المحلي واتجاه الدوران التمييز بين رأس محدب عادي ورأس مقعر تكون زاويته الداخلية هي الزاوية المنعكسة المكملة. لذلك يعيد المستطيل المحدب أربع قيم مقدار كل منها 90 درجة، بينما قد تعيد الفجوة الداخلية زاوية تتجاوز 180 درجة. تتبع مصفوفة angles_deg ترتيب رؤوس الإدخال نفسه تماما، ولذلك يصف الفهرس 0 دائما أول نقطة مقدمة. تقرب النتائج إلى عشر منازل عشرية لتجنب الذيول غير المفيدة للحساب بالفاصلة العائمة مع الحفاظ على دقة كافية. وقد تنتج نقاط الحدود الواقعة على استقامة واحدة زاوية 180 درجة ما دامت لا تسبب تداخلا غير صالح. ولا يصف الحقل winding إلا اتجاه الدوران.
تحققوا من المجموع واستخدموا الناتج بأمان
يبلغ مجموع الزوايا الداخلية لكل مضلع بسيط له n من الرؤوس (n − 2) × 180 درجة، سواء كان محدبا أم مقعرا. يعرض الحقل total_sum_deg هذه القاعدة مباشرة، بينما يقدم vertex_count قيمة n. يفيد هذا المجموع في إجراء فحص سريع للاتساق عند استيراد أشكال من ملفات CAD أو حدود مرقمنة أو تمارين تعليمية أو تطبيقات رسم مخصصة. قد تختلف القيم الفردية المقربة بمقدار ضئيل عن مجموع مستقل محسوب بالفاصلة العائمة؛ لذلك اعتمدوا total_sum_deg بوصفه المجموع النظري المرجعي بدلا من اشتراط تطابق القيم المعروضة بتا بت. تعمل القدرة بصورة حتمية، فالإحداثيات المرتبة نفسها تنتج JSON نفسه دائما، من دون شبكة أو عشوائية أو وقت حالي. يمكنكم تشغيلها مجانا في المتصفح للعمل التفاعلي، أو استدعاء API مقابل $0.002 لكل طلب عند دمج الحساب في مسار آلي. حافظوا على جميع الإحداثيات ضمن مرجع مستو واحد، وأسقطوا البيانات الجغرافية أولا إذا كان انحناء الأرض سيؤثر بوضوح في الشكل المطلوب.
حالات الاستخدام
التحقق من أداة رسم
قارنوا قياسات الزوايا والمجموع النظري بعد تعديل مسار مضلع مرتب.
فحص شكل هندسي مقعر
حددوا الزوايا المنعكسة عند الرؤوس الغائرة من دون افتراض أن كل مضلع محدب أو منتظم.
تقييم تمارين الإحداثيات
أنشئوا زوايا حتمية لكل رأس والمجموع المتوقع للمضلعات المقدمة في صورة قوائم إحداثيات.
الأسئلة الشائعة
هل تعمل الحاسبة مع المضلعات المقعرة؟
نعم. تستخدم اتجاه الحدود والانعطاف المحلي لإرجاع زوايا داخلية منعكسة أكبر من 180 درجة عند الحاجة.
هل ينبغي تكرار الرأس الأول في النهاية؟
لا. ضلع الإغلاق ضمني، ويؤدي تكرار الرأس الأول إلى رفضه بوصفه نقطة مكررة.
هل يمكن استخدام خط العرض وخط الطول مباشرة؟
يجوز ذلك فقط عندما يكون التقريب المستوي مقبولا. وللحصول على هندسة جغرافية دقيقة، أسقطوا البيانات أولا إلى نظام ديكارتي مناسب.
لماذا رفض المضلع؟
تشمل الأسباب الشائعة وجود أقل من ثلاثة رؤوس، أو إحداثيات غير محدودة، أو نقاط مكررة، أو أضلاع بطول 0، أو مساحة منعدمة، أو تقاطع أضلاع غير متجاورة.
ما تكلفة طلب API؟
يكلف كل طلب API مقدار $0.002. ويتاح الحساب الحتمي نفسه في المتصفح أيضا.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/geo/polygon-interior-angles \
-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-interior-angles", {
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-interior-angles",
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-interior-angles", 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-interior-angles", 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_interior_angles",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |