إنشاء دي كاستلجو · أوزان برنشتاين

منحنى بيزييه

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

منحنيات بيزييه في هذا التصور

يتحدّد منحنى بيزييه من الدرجة ⁦n⁩ بعدد ⁦n + 1⁩ من نقاط التحكّم P0,…,PnP_0, \dots, P_n: نقطتان تعطيان قطعة مستقيمة، وثلاث منحنى تربيعيًا، وأربع المنحنى التكعيبي المستخدم في برامج الرسم. تُستخرج نقطته B(t)B(t)، الحمراء في الرسم، بتكرار أخذ النسبة ⁦t⁩ على طول كل ضلع من مضلع التحكّم. يمكنك هنا تحريك النقاط وتمرير ⁦t⁩ من ⁦0⁩ إلى ⁦1⁩، ومشاهدة قطع الإنشاء وهي تترك خيوطًا ترسم ملامح المنحنى.

يعرض الإنشاء مضلعات كل مستوى عند قيمة ⁦t⁩ الحالية، ولكل منها ضلع أقل من المستوى السابق. يمرّر تتبّع قيمة ⁦t⁩ من ⁦0⁩ إلى ⁦1⁩، تاركًا خيوط الإنشاء عند خطوات متساوية من ⁦t⁩، ويلوّنها بحسب ⁦t⁩. أما المنحنى نفسه فهو الخط الرفيع.

إذا كتبنا الإنشاء بصيغ رياضية، صار سلّمًا من المتوسطات الموزونة: خوارزمية دي كاستلجو.

Pi0=Pi,Pik(t)=(1−t) Pik−1(t)+t Pi+1k−1(t),B(t)=P0n(t).P_i^0 = P_i, \qquad P_i^k(t) = (1 - t)\,P_i^{k-1}(t) + t\,P_{i+1}^{k-1}(t), \qquad B(t) = P_0^n(t) .

عند فكّ عمليات الضرب عبر المستويات، يصبح معامل كل نقطة تحكّم مجموع جداءات، في كل منها ⁦n⁩ من العوامل، وكل عامل إما ⁦1 − t⁩ أو ⁦t⁩. بالنسبة إلى PiP_i، يحتوي كل جداء على ⁦i⁩ من العوامل ⁦t⁩ بالضبط، ويوجد (ni)\binom{n}{i} من هذه الجداءات، لذا

B(t)=∑i=0nbi,n(t) Pi,bi,n(t)=(ni)ti(1−t)n−i.B(t) = \sum_{i=0}^{n} b_{i,n}(t)\, P_i, \qquad b_{i,n}(t) = \binom{n}{i} t^{i} (1 - t)^{n-i} .

هذه الأوزان هي كثيرات حدود برنشتاين، ويعرضها الرسم الصغير. عند 0≤t≤10 \le t \le 1 لا تكون سالبة أبدًا ومجموعها ⁦1⁩، لذا فإن B(t)B(t) متوسط موزون للنقاط، ولا يخرج المنحنى من غلافها المحدّب. إزاحة نقطة واحدة PiP_i بمتجه ⁦Δ⁩ تزيح كل نقطة على المنحنى بمقدار bi,n(t) Δb_{i,n}(t)\,\Delta، وتكون الإزاحة أكبر قرب t=i/nt = i/n. وليس هذا الجزء من المنحنى دائمًا الأقرب إلى نقطة التحكّم.

عند ⁦t = 0⁩ يبدأ كل مستوى من P0P_0، لذا B(0)=P0B(0) = P_0، وبالمثل B(1)=PnB(1) = P_n. يمر المنحنى بنقطتي نهايته ولا يمر عادةً ببقية النقاط. المستوى الأخير من الإنشاء قطعة مستقيمة واحدة، وما لم تنكمش إلى نقطة، فإنها تقع على مماس المنحنى:

B′(t)=n(P1n−1(t)−P0n−1(t)),B′(0)=n (P1−P0),B′(1)=n (Pn−Pn−1).B'(t) = n \bigl(P_1^{n-1}(t) - P_0^{n-1}(t)\bigr), \qquad B'(0) = n\,(P_1 - P_0), \qquad B'(1) = n\,(P_n - P_{n-1}) .

إذن ينطلق المنحنى من P0P_0 باتجاه P1P_1، ويصل إلى PnP_n قادمًا من جهة Pn−1P_{n-1}، إلا إذا تطابقت النقطتان عند تلك النهاية. لهذا يعرض برنامج الرسم نقطتي التحكّم الوسطيتين للمنحنى التكعيبي على هيئة مقبضين يمتدان من نهايتيه.

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

يقسم الإنشاء عند ⁦t = s⁩ المنحنى إلى جزأين أيضًا. النقاط الأولى في مستوياته هي نقاط التحكّم للجزء من ⁦0⁩ إلى ⁦s⁩، والأخيرة هي نقاط التحكّم للجزء من ⁦s⁩ إلى ⁦1⁩، وهو ما يعرضه قسّم. مع تكرار التنصيف، تقترب مضلعات الأجزاء من المنحنى. ويسلك ارفع الدرجة الاتجاه الآخر: نقطة تحكّم إضافية، والمنحنى نفسه، ومضلع أقرب إليه. أما إضافة نقطة بالضغط على الرسم فتغيّر المنحنى.

طوّر بول دو كاستلجو هذا الإنشاء في سيتروين عام ⁦1959⁩، وتوصّل بيير بيزييه في رينو إلى المنحنيات نفسها بصورة مستقلة، ونشرها في ستينيات القرن العشرين.

أمور تستحق الانتباه

  • لا يلزم أن تقطع خطوات ⁦t⁩ المتساوية مسافات متساوية على طول المنحنى.
  • المنطقة الأشد لونًا ليست المنحنى، بل هي أكثر مواضع تراكب الخيوط، وقد تقع بعيدًا قليلًا عن المنحنى.

مواضيع ذات صلة