خوارزمية الخطوط العريضة ثنائية الأبعاد للشبكة ثلاثية الأبعاد المتوقعة

StackOverflow https://stackoverflow.com/questions/1014293

  •  06-07-2019
  •  | 
  •  

سؤال

منح:شبكة ثلاثية الأبعاد محددة بمجموعة من القمم والمثلثات التي تبني الشبكة بهذه النقاط.

مشكلة:ابحث عن المخطط التفصيلي ثنائي الأبعاد للشبكة المتوقعة التي تم تدويرها بشكل تعسفي على مستوى تعسفي.

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

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

المحلول

  • ابدأ بالنقطة الموجودة في أقصى اليمين (النقطة ذات إحداثي x الأكبر)
  • احصل على كل الحواف من هذه النقطة
  • اتبع الحافة بأصغر زاوية للمحور السيني الموجب وأضفها أيضًا إلى مجموعة الحلول
  • من النقطة التي تم الوصول إليها، اتبع وأضف الحافة بأصغر زاوية إلى الحافة التي أتيت منها
  • كرر حتى تصل إلى النقطة الأصلية

نصائح أخرى

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

واتخاذ جميع حواف من هاتفك 2D-مثلثات وتجميعها. إذا تشترك اثنين من حواف كل من النهاية، فهي في نفس المجموعة. جميع الفئات، مع حافة واحدة فقط، ومن ثم جزء من قذيفة.

وأخيرا يمكنك الجمع بين قذيفة الحواف لحلقة واحدة، من خلال الانضمام معا.

تعالج تقنية أشكال ألفا المذكورة في هذا السؤال مجموعة عامة من النقاط التي لا تُعرف فيها اتصالات القمة:

هل توجد خوارزمية فعالة لإنشاء هيكل مقعر ثنائي الأبعاد؟

ومع ذلك، نظرًا لأنك تعرف بالفعل معلومات "الوجه" التي يمكن الحفاظ عليها من خلال العرض، فمن المحتمل ألا يكون هذا هو الأسلوب الأفضل.

قد تكون خوارزمية القوة الغاشمة ممكنة، خاصة إذا تم استخدام هياكل الفرز المكانية.على سبيل المثال لكل جانب:

  1. وجه المشروع على الطائرة
  2. تحقق مما إذا كان الوجه المسقط محاطًا بالكامل بالهندسة الموجودة، إذا كانت الإجابة بنعم:تم (لا حاجة لتوسيع الصورة الظلية المتوقعة)
  3. إذا كانت النقاط تقع خارج الشكل الهندسي الحالي، فقم بإجراء تقاطعات مثلثية لتحديد الأجزاء التي تقع خارجها، وقم ببناء n-gon عشوائيًا (ربما مقعرًا) لملء المساحة المفقودة، ثم قم بتقطيع n-gon إلى مثلثات

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

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

باستخدام هذه الملاحظة، يمكن تحديد المخطط التفصيلي ثنائي الأبعاد باستخدام الطريقة التالية:

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

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

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

هل مجرد مسألة إبراز نقاط XYZ إلى نقطة x'Y "على متن الطائرة التعسفية وبعد ذلك فقط القيام بدن محدب في تلك الإحداثيات؟

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