خوارزمية دي كاستيلجو
في مجال التحليل العددي الرياضي ، تُعدّ خوارزمية دي كاستيلجو طريقةً تكراريةً لتقييم كثيرات الحدود في صيغة برنشتاين أو منحنيات بيزير ، وقد سُمّيت نسبةً إلى مخترعها بول دي كاستيلجو . كما يُمكن استخدام خوارزمية دي كاستيلجو لتقسيم منحنى بيزير واحد إلى منحنيين عند قيمة مُعامل اختيارية.
تتميز الخوارزمية بالاستقرار العددي [ 1 ] عند مقارنتها بالتقييم المباشر لكثيرات الحدود. ويبلغ التعقيد الحسابي لهذه الخوارزميةحيث يمثل d عدد الأبعاد، و n عدد نقاط التحكم. توجد بدائل أسرع. [ 2 ] [ 3 ]
تعريف
منحنى بيزير(درجة)، مع نقاط تحكميمكن كتابة ) بصيغة برنشتاين على النحو التالي أينهي متعددة حدود أساس برنشتاين المنحنى عند النقطةيمكن تقييمها باستخدام علاقة التكرار
ثم تقييمعند النقطةيمكن تقييمها فيالعمليات. النتيجةيُعطى بواسطة
علاوة على ذلك، منحنى بيزيريمكن تقسيمها عند نقطةإلى منحنيين مع نقاط تحكم خاصة بهما:
التفسير الهندسي
التفسير الهندسي لخوارزمية دي كاستيلجو واضح ومباشر.
- لنفترض منحنى بيزير بنقاط تحكم. من خلال توصيل النقاط المتتالية، نقوم بإنشاء المضلع المتحكم في المنحنى.
- الآن، قسّم كل قطعة مستقيمة من هذا المضلع بنسبةثم قم بتوصيل النقاط التي تحصل عليها. بهذه الطريقة ستصل إلى المضلع الجديد الذي يحتوي على قطعة أقل.
- كرر العملية حتى تصل إلى نقطة واحدة - هذه هي نقطة المنحنى التي تتوافق مع المعلمة.
توضح الصورة التالية هذه العملية لمنحنى بيزير مكعب:
![]()
لاحظ أن النقاط الوسيطة التي تم إنشاؤها هي في الواقع نقاط تحكم لمنحنيين جديدين من منحنيات بيزير، وكلاهما يتطابق تمامًا مع المنحنى القديم. لا تقوم هذه الخوارزمية بتقييم المنحنى عندلكنها تقسم المنحنى إلى جزأين عند، ويقدم معادلات المنحنيين الفرعيين في شكل بيزير.
التفسير المذكور أعلاه صالح لمنحنى بيزير غير العقلاني. لتقييم منحنى بيزير العقلاني في، قد نسقط النقطة فيعلى سبيل المثال، قد يكون للمنحنى في ثلاثة أبعاد نقاط تحكم خاصة به.والأوزانتم إسقاطها على نقاط التحكم المرجحةثم تتابع الخوارزمية عملها كالمعتاد، مع إجراء الاستيفاء في. يمكن إسقاط النقاط رباعية الأبعاد الناتجة مرة أخرى في الفضاء ثلاثي الأبعاد باستخدام تقسيم المنظور .
بشكل عام، تُكافئ العمليات على منحنى (أو سطح) كسري العمليات على منحنى غير كسري في فضاء إسقاطي . وغالبًا ما يكون هذا التمثيل، المتمثل في "نقاط التحكم الموزونة" والأوزان، مفيدًا عند تقييم المنحنيات الكسرية.
الترميز
عند إجراء الحساب يدويًا، من المفيد كتابة المعاملات في شكل مثلث كما يلي: عند اختيار نقطة t = 0 لتقييم متعددة حدود برنشتاين، يمكننا استخدام قطري مخطط المثلث لإنشاء قسمة متعددة الحدود. داخل و
منحنى بيزير
عند تقييم منحنى بيزير من الدرجة n في فضاء ثلاثي الأبعاد مع n + 1 نقطة تحكم P i مع نقسم منحنى بيزير إلى ثلاث معادلات منفصلة والتي نقوم بتقييمها بشكل فردي باستخدام خوارزمية دي كاستيلجو.
مثال
نريد حساب قيمة متعددة حدود برنشتاين من الدرجة الثانية بمعاملات برنشتاين عند النقطة t 0 .
نبدأ التكرار بـ ومع التكرار الثاني، يتوقف التكرار مع وهو متعدد الحدود المتوقع لبرنشتاين من الدرجة الثانية .
التطبيقات
فيما يلي أمثلة على تطبيقات خوارزمية دي كاستيلجو في لغات برمجة مختلفة.
deCasteljau :: Double -> [( Double , Double )] -> ( Double , Double )deCasteljau t [ b ] = bمعاملات دي كاستيلجو t = دي كاستيلجو t المخفضةأينتم تقليلها = zipWith ( lerpP t ) coefs ( tail coefs )lerpP t ( x0 , y0 ) ( x1 , y1 ) = ( lerp t x0 x1 , lerp t y0 y1 )lerp t a b = t * b + ( 1 - t ) * adef de_casteljau ( t : float , coefs : list [ float ]) -> float :"""خوارزمية دي كاستيلجاو."""beta = coefs.copy () # يتم استبدال القيم في هذه القائمةn = len ( beta )for j in range ( 1 , n ):لكل k في النطاق ( n - j ):بيتا [ ك ] = بيتا [ ك ] * ( 1 - ت ) + بيتا [ ك + 1 ] * تإرجاع بيتا [ 0 ]دالة عامة مزدوجة deCasteljau ( مزدوجة t ، مزدوجة [] معاملات ) {double [] beta = المعاملات ؛int n = beta . length ;for ( int i = 1 ; i < n ; i ++ ) {for ( int j = 0 ; j < ( n - i ); j ++ ) {beta [ j ] = beta [ j ] * ( 1 - t ) + beta [ j + 1 ] * t ;}}أعد بيتا [ 0 ] ؛}مثال برمجي بلغة جافا سكريبت
تُطبّق دالة جافا سكريبت التالية خوارزمية دي كاستيلجو على مصفوفة من نقاط التحكم أو الأقطاب ، كما سماها دي كاستيلجو في الأصل، لتقليصها واحدة تلو الأخرى حتى الوصول إلى نقطة في المنحنى عند قيمة زمنية معينة t، حيث تكون القيمة 0 للنقطة الأولى من المنحنى و1 للنقطة الأخيرة.
دالة crlPtReduceDeCasteljau ( نقاط ، t ) {let retArr = [ points . slice () ];بينما ( طول النقاط > 1 ) {let midpoints = [];for ( let i = 0 ; i + 1 < points.length ; ++ i ) {let ax = points [ i ][ 0 ];let ay = points [ i ][ 1 ];let bx = points [ i + 1 ][ 0 ];let by = points [ i + 1 ][ 1 ];// a * (1-t) + b * t = a + (b - a) * tنقاط المنتصف . دفع ([ax + ( bx - ax ) * t ,ay + ( by - ay ) * t ,]);}retArr.push ( midpoints )النقاط = نقاط المنتصف ؛}أعد retArr ؛}على سبيل المثال،
أقطاب فار = [ [ 0 , 128 ], [ 128 , 0 ], [ 256 , 0 ], [ 384 , 128 ] ] crlPtReduceDeCasteljau ( أقطاب , .5 )يُعيد المصفوفة
[ [ [ 0 , 128 ], [ 128 , 0 ], [ 256 , 0 ], [ 384 , 128 ] ], [ [ 64 , 64 ], [ 192 , 0 ], [ 320 , 64 ] ], [ [ 128 , 32 ], [ 256 , 32 ]], [ [ 192 , 32 ]] ]مما ينتج عنه النقاط والقطاعات الموضحة أدناه:

انظر أيضاً
- منحنى بيزير
- خوارزمية دي بور
- مخطط هورنر لتقييم كثيرات الحدود في شكل أحادي الحد
- خوارزمية كلينشو لتقييم كثيرات الحدود في شكل تشيبيشيف
مراجع
- ↑ ديلجادو، ج.؛ ماينار، إ.؛ بينيا، ج.م. (2023-10-01). "حول دقة خوارزميات دي كاستيلجو وتمثيلات برنشتاين" . التصميم الهندسي بمساعدة الحاسوب . 106 102243. doi : 10.1016/j.cagd.2023.102243 . ISSN 0167-8396 .
- ↑ ووزني، باويل؛ تشودي، فيليب (2020-01-01). "خوارزمية هندسية خطية لتقييم منحنيات بيزير" . التصميم بمساعدة الحاسوب . 118 102760. arXiv : 1803.06843 . doi : 10.1016/j.cad.2019.102760 . ISSN 0010-4485 .
- ↑ فودا، كيارا؛ رامانانتوانينا، أندرياماهينينا؛ هورمان، كاي (2024). "مقارنة شاملة للخوارزميات المستخدمة في تقييم منحنيات بيزير العقلانية" . ملاحظات بحثية حول التقريب في جبال الدولوميت . 17 (9/2024): 56-78 . doi : 10.14658/PUPJ-DRNA-2024-3-9 . ISSN 2035-6803 .
- فارين، جيرالد إي.؛ هانسفورد، ديان (2000). أساسيات تصميم الرعاية الصحية بمساعدة الحاسوب . ناتيك، ماساتشوستس: إيه كيه بيترز. رقم ISBN 978-1-56881-123-9.
روابط خارجية
- التقريب الخطي القطعي لمنحنيات بيزير – وصف لخوارزمية دي كاستيلجو، بما في ذلك معيار لتحديد متى يتم إيقاف التكرار
- منحنيات بيزير وبيكاسو – وصف وتوضيح لخوارزمية دي كاستيلجو المطبقة على منحنيات بيزير المكعبة
- خوارزمية دي كاستيلجو – مساعدة في التنفيذ وعرض توضيحي تفاعلي للخوارزمية
- المنحنيات (الرياضيات)
- التحليل العددي
