خوارزمية بيثون بسيطة اللازمة في العثور على مربع محيط من الشبكات من ملف OBJ
سؤال
أحاول مشكلة التعبئة باستخدام ملفات Python و OBJ. أنا مبتدئ في بيثون وغير متأكد من كيفية التعامل مع رؤوس ملف OBJ للعثور على المربع المحيط الأمثل. أي نموذج عينة بيثون لإلقاء البدء؟ إليك ملف مربع بسيطة OBJ لتبدأ بحيث أحتاج إلى تنسجم حاوية أكبر. باختصار، يمكن الاعتراض على X يصلح إلى كائن Y. ثم في نهاية المطاف كم من X يمكن أن يصلح إلى Y مع الحل الأمثل، ولكن هذا في وقت لاحق.
إليك ملفات .obj للصناديق الصغيرة والأكبر صغير: giveacodicetagpre.
v -5 -5 0 v -5 -5 5 v 0 -5 0 v 0 -5 5 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN 0 -1 0 VN 0 -1 0 VN 0 -1 0 VN 0 -1 0 F 4/4/4 2/2/2 1/1/1 3/3/3 v 0 -5 0 v 0 -5 5 v 0 0 0 v 0 0 5 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN 1 0 0 VN 1 0 0 VN 1 0 0 VN 1 0 0 F 8/8/8 6/6/6 5/5/5 7/7/7 v 0 0 0 v 0 0 5 v -5 0 0 V -5 0 5 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN 0 1 0 VN 0 1 0 VN 0 1 0 VN 0 1 0 و 12/12/12 10/10/10 9/9/9 11/11/11 V -5 0 0 V -5 0 5 v -5 -5 0 v -5 -5 5 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN -1 0 0 VN -1 0 0 VN -1 0 0 VN -1 0 0 و 16/16/16 14/14/14 13/13/13 15/15/15 v -5 -5 0 v 0 -5 0 v -5 0 0 v 0 0 0 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN 0 0 -1 VN 0 0 -1 VN 0 0 -1 VN 0 0 -1 و 20/20/20 18/18/18 17/17/17 19/19/19 V -5 -5 5 V -5 0 5 v 0 -5 5 v 0 0 5 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN 0 0 1 VN 0 0 1 VN 0 0 1 VN 0 0 1 و 24/24/24 22/22/22 21/21/21 23/23/23
bigger box: giveacodicetagpre.
v 0 0 0 V 0 0 20 v 0 20 0 v 0 20 20 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN -1 -0 -0 VN -1 -0 -0 VN -1 -0 -0 VN -1 -0 -0 F 4/4/4 3/3/3 1/1/1 2/2/2 v 0 20 0 V 0 20 20 V 20 20 0 V 20 20 20 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN 0 1 0 VN 0 1 0 VN 0 1 0 VN 0 1 0 F 8/8/8 7/7/7 5/5/5 6/6/6 V 20 20 0 V 20 20 20 V 20 0 0 V 20 0 20 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN 1 0 0 VN 1 0 0 VN 1 0 0 VN 1 0 0 و 12/12/12 11/11/11 9/9/9 10/10/10 V 20 0 0 V 20 0 20 v 0 0 0 V 0 0 20 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN 0 -1 0 VN 0 -1 0 VN 0 -1 0 VN 0 -1 0 و 16/16/16 15/15/15 13/13/13 14/14/14 v 0 0 0 v 0 20 0 V 20 0 0 V 20 20 0 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN -0 -0 -1 VN -0 -0 -1 VN -0 -0 -1 VN -0 -0 -1 و 20/20/20 19/19/19 17/17/17 18/18/18 V 0 0 20 V 20 0 20 v 0 20 20 V 20 20 20 VT 0 0. VT 0 1. VT 1 0. VT 1 1. VN 0 0 1 VN 0 0 1 VN 0 0 1 VN 0 0 1 و 24/24/24 23/23/23 21/21/21 22/22/22 giveacodicetagpre.
المحلول
أولا للإجابة على السؤال في عنوانك:
- قم بتحميل كل ملف كائن كقائمة من القمم، أفترض أنك بالفعل HSVE بعض الكود لتحميل ملفات .OBJ في Python (إن لم يكن، يمكنك ضبط هذا loadobj () وظيفة على سبيل المثال، وجعلها ترجع متغير الأفق)
- لكل كائن، حساب المربع المحيط، E.G.:
giveacodicetagpre.
الآن للاختبار إذا كان كائن واحد "يناسب" في الآخر.في الأساس، تريد أن تعرف ما إذا كان المربع المحيط واحد متساويا أو أصغر من الآخر في جميع الأبعاد، كما أفهمك. لذلك،
- حساب لكل صندوق يحتل حجمه في X، Y و Z، E.G.:
giveacodicetagpre.
حظا سعيدا!
- حساب لكل صندوق يحتل حجمه في X، Y و Z، E.G.:
نصائح أخرى
سترغب في التكرار فوق بيانات OBJ التي تبحث عن "V والتحقق من تلقاءات X Y و Z التالية وتسجيل أعلى وأقل قيمة في كل مرة تصادفها.يطبع التعليمة البرمجية التالية أعلى قيمة وأقل قيمة لكل بعد ثم يمنحك المربع المحيط من ذلك giveacodicetagpre.
و heres الناتج أحصل عليه giveacodicetagpre.
نأمل أن تكون المنطقية