أكثر

كيفية حساب مجموعة من المربعات الحد الأدنى لمضلع

كيفية حساب مجموعة من المربعات الحد الأدنى لمضلع


أحتاج إلى حساب مجموعة من الحد الأدنى من المربعات المحيطة لمضلع. لدي مضلع معقد أريد أن أغلفه بمجموعة من الصناديق الصغيرة بدلاً من مجموعة كبيرة.


أفترض أن ما تريد القيام به هو إنشاء شبكة مضلعة وتحديد جميع خلايا الشبكة التي تتقاطع مع هندسة المضلع.

إذا كنت على حق ، يرجى إعادة صياغة سؤالك لأنه لا معنى له كما هو الحال الآن. حسب التعريف ، تحتوي الهندسة على مربع محيط واحد أو مستطيل إحاطة بحد أدنى كما يطلق عليه أيضًا.


تسمح لك معظم البرامج المكانية بالعثور على الصندوق المحيط. سيؤدي استخدام إحداثيات الحد الأقصى / الدقيقة في اتجاهات الطول / العرض إلى تسهيل إنشاء إحداثيات الزاوية لمربع الإحاطة. ستجد الإجابة على هذا التحدي الخاص باستخدام Python في QGIS هنا.

أما بالنسبة لتقسيمها ، فيمكنك استخدام أي مجموعة من المضلعات. يمكنك إنشاء شبكة صيد من اختيارك أو استخدام شبكة موجودة. ثم قم بعمل تقاطع بين الصندوق المحيط الخاص بك ومجموعة شبكة صيد السمك / المضلع التي تستخدمها.


من خلال المربع المحيط أفترض أنك تعني المربع (المربع) الذي تم كتابة الدائرة فيه ، كما في هذه الصورة:

لاحظ أن نصف قطر الدائرة يساوي بالضبط نصف طول ضلع من جوانب المربع.

لذلك إذا كان مركز الدائرة هو $ (10، -5) $ ونصف قطر الدائرة $ 23 $ ، وإذا افترضنا نظام إحداثيات قياسي ($ y $ - تزداد القيم في الاتجاه الصاعد و $ x - تزداد القيم في الاتجاه الصحيح) ، ثم تقع أركان الصندوق في النقاط التالية:


مدى التغطية

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

يتم تخزين معلومات المدى الجغرافي للتغطية في ملف bnd.adf. يتم استخدام ملف bnd.adf بواسطة العديد من تطبيقات برامج Esri لتعيين النطاق الجغرافي لرسم التغطية. بالإضافة إلى ذلك ، غالبًا ما يتم استخدامه كمدى افتراضي للخريطة لعرض التغطية السريع. تستخدم العديد من العمليات المكانية ملف bnd.adf لتحديد ما إذا كانت إحدى التغطية تتداخل مع أخرى ولفرز ميزات التغطية حسب الموقع للمعالجة.

يحتوي ملف BND على العناصر التالية:

الإحداثي السيني للركن الأيسر السفلي لمدى التغطية

إحداثي ص للركن الأيسر السفلي لمدى التغطية

الإحداثي السيني للركن الأيمن العلوي لمدى التغطية

إحداثي ص للركن الأيمن العلوي لمدى التغطية

يمكن أن تقع إحداثيات الروابط والتشنجات اللاإرادية والتعليقات التوضيحية خارج ملف bnd.adf. التغطية التي لا تحتوي على أقواس أو نقاط تسمية (أو نقطة تسمية واحدة) سيكون لها bnd.adf غير محدد.

عادةً ما يحافظ ArcGIS على المدى نيابةً عنك ، ويقوم بتحديثه أثناء إضافة المعالم أو إزالة المعالم من التغطية. إذا كان النطاق الموضح لسبب ما لا يتطابق مع النطاق الفعلي للميزات ، فانقر فوق Fit في مربع حوار خصائص التغطية لإعادة حساب مدى التغطية. بدلاً من ذلك ، يمكنك كتابة قيم المدى الجديدة في مربعات النص المناسبة.


يجعل استخدام numpy إدارة كمية كبيرة من الإحداثيات أكثر كفاءة. في هذا المثال ، نفترض & # 8217 أنك قمت بتخزين الإحداثيات في مصفوفة على شكل (n ، 2). بالنسبة لمثال الإحداثيات أعلاه ، هذا سهل & # 8217:

يمكننا استخدام numpy & # 8217s المدمجتين min و max لحساب min / max بدلاً من كتابتها بأنفسنا. يمكنك إلقاء نظرة على الكود المصدري ، ولكن بالنسبة لمعظم التطبيقات ، يوصى بتثبيت UliEngineering واستخدام الكود فقط:

يمكنك استخدام هذا في قائمة الإحداثيات دون تحويلها صراحةً إلى مصفوفة عددية ، لأن min و max سيحولان القائمة ضمنيًا. ومع ذلك ، هذا غير فعال ، حيث سيتم تحويله مرتين: مرة في الدقيقة ومرة ​​في الحد الأقصى.


كشف المعصم على أساس الحد الأدنى من المربع المحيط والميزات الهندسية

يعد اكتشاف المعصم عنصرًا حاسمًا في تقدير وضع اليد وعمليات التعرف على إيماءات اليد في تطبيقات التفاعل بين الإنسان والحاسوب. تستخدم معظم الطرق خطوطًا متوازية أفقية للبحث عن موقع خط الرسغ. تتمثل المشكلات الصعبة في اكتشاف المعصم في تحديد الاتجاه وتحديد الخطوط الأفقية المتوازية التي تمسح لأوضاع اليد المختلفة. تكتشف الطريقة المقترحة معصمًا تلقائيًا ، بناءً على الحد الأدنى من المربع المحيط والميزات الهندسية. كما أنه يحدد نقاط البداية والتوقف لتعريب عملية المسح. استخدم التقييم مجموعة من 1240 صورة يدوية مع بيانات حقيقة الأرض مأخوذة من ثلاث مجموعات من البيانات. احتوت صور اليد على العديد من الإيماءات والأفراد لإثبات أن الطريقة قوية ضد الإيماءات المختلفة. يوضح التقييم أن الطريقة تكتشف بنجاح اتجاه الصورة ونقاط الرسغ بدقة عالية.


ما هي طريقة إيجاد الحد الأدنى لحجم الإحاطة الذي تمثله المستويات؟

لعدم وجود طريقة أفضل ، أقترح تثليث سطح الشكل الخاص بك والتكرار فوق تلك المثلثات ، وحساب المحدد لكل منها ، وإضافة كل هذه. تأكد من استخدام اتجاه ثابت للمثلثات ، بحيث يتم توجيهها جميعًا بنفس الطريقة عند رؤيتها من الداخل. اقسم النتيجة على 6 وستحصل على الحجم. والسبب هو أنك تضيف عددًا من الأحجام الهرمية الموجهة ، والتي تلغي خارج الشكل الخاص بك وتصف في النهاية الجزء الداخلي تمامًا.

أيضا ، ما إذا كان للشكل بعدا لانهائيا؟


مجموعات الهندسة (اختياري) ¶

هذا الجزء غير إلزامي ولكنه يحتوي على بعض المعلومات المفيدة المتعلقة ببناء واستخدام المجموعات الهندسية وبعض العناصر الهندسية الخاصة - مثل المربع المحيط.

في بعض المناسبات ، من المفيد تخزينها على سبيل المثال. خطوط أو مضلعات متعددة تحت معلم واحد (على سبيل المثال ، يمثل صف واحد في ملف الشكل أكثر من سطر أو كائن مضلع). يتم تنفيذ مجموعات النقاط باستخدام كائن متعدد النقاط ، ومجموعات من المنحنيات باستخدام كائن MultiLineString ، ومجموعات الأسطح بواسطة كائن MultiPolygon. هذه المجموعات ليست مهمة من الناحية الحسابية ، ولكنها مفيدة لنمذجة أنواع معينة من الميزات. يمكن تقديم ميزة خطية على شكل حرف Y (مثل الطريق) ، أو مضلعات متعددة (مثل الجزر على ما شابه) ، بشكل جيد ككل باستخدام MultiLineString أو MultiPolygon وفقًا لذلك. إنشاء وتصور الحد الأدنى من المربع المحيط على سبيل المثال حول نقاط البيانات الخاصة بك هي وظيفة مفيدة حقًا للعديد من الأغراض (على سبيل المثال محاولة فهم مدى بياناتك) ، هنا نوضح كيفية إنشاء واحدة باستخدام Shapely.

يمكن إنشاء مجموعات الهندسة بالطريقة التالية:

يمكننا أن نرى أن المخرجات تشبه الكائنات الهندسية الأساسية التي أنشأناها سابقًا ولكن هذه الكائنات تحتوي الآن على ميزات متعددة لتلك النقاط أو الخطوط أو المضلعات.

المجموعة الهندسية - سمات ووظائف الكائنات¶

يمكننا أيضًا الحصول على العديد من السمات المفيدة من تلك الكائنات:

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

إطلاق في الويب / MyBinder:

شكر وتقدير:

& نسخ حقوق الطبع والنشر 2019 ، معلوماتية جغرافية للمناظر الطبيعية آخر تحديث في 4 مارس 2020.


2 إجابات 2

قد تجد خوارزمية مفصلة في Drexel Math Forum ، بسبب فلاديمير زاجيتش. إنه حساب فوضوي ولكنه أساسي. سيتعين عليك أولاً حساب مركز الدائرة التي تحتوي على القوس وزاويتي البداية والنهاية ، وهي عملية حسابية يمكن العثور عليها في جميع أنحاء الويب ، على سبيل المثال ، في صفحة MathWorld على دائرة.

تمكنت من القيام بذلك. المرحلة الأولى هي حساب مركز الدائرة والزوايا ، كما قال جوزيف. ثم عليك حساب الزوايا بين المتجه (1،0) و (x_n-cx، y_n-cy) حيث n هي [0،1،2]. تحدد الزاوية الأولى والأخيرة مع الدائرة القطاع. الآن ، احسب نقاط البوصلة الأربع على الدائرة. الشمال والشرق والجنوب والغرب. تتمثل الفكرة الرئيسية في أن النقاط الوحيدة التي يمكن أن تتقاطع مع bbox هي نهاية القوس ، والبداية ، و "نقاط البوصلة" الأربعة. قم بتصفية تلك النقاط الست ، البداية ، النهاية ، الشمال ، الشرق ، الجنوب ، الغرب التي تقع خارج القطاع المحدد مسبقًا. بعد ذلك ، خذ النقاط القصوى من كل نقطة وأنشئ bbox منها.

تحرير: انتهى بي الأمر باستخدام نظام CAS لحل المعادلات التي تعطي cx و cy نظرًا لأنه فوضوي وطويل ، ولكن من الناحية النظرية سهلة.

هذا هو كود هاسكل الذي يقوم بهذا:


الشكل المبسط: المستطيلات

لنفترض أننا نركز على الحالة الأسهل حيث $ mathcal

يجب أن يكون $ مستطيلاً محاذٍ للمحور. ثم يمكنني إعطاء خوارزمية $ O (n ^ 2 ( lg n) ^ 2) $ time.

بدون فقدان العمومية ، يجب أن يتفق $ x $ - المنسق للجانبين الأيسر والأيمن من هذا المستطيل مع $ x $ - المنسق لبعض زوج النقاط ، وبالمثل للجانبين العلوي والسفلي.

لذا ، تخمين $ x $ - المنسق للجانب الأيسر من المستطيل (هناك احتمالات $ le n $) ، قل $ x_L $. الآن ، قم بإجراء بحث ثنائي على عرض المستطيل (هناك احتمالات $ le n $) ، باستخدام الأفكار التالية.

بالنظر إلى تخمين عرض المستطيل $ w $ ، يمكنك حساب الحد الأقصى لعدد النقاط التي يمكن أن تتلاءم مع المستطيل المسموح به مع إحداثيات $ x $ للجانبين الأيسر والأيمن ، على النحو التالي. ابدأ بتصفية جميع النقاط التي لا يكون تنسيقها $ x $ في $ [x_L، x_L + w] $. صنف النقاط المتبقية حسب المحور $ y $. الآن ابحث عن $ y $ -value $ y_B $ للجانب السفلي من المستطيل ، والذي يزيد عدد النقاط المتبقية التي يكون تنسيقها $ y $ في النطاق $ [y_B، y_B + A / w] $. يمكن العثور على هذا بمسح خطي مباشر للنقاط المتبقية (مع تقدم مؤشرين بشكل رتيب).

باستخدام هذا ، بالنظر إلى $ x_L $ ، يمكنك إجراء بحث ثنائي عن $ w $. يتطلب كل تخمين عند $ w $ عمل $ O (n lg n) $ لحساب الحد الأقصى لعدد النقاط التي يمكن احتواؤها في مستطيل من هذا النوع. نظرًا لوجود قيم محتملة $ le n $ لـ $ w $ ، ستعمل على تكرار $ O ( lg n) $ في البحث الثنائي. نظرًا لوجود احتمالات $ le n $ لـ $ x_L $ ، فإن وقت التشغيل الإجمالي هو $ O (n ^ 2 ( lg n) ^ 2) $.

نظرًا لأن المستطيل عبارة عن مضلع محدب ، فإن هذا يمنحك حدًا أدنى لعدد النقاط التي يمكن تغطيتها بمضلع محدب بمساحة $ le A $. قد لا يكون حدًا أدنى ضيقًا بشكل خاص ، ولكن ربما تكون البداية.


أكبر دائرة محاطة بمربع الحد الأدنى الموجه ولكن لا تتضمن النقاط / الخطوط

أتساءل عما إذا كان بإمكان شخص ما اقتراح طريقة للعثور على أكبر دائرة يمكن أن تتناسب مع مربع الحد الأدنى الموجه لمجموعة من النقاط / الخطوط ، التي لا تتضمن أيًا من النقاط / الخطوط.

تأمل هاتين الصورتين:

كل صورة محاطة بمربع الحد الأدنى الموجه لها (فقط بالتوازي مع المحور XY لتسهيل الأمور).

سيحتوي الشكل & quotCross & quot

وبالتالي ، فإن القضية تكمن في إيجاد نهج عام يمكنه العثور على مثل هذه الدائرة ونصف قطرها / قطرها.

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

تظهر أكبر مشكلة دائرة فارغة قريبة ، ولكن (إذا ركزت على النقاط / الخطوط فقط) فستتجاوز حجم المربع المحيط.

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


شاهد الفيديو: طريقة حساب اجمالي المساحة والمحيط لعدة أشكال دفعة واحدة على برنامج AutoCAD