سوف نتعلم كيفية تصوير منشور سداسي في أوضاع مختلفة.

تعلم طرقًا مختلفة لبناء مسدس منتظم ، ارسم رسومات سداسية ، تحقق مما إذا كانت صحيحة. ارسم مناشير سداسية من الأشكال السداسية.

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

بناء على الدائرة المقيدة. النظر في الشكل. 3.56. تنتمي جميع رؤوس السداسي المنتظم إلى الدائرة ، نصف قطرها يساوي ضلع السداسي.


مسدس أفقي. ارسم شكلًا بيضاويًا أفقيًا ، أي الدائرة المحددة في المنظور. الآن عليك إيجاد ست نقاط عليه ، وهي رءوس الشكل السداسي. ارسم أي قطر للدائرة من خلال مركزها (شكل 3.57). النقاط القصوى للقطر - 5 و 2 ، الواقعة على القطع الناقص ، هي رءوس الشكل السداسي. لإيجاد باقي القمم ، عليك تقسيم هذا القطر إلى أربعة أجزاء متساوية. يتم تقسيم القطر بالفعل بواسطة النقطة المركزية للدائرة إلى نصفين ، ويبقى تقسيم كل نصف قطر إلى نصفين. في رسم المنظور ، يتم قطع جميع المقاطع الأربعة بالتساوي مع المسافة من العارض (الشكل 3.58). الآن ارسم من خلال نقاط المنتصف لنصف القطر - النقطتان A و B - خطوط مستقيمة متعامدة على الخط المستقيم 5 - 2. يمكنك إيجاد اتجاهها باستخدام مماسات القطع الناقص عند النقطتين 5 و 2 (الشكل 3.59). ستكون هذه المماسات عمودية على القطر من 5 إلى 2 ، وستكون الخطوط المرسومة عبر النقطتين A و B الموازية لهذه المماسات أيضًا متعامدة مع الخط 5 - 2. حدد النقاط التي تم الحصول عليها عند تقاطع هذه الخطوط مع القطع الناقص على النحو التالي 1 ، 3 ، 4 ، 6 ((انظر الشكل 3.60) قم بتوصيل جميع الرؤوس الستة بخطوط مستقيمة (الشكل 3.61).

تحقق من صحة البناء الخاص بك بطرق مختلفة. إذا كان البناء صحيحًا ، فإن الخطوط التي تربط الرؤوس المقابلة للشكل السداسي تتقاطع عند مركز الدائرة (الشكل 3.62) ، وتكون الأضلاع المتقابلة للسداسي موازية للأقطار المقابلة (الشكل 3.63). طريقة أخرى للتحقق موضحة في الشكل. 3.64

مسدس عمودي. في مثل هذا الشكل السداسي ، يكون للخطوط المستقيمة التي تربط النقطتين 7 و 3 و b و 4 ، بالإضافة إلى الظلال بالدائرة المقيدة عند النقطتين 5 و 2 ، اتجاه رأسي وتحتفظ به في رسم المنظور. وهكذا ، برسم مماسين عموديين للقطع الناقص ، نجد النقطتين 5 و 2 (نقطتا التماس). قم بتوصيلهم بخط مستقيم ، ثم قسّم القطر الناتج 5-2 إلى 4 قطاعات متساوية ، مع مراعاة تخفيضات المنظور الخاصة بهم (الشكل 3.65). ارسم خطوطًا عمودية من خلال النقطتين A و B ، وعند تقاطعهما مع القطع الناقص ، ابحث عن النقاط 1،3،6L4. ثم قم بتوصيل النقاط 1-6 على التوالي بخطوط مستقيمة (الشكل 3.66). تحقق من صحة بناء الشكل السداسي بنفس الطريقة كما في المثال السابق.

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

على أساس مربع. النظر في الشكل. 3.67. الشكل السداسي المرسوم في مربع في الاتجاه الأفقي 5 - 2 يساوي ضلع المربع ، وفي الاتجاه الرأسي يكون أقل من طوله.

مسدس عمودي. ارسم مربعًا رأسيًا في المنظور. ارسم خطًا مستقيمًا عبر تقاطع الأقطار الموازية لجوانبها الأفقية. قسّم المقطع الناتج 5 - 2 إلى أربعة أجزاء متساوية وارسم خطوطًا عمودية عبر النقطتين A و B (الشكل 3.68). لا يصطف الخطان العلوي والسفلي للشكل السداسي مع جوانب المربع. ارسمهم على مسافة (1114 أ) من الجوانب الأفقية للمربع وموازية لهم. من خلال توصيل النقطتين 1 و 3 الموجودتين بهذه الطريقة بالنقطة 2 والنقطتين 6 و 4 بالنقطة 5 ، نحصل على شكل سداسي (الشكل 3.69).

يتكون الشكل السداسي الأفقي بنفس التسلسل (الشكل 3.70 و 3.71).

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

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

بعد أن أتقنت مهارات رسم شكل سداسي ، ستنتقل بحرية إلى رسم منشور سداسي. ألق نظرة فاحصة على الرسم التخطيطي في الشكل. 3.72 ، بالإضافة إلى مخططات لإنشاء مناشير سداسية بناءً على الدائرة المقيدة (الشكل 3.73 ؛ 3.74 و 3.75) وعلى أساس مربع (الشكل 3.76 ؛ 3.77 و 3.78). ارسم أشكال سداسية رأسية وأفقية بطرق مختلفة. في صورة الشكل السداسي الرأسي ، ستكون الجوانب الطويلة للوجوه الجانبية عبارة عن خطوط مستقيمة رأسية موازية لبعضها البعض ، وسيكون السداسي الأساسي أكثر انفتاحًا كلما ابتعد عن خط الأفق. في رسم الشكل السداسي الأفقي ، ستتقارب الجوانب الطويلة من الوجوه الجانبية عند نقطة التلاشي في الأفق ، وستكون فتحة السداسي الأساسي أكبر كلما ابتعدت عن العارض. عند تصوير شكل سداسي ، تأكد أيضًا من أن الوجوه المتوازية لكلتا القاعدتين تتقارب في المنظور (الشكل 3.79 ؛ 3.80).

لإنشاء مسدس منتظم منقوش في دائرة. يبني خماسيًا منتظمًا على طول جانبه المحدد. انقل إبرة البوصلة إلى تقاطع القوس الذي رسمته للتو مع الدائرة. يمكن القيام بهذا البناء باستخدام مربع وبوصلة. يمكن بناء مسدس منتظم باستخدام سكة ومربع 30 × 60 درجة. ارسم نقاط قمة زوايا الشكل السداسي المنتظم.


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

طريقة 1 من 3: ارسم مسدسًا مثاليًا باستخدام البوصلة

نضع علامة على النقطة 1 على الدائرة ونأخذها كأحد رؤوس البنتاغون. دع دائرة قطرها D تُعطى ؛ تحتاج إلى إدخال سباعي منتظم فيه (الشكل 65). نقسم القطر الرأسي للدائرة إلى سبعة أجزاء متساوية. من النقطة 7 مع نصف قطر يساوي قطر الدائرة D ، نصف قوسًا يصل إلى التقاطع مع استمرار القطر الأفقي عند النقطة F. ستسمى النقطة F بقطب المضلع.

تعتمد تقنية بناء المضلعات المنتظمة على القدرة على بناء منصفات الزوايا والمتوسطات العمودية للقطاعات.

يُظهر العمود الأول من هذا الجدول عدد أضلاع المضلع المنتظم المنقوش ، والثاني - المعاملات. يتم الحصول على طول أحد أضلاع مضلع معين بضرب نصف قطر دائرة معينة في عامل يقابل عدد أضلاع هذا المضلع.

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

4. حصل على المثلث المنتظم ABC المطلوب. تم حل المشكلة. 3. بعد وضع إحدى رجلي البوصلة في نقطة عشوائية A1 على الدائرة ، باستخدام الضلع الثاني ، ضع علامة على النقطة A2 على نفس الدائرة وقم بتوصيلها بالنقطة A1. نحصل على الضلع الأول من الشكل السداسي. 3. باستخدام الخطوط العمودية الوسطى على جوانب المضلع ، المسقطة من النقطة O ، نقسم كل جوانبها وجميع أقواس الدائرة المحاطة بين رءوسها المجاورة إلى نصفين.

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

للحصول على القمم / - // - /// من النقاط IV و V و VI ، ارسم خطوطًا أفقية للتقاطع مع الدائرة

نقوم بتوصيل الرؤوس الموجودة في سلسلة مع بعضها البعض. يمكن بناء سباعي الأضلاع عن طريق سحب أشعة من القطب F ومن خلال التقسيمات الفردية للقطر العمودي. تتطابق مراكز كلتا الدائرتين (النقطة O في الشكل 1). يوضح الشكل أيضًا أنصاف أقطار الدوائر المحددة (R) والمنقوشة (r).

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

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

تمت كتابة أمثلة الكود في هذه المقالة بالشفرة الزائفة ، لذا يسهل قراءتها وفهمها من أجل كتابة التنفيذ الخاص بك.

الهندسة

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


مسطحة (يسار) ومدببة (يمين) سداسية علوية

السداسيات لها 6 وجوه. كل وجه مشترك بين اثنين من السداسيات. السداسيات لها 6 نقاط ركنية. يتم مشاركة كل نقطة زاوية بثلاثة أشكال سداسية. يمكنك قراءة المزيد عن المراكز والحواف ونقاط الزوايا في مقالتي حول أجزاء الشبكة (المربعات والسداسيات والمثلثات).

زوايا

في الشكل السداسي المنتظم ، تكون الزوايا الداخلية 120 درجة. هناك ستة "أسافين" ، كل منها عبارة عن مثلث متساوي الأضلاع بزوايا داخلية 60 درجة. نقطة الزاوية أناعلى مسافة (60 ° * i) + 30 ° ، وحدات الحجم من المركز. في الكود:

الوظيفة hex_corner (المركز ، الحجم ، i): var angle_deg = 60 * i + 30 var angle_rad = PI / 180 * angle_deg return Point (center.x + size * cos (angle_rad) ، center.y + size * sin (angle_rad) )
لملء الشكل السداسي ، تحتاج إلى الحصول على رؤوس المضلع من السداسية الزاوية (... ، 0) إلى الزاوية السداسية (... ، 5). لرسم حدود الشكل السداسي ، استخدم هذه الرؤوس ثم ارسم الخط مرة أخرى في الزاوية السداسية (... ، 0).

الفرق بين الاتجاهين هو أن x و y يغيران الأماكن ، مما يتسبب في تغيير الزوايا: زوايا الأشكال السداسية المسطحة هي 0 ° ، 60 ° ، 120 ° ، 180 ° ، 240 ° ، 300 ° ، و السداسيات ذات القمة الحادة هي 30 درجة ، 90 درجة ، 150 درجة ، 210 درجة ، 270 درجة ، 330 درجة.


زوايا الشكل السداسي العلوي المسطح والحاد

الحجم والموقع

الآن نريد وضع عدة أشكال سداسية معًا. في الاتجاه الأفقي ، يكون ارتفاع الشكل السداسي هو الارتفاع = الحجم * 2. المسافة العمودية بين السداسيات المجاورة Vert = الارتفاع * 3/4.

عرض الشكل السداسي هو العرض = sqrt (3) / 2 * الارتفاع. المسافة الأفقية بين السداسيات المجاورة أفق = العرض.

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



نظم الإحداثيات

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

إحداثيات الأوفست

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


تخطيط أفقي فردي- r


الترتيب الأفقي الزوجي


ترتيب عمودي Odd-q


ترتيب عمودي حتى q

إحداثيات مكعب

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

خذ شبكة من المكعبات و انقطعالمستوى القطري عند x + y + z = 0. هذه فكرة غريبة ، لكنها ستساعدنا في تبسيط خوارزميات الشبكة السداسية. على وجه الخصوص ، سنكون قادرين على استخدام العمليات القياسية من الإحداثيات الديكارتية: جمع وطرح الإحداثيات ، والضرب والقسمة على مقياس ، والمسافات.

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


السداسيات


كوبا

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

اكتشف كيفية عمل الإحداثيات التكعيبية لشبكة من الأشكال السداسية. عند تحديد الأشكال السداسية ، يتم تمييز الإحداثيات التكعيبية المقابلة للمحاور الثلاثة.

  1. كل اتجاه لشبكة المكعبات يتوافق الخطوطعلى شبكة من السداسيات. حاول تحديد شكل سداسي مع z يساوي 0 ، 1 ، 2 ، 3 لرؤية الاتصال. الخط مميز باللون الأزرق. جرب نفس الشيء مع x (أخضر) و y (أرجواني).
  2. كل اتجاه شبكة سداسية هو مزيج من اتجاهين لشبكة المكعب. على سبيل المثال ، يقع شمال الشبكة السداسية بين + y و -z ، لذا فإن كل خطوة شمالًا تزيد y بمقدار 1 وتقلل z بمقدار 1.
الإحداثيات التكعيبية هي اختيار معقول لنظام إحداثيات الشبكة السداسية. الشرط هو x + y + z = 0 ، لذلك يجب الحفاظ عليه في الخوارزميات. يضمن الشرط أيضًا أنه سيكون هناك دائمًا إحداثي أساسي لكل سداسي.

هناك العديد من أنظمة الإحداثيات المختلفة للمكعبات والسداسيات. في بعضها ، يختلف الشرط عن x + y + z = 0. لقد أظهرت نظامًا واحدًا فقط من بين العديد من الأنظمة. يمكنك أيضًا إنشاء إحداثيات تكعيبية باستخدام x-y ، و y-z ، و z-x ، والتي سيكون لها مجموعة خاصة بها من الخصائص المثيرة للاهتمام ، لكنني لن أغطيها هنا.

لكن قد تجادل بأنك لا تريد تخزين 3 أرقام للإحداثيات ، لأنك لا تعرف كيفية تخزين الخريطة بهذا الشكل.

الإحداثيات المحورية

نظام إحداثيات محوري ، يسمى أحيانًا نظام إحداثيات "شبه منحرف" ، يتم إنشاؤه من اثنين أو ثلاثة إحداثيات من نظام إحداثيات مكعب. نظرًا لأن لدينا الشرط x + y + z = 0 ، فلا حاجة إلى الإحداثي الثالث. تعد إحداثيات المحور مفيدة لتخزين الخرائط وعرض الإحداثيات للمستخدم. كما هو الحال مع الإحداثيات التكعيبية ، يمكنك استخدام عمليات الجمع والطرح والضرب والقسمة القياسية الديكارتية معهم.

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

ميزة هذا النظام على شبكات الإزاحة هي أن الخوارزميات أكثر قابلية للفهم. عيب النظام هو أن تخزين خريطة مستطيلة أمر غريب بعض الشيء ؛ راجع قسم حفظ الخرائط. بعض الخوارزميات أكثر وضوحًا في الإحداثيات التكعيبية ، ولكن نظرًا لأن لدينا الشرط x + y + z = 0 ، يمكننا حساب الإحداثي الضمني الثالث واستخدامه في هذه الخوارزميات. في مشاريعي ، أسمي المحاور q ، r ، s ، لذا فإن الحالة تبدو مثل q + r + s = 0 ، ويمكنني حساب s = -q - r عند الحاجة.

المحاور

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


إحداثيات الأوفست ، مكعب ومحوري

محورهو الاتجاه الذي يتم فيه زيادة الإحداثي المقابل. العمودي على المحور هو الخط الذي يظل الإحداثي عليه ثابتًا. تُظهر مخططات الشبكة أعلاه خطوطًا متعامدة.

تنسيق التحول

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

ترتبط الإحداثيات المحورية ارتباطًا وثيقًا بالإحداثيات التكعيبية ، لذا فإن التحويل بسيط:

# تحويل الإحداثيات التكعيبية إلى الإحداثيات المحورية q = x r = z # تحويل المحوري إلى إحداثيات تكعيبية x = q z = r y = -x-z
في الكود ، يمكن كتابة هاتين الوظيفتين على النحو التالي:

الدالة cube_to_hex (h): # varial var q = hx var r = hz return Hex (q، r) function hex_to_cube (h): # cubic var x = hq var z = hr var y = -xz return Cube (x، y ، ض)
إحداثيات الإزاحة صعبة بعض الشيء:

السداسيات المجاورة

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

إحداثيات مكعب

يؤدي تحريك مسافة واحدة في إحداثيات الأشكال السداسية إلى تغيير أحد الإحداثيات المكعبة الثلاثة بمقدار +1 والآخر بمقدار -1 (يجب أن يظل المجموع مساويًا لـ 0). يمكن تغيير ثلاثة إحداثيات محتملة عن طريق +1 ، ويمكن تغيير الإحداثيين المتبقيين بمقدار -1. هذا يعطينا ستة تغييرات محتملة. كل منها يتوافق مع أحد اتجاهات الشكل السداسي. إن أبسط وأسرع طريقة هي حساب التغييرات مسبقًا ووضعها في جدول Cube (dx ، dy ، dz) في وقت الترجمة:

اتجاهات متنوعة = [مكعب (+1 ، -1 ، 0) ، مكعب (+1 ، 0 ، -1) ، مكعب (0 ، +1 ، -1) ، مكعب (-1 ، +1 ، 0) ، مكعب ( -1 ، 0 ، +1) ، المكعب (0 ، -1 ، +1)] وظيفة cube_direction (الاتجاه): إرجاع وظيفة الاتجاهات cube_neighbor (عرافة ، اتجاه): إرجاع cube_add (ست عشري ، اتجاه مكعب (اتجاه))

الإحداثيات المحورية

كما كان من قبل ، نبدأ بنظام المكعب. خذ الجدول المكعب (dx ، dy ، dz) وقم بتحويله إلى الجدول Hex (dq ، dr):

اتجاهات متنوعة = [Hex (+1 ، 0) ، Hex (+1 ، -1) ، Hex (0 ، -1) ، Hex (-1 ، 0) ، Hex (-1 ، +1) ، Hex (0 ، +1)] الوظيفة hex_direction (الاتجاه): إرجاع وظيفة الاتجاهات hex_neighbor (عرافة ، الاتجاه): var dir = hex_direction (direction) ، وإرجاع Hex (hex.q + dir.q، hex.r + dir.r)

إحداثيات الأوفست

في الإحداثيات المحورية ، نقوم بإجراء تغييرات بناءً على مكان وجودنا على الشبكة. إذا كنا في إزاحة عمود / صف ، فإن القاعدة تختلف عن حالة العمود / الصف بدون إزاحة.

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

Odd-r
اتجاهات var = [[Hex (+1 ، 0) ، Hex (0 ، -1) ، Hex (-1 ، -1) ، Hex (-1 ، 0) ، Hex (-1 ، +1) ، Hex (0 ، +1)]، [Hex (+1، 0)، Hex (+1، -1)، Hex (0، -1)، Hex (-1، 0)، Hex (0، +1)، Hex ( +1، +1)]] وظيفة offset_neighbor (ست عشري ، اتجاه): var parity = hex.row & 1 var dir = الاتجاهات تعود Hex (hex.col + dir.col، hex.row + dir.row)


حتى ص
var الاتجاهات = [[Hex (+1، 0)، Hex (+1، -1)، Hex (0، -1)، Hex (-1، 0)، Hex (0، +1)، Hex (+1 ، +1)]، [Hex (+1، 0)، Hex (0، -1)، Hex (-1، -1)، Hex (-1، 0)، Hex (-1، +1)، Hex (0 ، +1)]] وظيفة offset_neighbor (ست عشري ، اتجاه): var parity = hex.row & 1 var dir = الاتجاهات تُرجع Hex (hex.col + dir.col، hex.row + dir.row)


شبكة للصفوف الزوجية (EVEN) والفردية (ODD)

Odd-q
اتجاهات var = [[Hex (+1 ، 0) ، Hex (+1 ، -1) ، Hex (0 ، -1) ، Hex (-1 ، -1) ، Hex (-1 ، 0) ، Hex (0 ، +1)]، [Hex (+1، +1)، Hex (+1، 0)، Hex (0، -1)، Hex (-1، 0)، Hex (-1، +1)، Hex (0 ، +1)]] وظيفة offset_neighbor (ست عشري ، اتجاه): var parity = hex.col & 1 var dir = الاتجاهات تُرجع Hex (hex.col + dir.col، hex.row + dir.row)


إيفن-كيو
var الاتجاهات = [[Hex (+1، +1)، Hex (+1، 0)، Hex (0، -1)، Hex (-1، 0)، Hex (-1، +1)، Hex (0 ، +1)]، [Hex (+1، 0)، Hex (+1، -1)، Hex (0، -1)، Hex (-1، -1)، Hex (-1، 0)، Hex (0 ، +1)]] وظيفة offset_neighbor (ست عشري ، اتجاه): var parity = hex.col & 1 var dir = الاتجاهات تُرجع Hex (hex.col + dir.col، hex.row + dir.row)


الشبكة للأعمدة الزوجية (EVEN) والفردية (ODD)

الأقطار

يؤدي التحرك في المساحة "القطرية" في إحداثيات الأشكال السداسية إلى تغيير أحد الإحداثيات المكعبة الثلاثة بمقدار ± 2 والإحداثيات الأخرى بمقدار ∓1 (يجب أن يظل المجموع مساويًا للصفر).

الأقطار المتغيرة = [مكعب (+2 ، -1 ، -1) ، مكعب (+1 ، +1 ، -2) ، مكعب (-1 ، +2 ، -1) ، مكعب (-2 ، +1 ، +1 ) ، مكعب (-1 ، -1 ، +2) ، مكعب (+1 ، -2 ، +1)] وظيفة cube_diagonal_neighbor (عرافة ، اتجاه): إرجاع cube_add (ست عشري ، قطري)
كما في السابق ، يمكننا تحويل هذه الإحداثيات إلى إحداثيات محورية ، مع تجاهل أحد الإحداثيات الثلاثة ، أو التحويل إلى إحداثيات متوازنة ، بعد حساب النتائج.


المسافات

إحداثيات مكعب

في نظام الإحداثيات التكعيبية ، كل سداسي هو مكعب ثلاثي الأبعاد. السداسيات المجاورة هي 1 في الشبكة السداسية ، ولكن 2 في شبكة المكعب. هذا يجعل من السهل حساب المسافات. في شبكة من المربعات ، تكون مسافات مانهاتن هي القيمة المطلقة (dx) + القيمة المطلقة (dy). في شبكة من المكعبات ، تكون مسافات مانهاتن هي القيمة المطلقة (dx) + القيمة المطلقة (dy) + القيمة المطلقة (dz). المسافة في شبكة الأشكال السداسية تساوي نصفهم:

دالة cube_distance (a، b): إرجاع (القيمة المطلقة (a.x - b.x) + القيمة المطلقة (a.y - b.y) + القيمة المطلقة (a.z - b.z)) / 2
ما يكافئ هذا الترميز هو التعبير عن أن أحد الإحداثيات الثلاثة يجب أن يكون مجموع الاثنين الآخرين ، ثم الحصول عليه كمسافة. يمكنك اختيار نموذج التقسيم أو نموذج القيمة القصوى أدناه ، لكنهما يعطيان نفس النتيجة:

دالة cube_distance (a، b): إرجاع max (abs (a.x - b.x)، abs (a.y - b.y)، abs (a.z - b.z))
في الشكل ، يتم تمييز القيم القصوى بالألوان. لاحظ أيضًا أن كل لون يمثل واحدًا من ستة اتجاهات "مائلة".

GIF


الإحداثيات المحورية

في النظام المحوري ، يتم التعبير ضمنيًا عن الإحداثي الثالث. دعنا نحول من محوري إلى مكعب لحساب المسافة:

دالة hex_distance (a، b): var ac = hex_to_cube (a) var bc = hex_to_cube (b) إرجاع cube_distance (ac ، bc)
إذا كان المترجم في حالتك مضمّنًا hex_to_cube و cube_distance ، فسيُنشئ الكود التالي:

دالة hex_distance (a، b): return (abs (a.q - b.q) + abs (a.q + a.r - b.q - b.r) + abs (a.r - b.r)) / 2
هناك العديد من الطرق المختلفة لكتابة المسافات بين الأشكال السداسية في الإحداثيات المحورية ، ولكن بغض النظر عن طريقة الكتابة يتم استخراج المسافة بين الأشكال السداسية في النظام المحوري من مسافة مانهاتن في النظام المكعب... على سبيل المثال ، يتم الحصول على "اختلاف الاختلافات" الموصوف عن طريق كتابة a.q + a.r - b.q - b.r كـ a.q - b.q + a.r - b.r وباستخدام صيغة القيمة القصوى بدلاً من شكل التقسيم cube_distance. كلها متشابهة إذا رأيت العلاقة مع الإحداثيات التكعيبية.

إحداثيات الأوفست

كما هو الحال مع الإحداثيات المحورية ، نقوم بتحويل إحداثيات الإزاحة إلى إحداثيات تكعيبية ثم نستخدم المسافة التكعيبية.

دالة offset_distance (أ ، ب): var ac = offset_to_cube (a) var bc = offset_to_cube (b) إرجاع cube_distance (ac ، bc)
سنستخدم نفس النمط للعديد من الخوارزميات: التحويل من الأشكال السداسية إلى المكعبات ، وتشغيل النسخة التكعيبية من الخوارزمية ، وتحويل النتائج التكعيبية إلى إحداثيات سداسية عشرية (إحداثيات محورية أو الإزاحة).

خطوط الرسم

كيف أرسم خطًا من مسدس إلى آخر؟ أنا أستخدم الاستيفاء الخطي لرسم الخطوط. يتم أخذ عينات من الخط بشكل موحد عند نقاط N + 1 ويتم حسابها في أي شكل سداسي توجد هذه العينات.

GIF


  1. نحسب أولاً N ، والتي ستكون المسافة السداسية بين نقطتي النهاية.
  2. ثم قمنا بتجربة N + 1 بشكل موحد بين النقطتين A و B. باستخدام الاستيفاء الخطي ، حدد أنه بالنسبة لقيم i من 0 إلى N ، بما في ذلك ، ستكون كل نقطة A + (B - A) * 1.0 / N * أنا. في الشكل ، تظهر نقاط التحكم هذه باللون الأزرق. والنتيجة هي إحداثيات النقطة العائمة.
  3. قم بتحويل كل نقطة تحكم (عائمة) إلى شكل سداسي (int). تسمى الخوارزمية cube_round (انظر أدناه).
ضع كل ذلك معًا لرسم خط من أ إلى ب:

الوظيفة lerp (a ، b ، t): // لعودة العائمة a + (b - a) * t function cube_lerp (a، b، t): // بالنسبة للسداسيات ، إرجاع المكعب (lerp (ax ، bx ، t) ، lerp (ay، by، t)، lerp (az، bz، t)) دالة cube_linedraw (a، b): var N = cube_distance (a، b) var results = لكل 0 ≤ i ≤ N: results.append ( cube_round (cube_lerp (a، b، 1.0 / N * i))) ترجع النتائج
ملحوظات:

  • هناك أوقات تُرجع فيها cube_lerp نقطة بالضبط على الحافة بين شكلين سداسيين. ثم يقوم cube_round بإزاحته بطريقة أو بأخرى. تبدو الخطوط أفضل عندما تتحرك في نفس الاتجاه. يمكن القيام بذلك عن طريق إضافة مكعب epsilon-hex (1e-6 ، 1e-6 ، -2e-6) إلى إحدى نقطتي النهاية أو كليهما قبل بدء الحلقة. سيؤدي هذا إلى "دفع" الخط في اتجاه واحد بحيث لا يصطدم بحدود الحافة.
  • تعادل خوارزمية خط DDA في شبكات المربعات N إلى أقصى مسافة على طول كل محور. نفعل الشيء نفسه في الفضاء المكعب ، وهو مشابه للمسافة في شبكة من الأشكال السداسية.
  • يجب أن ترجع الدالة cube_lerp مكعبًا بإحداثيات عائمة. إذا كنت تقوم بالبرمجة بلغة مكتوبة بشكل ثابت ، فلا يمكنك استخدام نوع المكعب. بدلاً من ذلك ، يمكنك تحديد نوع FloatCube ، أو وظيفة مضمنة في كود رسم الخط إذا كنت لا تريد تحديد نوع آخر.
  • يمكنك تحسين التعليمات البرمجية الخاصة بك عن طريق cube_lerp المضمنة ثم حساب B.x-A.x و B.x-A.y و 1.0 / N خارج الحلقة. يمكن تحويل الضرب إلى جمع متكرر. ستكون النتيجة شيئًا مثل خوارزمية خط DDA.
  • أستخدم الإحداثيات المحورية أو التكعيبية لرسم الخطوط ، ولكن إذا كنت تريد العمل مع إحداثيات الإزاحة ، فتعلم.
  • هناك العديد من الخيارات لرسم الخطوط. أحيانًا يكون الطلاء الزائد مطلوبًا. لقد أرسلوا لي رمز رسم الخطوط ذات الطلاء السداسي ، لكني لم أبحث في الأمر بعد.

نطاق السفر

نطاق الإحداثيات

بالنسبة لمركز معين لشكل سداسي ونطاق من N ، ما هي الأشكال السداسية التي تقع في نطاق N خطوات منه؟

يمكننا القيام بالعمل المعاكس من صيغة المسافة بين المسافة السداسية = max (abs (dx) ، abs (dy) ، abs (dz)). للعثور على جميع الأشكال السداسية داخل N ، نحتاج إلى max (abs (dx) ، abs (dy) ، abs (dz)) ≤ N. هذا يعني أن جميع القيم الثلاثة مطلوبة: abs (dx) ≤ N و abs (dy) ≤ N و abs (dz) ≤ N. بإزالة القيمة المطلقة ، نحصل على -N ≤ dx ≤ N و -N ≤ dy ≤ N و -N ≤ dz ≤ N. في الكود ، ستكون هذه حلقة متداخلة:

نتائج فار = لكل -N ≤ dx ≤ N: لكل -N ≤ dy ≤ N: لكل -N ≤ dz ≤ N: إذا كان dx + dy + dz = 0: results.append (cube_add (مركز ، مكعب (dx ، dy، dz)))
ستعمل هذه الحلقة ، لكنها ستكون غير فعالة تمامًا. من بين جميع قيم dz التي نكررها في الحلقة ، هناك واحدة فقط تفي بالفعل بشرط المكعبات dx + dy + dz = 0. بدلاً من ذلك ، سنحسب مباشرةً قيمة dz التي تفي بالشرط:

نتائج Var = لكل -N ≤ dx ≤ N: لكل max (-N، -dx-N) ≤ dy ≤ min (N، -dx + N): var dz = -dx-dy results.append (cube_add ( المركز ، المكعب (dx ، dy ، dz)))
تعمل هذه الدورة فقط على طول الإحداثيات المطلوبة. في الشكل ، كل نطاق عبارة عن زوج من الخطوط. كل سطر هو عدم المساواة. نأخذ كل الأشكال السداسية التي تحقق ست متباينات.

GIF


نطاقات متداخلة

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

يمكنك التعامل مع هذه المشكلة من حيث الجبر أو الهندسة. جبريًا ، يتم التعبير عن كل منطقة في صورة شروط عدم مساواة بالصيغة -N ≤ dx ≤ N ، وعلينا إيجاد تقاطع هذه الشروط. هندسيًا ، كل منطقة عبارة عن مكعب في فضاء ثلاثي الأبعاد ، وسوف نتقاطع مع مكعبين في مساحة ثلاثية الأبعاد للحصول على متوازي سطوح مستطيل في مساحة ثلاثية الأبعاد. ثم نقوم بإسقاطه مرة أخرى على المستوى x + y + z = 0 للحصول على الأشكال السداسية. سأحل هذه المشكلة جبريًا.

أولاً ، نعيد كتابة الشرط -N ≤ dx ≤ N بشكل أكثر عمومية x min ≤ x ≤ x max ، ونأخذ x min = center.x - N و x max = center.x + N. لنفعل الشيء نفسه بالنسبة إلى y و z ، مما ينتج عنه عرض عام للكود من القسم السابق:

نتائج Var = لكل xmin ≤ x ≤ xmax: لكل حد أقصى (ymin، -x-zmax) ≤ y ≤ min (ymax، -x-zmin): var z = -xy results.append (Cube (x، y، ض))
تقاطع النطاقين a ≤ x ≤ b و c x ≤ d هو max (a، c) ≤ x ≤ min (b، d). نظرًا لأن مساحة الأشكال السداسية يتم التعبير عنها كنطاقات فوق x و y و z ، يمكننا بشكل فردي تقاطع كل من نطاقات x و y و z ثم استخدام حلقة متداخلة لإنشاء قائمة من الأشكال السداسية عند التقاطع. لمنطقة واحدة من السداسيات ، نأخذ x min = H.x - N و x max = H.x + N ، وبالمثل لـ y و z. بالنسبة لتقاطع منطقتين من الأشكال السداسية ، فإننا نأخذ x min = max (H1.x - N ، H2.x - N) و x max = min (H1.x + N ، H2.x + N) ، وبالمثل بالنسبة لـ y و ض. يعمل نفس النمط مع تقاطع ثلاث مناطق أو أكثر.

GIF


عوائق

إذا كانت هناك عوائق ، فمن الأسهل ملؤها بمسافة محدودة (اتساع البحث الأول). في الشكل أدناه ، نحن مقيدون بأربع حركات. في الكود ، الهامش [k] عبارة عن مصفوفة من جميع الأشكال السداسية التي يمكن الوصول إليها بخطوات k. مع كل تمريرة خلال الحلقة الرئيسية ، نقوم بتوسيع المستوى k-1 إلى المستوى k.

الوظيفة cube_reachable (البداية ، الحركة): var تمت زيارتها = set () أضف بداية إلى var fringes الذي تمت زيارته = fringes.append () لكل 1< k ≤ movement: fringes.append() for each cube in fringes: for each 0 ≤ dir < 6: var neighbor = cube_neighbor(cube, dir) if neighbor not in visited, not blocked: add neighbor to visited fringes[k].append(neighbor) return visited

يتحول

بالنسبة إلى متجه سداسي معين (الفرق بين الشكلين السداسيين) ، قد نحتاج إلى تدويره بحيث يشير إلى سداسي آخر. من السهل القيام بالإحداثيات التكعيبية ، إذا التزمت بدوران 1/6 من الدائرة.

يؤدي الدوران بزاوية 60 درجة إلى اليمين إلى إزاحة كل إحداثي موضعًا واحدًا إلى اليمين:

[x، y، z] إلى [-z، -x، -y]
يؤدي الدوران بمقدار 60 درجة إلى اليسار إلى إزاحة كل إحداثي موضعًا إلى اليسار:

[x، y، z] إلى [-y، -z، -x]



"بعد أن لعبت" [في المقالة الأصلية] مع المخطط ، ستلاحظ أن كل دور بمقدار 60 درجة التغييراتعلامات وجسديًا "يدور" الإحداثيات. بعد دوران 120 درجة ، تكون العلامات هي نفسها مرة أخرى. دوران 180 درجة يغير العلامات ، لكن الإحداثيات يتم تدويرها إلى موضعها الأصلي.

فيما يلي التسلسل الكامل لتدوير موضع P حول موضع C المركزي ، مما يؤدي إلى وضع R جديد:

  1. تحويل المواضع P و C إلى إحداثيات تكعيبية.
  2. احسب المتجه بطرح المركز: P_from_C = P - C = Cube (P.x - C.x، P.y - C.y، P.z - C.z).
  3. قم بتدوير المتجه P_from_C كما هو موضح أعلاه وقم بتعيين المتجه الناتج بالتعيين R_from_C.
  4. قم بتحويل المتجه مرة أخرى إلى الموضع عن طريق إضافة المركز: R = R_from_C + C = Cube (R_from_C.x + C.x ، R_from_C.y + C.y ، R_from_C.z + C.z).
  5. قم بتحويل الموضع التكعيبي R مرة أخرى إلى نظام الإحداثيات المطلوب.
هناك عدة مراحل للتحول ، لكن كل منها بسيط للغاية. من الممكن تقصير بعض هذه الخطوات عن طريق تحديد التدوير مباشرة في إحداثيات المحور ، لكن المتجهات السداسية لا تعمل مع إحداثيات الإزاحة ، ولا أعرف كيفية تقصير الخطوات لإحداثيات الإزاحة. راجع أيضًا مناقشة تبادل المكدس لطرق أخرى لحساب المحور.

خواتم

حلقة بسيطة

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

الدالة cube_ring (المركز ، الشعاع): نتائج var = # هذا الرمز لا يعمل مع نصف القطر == 0 ؛ هل تفهم لماذا var cube = cube_add (المركز ، cube_scale (cube_direction (4) ، الشعاع)) لكل 0 ≤ i< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
في هذا الكود ، يبدأ المكعب من الحلقة الموضحة بسهم كبير من المركز إلى ركن الرسم التخطيطي. اخترت الزاوية 4 للبدء لأنها تطابق المسار الذي تتحرك فيه أرقام الاتجاه الخاصة بي. قد تحتاج إلى زاوية بداية مختلفة. في كل خطوة من الحلقة الداخلية ، يتحرك المكعب سداسيًا واحدًا حول الحلقة. بعد خطوات نصف قطرها 6 * ، ينتهي من حيث بدأ.


حلقات لولبية

من خلال اجتياز الحلقات في شكل حلزوني ، يمكننا ملء الأجزاء الداخلية للحلقات:

الدالة cube_spiral (المركز ، نصف القطر): نتائج var = لكل نصف قطر 1 ≤ k ≤: النتائج = النتائج + cube_ring (المركز ، k) تُرجع النتائج



مساحة الشكل السداسي الكبير هي مجموع كل الدوائر زائد 1 للمركز. استخدم هذه الصيغة لحساب المنطقة.

يمكن أيضًا استخدام عبور السداسيات بهذه الطريقة لحساب نطاق الحركة (انظر أعلاه).

منطقة الرؤية

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

يمكن أن تكون هذه الخوارزمية بطيئة على مساحات كبيرة ، ولكن من السهل تنفيذها ، لذلك أوصي بالبدء بها.

GIF



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

أريد توسيع هذا البرنامج التعليمي بشكل أكبر. أملك

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

السداسي المنتظم هو مضلع له ستة أضلاع متساوية وزوايا متساوية. نعلم من الدورة المدرسية أن لها الخصائص التالية:

  • يتوافق طول أضلاعه مع نصف قطر الدائرة المقيدة. من بين كل شيء ، فقط السداسي العادي له هذه الخاصية.
  • الزاويتان متساويتان ، وحجم كل منهما 120 درجة.
  • يمكن إيجاد محيط الشكل السداسي بالصيغة P = 6 * R ، إذا كان نصف قطر الدائرة المُحددة حوله معروفًا ، أو P = 4 * √ (3) * r ، إذا كانت الدائرة منقوشة فيها. R و r هما نصف قطر الدائرة والقطب.
  • يتم تحديد المساحة التي يشغلها مسدس منتظم على النحو التالي: S = (3 * √ (3) * R 2) / 2. إذا كان نصف القطر غير معروف ، فبدلاً من استبداله بطول أحد الأضلاع - كما تعلم ، فإنه يتوافق مع طول نصف قطر الدائرة المُحددة.

يحتوي الشكل السداسي العادي على ميزة مثيرة للاهتمام تجعله منتشرًا للغاية في الطبيعة - فهو قادر على ملء أي سطح من السطح دون تداخل وفجوات. حتى أن هناك ما يسمى بـ Pal's lemma ، والذي بموجبه يعتبر السداسي المنتظم مع جانب يساوي 1 / √ (3) غطاءً شاملاً ، أي أنه يمكن أن يغطي أي مجموعة بقطر وحدة واحدة.

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

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

المحتوى:

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

خطوات

1 ارسم مسدسًا مثاليًا باستخدام البوصلة

  1. 1 ارسم دائرة باستخدام البوصلة.أدخل القلم الرصاص في البوصلة. قم بتمديد البوصلة إلى العرض المطلوب لنصف قطر دائرتك. يمكن أن يتراوح نصف القطر من بضعة سنتيمترات إلى عشرة سنتيمترات. بعد ذلك ، ضع بوصلة بقلم رصاص على الورق وارسم دائرة.
    • في بعض الأحيان يكون من الأسهل رسم نصف الدائرة أولاً ثم النصف الآخر.
  2. 2 انقل إبرة البوصلة إلى حافة الدائرة.ضعه فوق الدائرة. لا تغير زاوية وموضع البوصلة.
  3. 3 ضع علامة قلم رصاص صغيرة على حافة الدائرة.اجعله واضحًا ، لكن ليس مظلمًا جدًا لأنك ستمحوه لاحقًا. تذكر أن تحافظ على الزاوية التي حددتها للبوصلة.
  4. 4 انقل إبرة البوصلة إلى العلامة التي رسمتها للتو.ضع الإبرة مباشرة على العلامة.
  5. 5 ضع علامة أخرى بالقلم الرصاص على حافة الدائرة.وهكذا ، ستضع علامة ثانية على مسافة معينة من العلامة الأولى. استمر في التحرك في اتجاه واحد.
  6. 6 قم بعمل أربع علامات أخرى بنفس الطريقة.يجب عليك العودة إلى العلامة الأصلية. إذا لم يكن الأمر كذلك ، فمن المرجح أن الزاوية التي تمسك بها البوصلة وعملت العلامات قد تغيرت. ربما حدث هذا بسبب حقيقة أنك ضغطت عليه بشدة أو ، على العكس من ذلك ، خففته قليلاً.
  7. 7 قم بتوصيل العلامات بالمسطرة.الأماكن الستة التي تتقاطع فيها علاماتك مع حافة الدائرة هي الرؤوس الستة للشكل السداسي. باستخدام مسطرة وقلم رصاص ، ارسم خطوطًا مستقيمة تربط العلامات المتجاورة.
  8. 8 امسح كل من الدائرة والعلامات الموجودة على حواف الدائرة وأي علامات أخرى قمت بإنشائها. بمجرد مسح جميع خطوط البناء الخاصة بك ، يجب أن يكون السداسي المثالي جاهزًا.

2 ارسم مسدسًا خشنًا باستخدام جسم دائري ومسطرة

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

3 ارسم مسدسًا خشنًا بقلم رصاص واحد

  1. 1 ارسم خطًا أفقيًا.لرسم خط مستقيم بدون مسطرة ، ارسم ببساطة نقطتي البداية والنهاية لخطك الأفقي. ثم ضع القلم الرصاص في نقطة البداية ومد الخط نحو النهاية. يمكن أن يصل طول هذا الخط إلى بضعة سنتيمترات.
  2. 2 ارسم خطين قطريين من نهايات الخط الأفقي.يجب أن يكون الخط القطري على اليسار متجهًا للخارج بنفس طريقة الخط القطري على اليمين. يمكنك أن تتخيل أن هذه الخطوط تشكل زاوية مقدارها 120 درجة بالنسبة للخط الأفقي.
  3. 3 ارسم خطين أفقيين آخرين ينبثقان من الخطوط الأفقية الأولى المرسومة للداخل.سيؤدي ذلك إلى إنشاء صورة معكوسة لأول خطين قطريين. يجب أن يكون الخط السفلي الأيسر انعكاسًا للخط الأيسر العلوي ويجب أن يكون الخط السفلي الأيمن انعكاسًا للخط الأيمن العلوي. بينما يجب أن تبدو الخطوط الأفقية العلوية للخارج ، يجب أن تنظر الخطوط السفلية إلى الداخل من القاعدة.
  4. 4 ارسم خطًا أفقيًا آخر يربط بين الخطين القطريين السفليين.بهذه الطريقة سترسم قاعدة السداسي. من الناحية المثالية ، يجب أن يكون هذا الخط موازٍ للخط الأفقي العلوي. الآن لقد أكملت الخاص بك الشكل السداسي.
  • يجب أن يكون قلم الرصاص والبوصلة حادًا لتقليل الأخطاء من العلامات العريضة جدًا.
  • إذا قمت ، باستخدام طريقة البوصلة ، بتوصيل كل علامة بدلاً من العلامات الستة ، فستحصل على مثلث متساوي الأضلاع.

تحذيرات

  • البوصلة أداة حادة جدًا ، كن حذرًا جدًا معها.

مبدأ التشغيل

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

ماذا تحتاج

  • ورق
  • قلم
  • مسطرة
  • زوج من البوصلات
  • شيء يمكنك وضعه تحت الورقة لمنع انزلاق إبرة البوصلة.
  • ممحاة

قريب