
منحنيات بيزير
المنطق الكامن وراء بناء منحنيات Bezier مفهوم جيدًا من الرسوم المتحركة التالية:

للحصول على صيغة مباشرة من تمثيل رسومي ، يكفي تحديد دالة مساعدة للاستيفاء الخطي بين نقطتين ، وعندما تتغير المعلمة t من 0 إلى 1 ، فإنها تُرجع القيم الوسيطة من a إلى b :
ملحوظة
- lerp, blend, mix - . .
بمساعدتها ، يمكنك العثور باستمرار على النقاط الضرورية - أولًا
و
ومن ثم تجد من خلالهم
إذا رغبت في ذلك ، يمكنك استبدال الوظائف ببعضها البعض وتقليلها - على الرغم من أن هذا لا يبسط الحسابات بشكل خاص ، إلا أنه سيسمح لك بتعميم المنحنيات على عدد تعسفي من نقاط التحكم (عبر العديد من حدود برنشتاين). في حالتنا ، نحصل على
يتم تحقيق زيادة ترتيب المنحنيات بشكل تافه - لا يتم تعيين النقاط الأولية ثابتة ، ولكن نتيجة الاستيفاء بين n + 1 نقاط تحكم أخرى:

ملحوظة
, . .
منحنيات دائرية
قوس الدائرة
لبناء قوس لدائرة بطريقة مماثلة ، من الضروري تحديد منطق البناء المناسب - عن طريق القياس مع رسم دائرة بالبوصلة.

في البداية ، لا نعرف مركز الدائرة d - يتم العثور عليها من خلال تقاطع الخطوط العمودية مع الظل عند النقطتين أ و ب (المشار إليها فيما يلي بالعقدة) ؛ يتم تحديد الظلال نفسها باستخدام النقطة ج (المشار إليها فيما بعد بالمبدأ التوجيهي). لإنشاء قوس دائري عشوائي (أقل من 180 درجة) ، يكفي أن تكون المسافات من نقطة الاتجاه إلى النقاط العقدية هي نفسها.

قوس القطع الناقص
يعد إنشاء قوس القطع الناقص أكثر صعوبة - فأنت بحاجة إلى متجهين يدوران في اتجاهات مختلفة ( مزيد من التفاصيل هنا )

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

يمكن رؤية كيفية تغير شكل المنحنى اعتمادًا على موضع نقطة الدليل في الرسم المتحرك التالي:

الخوارزمية
نظرًا لأن لدينا هنا دوران على مستوى ثنائي الأبعاد ، فمن الملائم وصف الرياضيات الخاصة ببناء هذه المنحنيات من حيث الأعداد المركبة.
1) ابحث عن نقطة تقاطع القواعد المعيارية للظلال المرسومة من نقطة الاتجاه إلى النقاط العقدية:
(هنا تشير علامة النجمة إلى الاقتران المعقد).
2) بمعرفة د ، نجد أطوال القواعد
ومجموعها وفرقها
3) ابحث عن متجه الوحدة الذي يبدأ منه البناء
ملحوظة
sign(x).
4) أوجد المسارات الزاوية التي يجب أن يمر بها كل متجه
ملحوظة
, — . — , . . .
, — , - ; .
. ,
— - .
, — , - ; .
. ,
— - .
5) بالتغيير المتتالي لـ t من 0 إلى 1 بخطوة ما ، نجد النقطة التي تنتمي إلى المنحنى بواسطة الصيغة
خطوط دائرية
تمامًا مثل منحنيات Bézier ، يمكن دمج هذه المنحنيات لإنشاء خطوط متواصلة متعددة الأجزاء. لضمان السلاسة عند نقاط الربط (الإرساء) ، يجب أن تكون نقطة الربط محاذية لنقطتي اتجاه متجاورتين. للقيام بذلك ، يمكنك تحديد نقاط الربط ليس بشكل صريح ، ولكن من خلال استيفاء نقاط الاتجاه. لا يمكن أيضًا تحديدها على الإطلاق ، حيث يتم حسابها تلقائيًا تمامًا - على سبيل المثال ، كمتوسط بين نقاط الدليل:

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

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

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