Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. Programming
Gamedevelopment

دعونا نبني محرك رسومات ثلاثية الأبعاد: المثلثات النقطية والرباعية

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Let’s Build a 3D Graphics Software Engine.
Let's Build a 3D Graphics Engine: Rasterizing Line Segments and Circles
Let's Build a 3D Graphics Engine: Colors

Arabic (العربية/عربي) translation by Hamdan Veerlax (you can also view the original English article)

مرحبًا بك في الجزء الخامس من سلسلة Let Let's Build 3D Graphics Engine! في هذه المرة ، سنبني فصلين دراسيين جديدين للتنقيط: واحد للمثلثات والآخر للدرجات الرباعية الأساسية. بعد ذلك ، سنأخذ قطعًا من هاتين الفئتين ونجمع طبقة مضلعة نهائية وقوية.

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


خلاصة

لقد قمنا ببناء بعض الشيء في محركنا حتى الآن! إليكم ما لدينا:

  • فاصلات النقطة و المتجهات (وحدات البناء لمحركنا).
  • وظائف التحول لنقاطنا.
  • فئة الكاميرا (تحدد إطار العرض الخاص بنا ، وتعطّل النقاط خارج الشاشة).
  • فئتان للتنقيط (شرائح الخط والدوائر).

في ما يلي مرجع سريع لجميع الفصول التي أنشأناها:

سوف نعتمد بشكل كبير على فئة LineSegment لإنشاء فئتي Triangle و Quad ، لذا تأكد من إعادة التعرف عليها قبل الانتقال.


المثلثات النقطية

512px-Euler_diagram_of_triangle_types

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

يمكن أن يظهر المخطط الأساسي للفصل كالتالي:

من أجل المعايير ، سنفترض أن النقاط الثلاث المعلنة ضمن مثلثنا هي في نمط عقارب الساعة.

باستخدام فئة LineSegment ، يمكننا إعداد وظيفة returnPointsInTriangle() الخاصة بنا على النحو التالي:

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

بعد ذلك ، دعونا نلقي نظرة على كيفية إضافة المزيد من النقاط إلى هذا النظام من خلال إنشاء فئة مربعة.


الحصول على تربيعي بعيدا

300px-Six_Quadrilaterals

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

ثم ، نقوم فقط بإضافة جزء السطر الإضافي إلى الدالة returnPointsInQuad ، مثل:

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


أين لديك كل بوليس غون؟

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

والثاني هو استخدام حلقة للسماح لعدد غير مسمّى من مقاطع الخطوط بالعبور في وظيفة returnPointsInPolygon() التي قد تبدو كالتالي:

مع إضافة هذه الفئة إلى محركنا ، يمكننا الآن إنشاء أي شيء من المثلث إلى بعض المراجعين من 39 جانبًا مع نفس سطر الشفرة.


مضلع مضلع

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

يمكن تقسيم مواصفات برنامجنا إلى هذه الأجزاء الصغيرة:

  • ارسم مضلعًا على الشاشة في البداية.
  • عند الضغط على المفتاح 'a' ، قم بتخفيض عدد الجوانب على المضلع بمقدار 1.
  • عندما يتم الضغط على مفتاح 's' ، قم بزيادة عدد الجوانب على المضلع بمقدار 1.
  • منع عدد مضلع الجانبين من السقوط تحت 3.
  • منع عدد مضلع الجوانب من الزيادة فوق 10.

لنلق نظرة على شكل الرمز الخاص بنا:

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


خاتمة

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

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.