You can edit almost every page by Creating an account. Otherwise, see the FAQ.

الگوریتم De Casteljau's

از EverybodyWiki Bios & Wiki
پرش به:ناوبری، جستجو

خطای اسکریپتی: پودمان «AfC submission catcheck» وجود ندارد. در زمینه ریاضی آنالیز عددی ، الگوریتم De Casteljau یک روش بازگشتی برای ارزیابی چند جمله ای ها در فرم برنشتاین یا منحنی های بزیه است که به نام مخترع آن Paul de Casteljau نامگذاری شده است. الگوریتم De Casteljau را همچنین می توان برای تقسیم منحنی بزیه به دو منحنی بزیه در مقدار پارامتر دلخواه استفاده کرد.

اگرچه این الگوریتم در مقایسه با رویکرد مستقیم برای بیشتر معماری ها کندتر است ، اما از نظر عددی پایدارتر است .

تعریف[ویرایش]

منحنی بزیه B (درجه n ، با نقاط کنترل) ) را می توان به صورت زیر به صورت برنشتاین نوشت:

،

جایی که b یک چند جمله ای مبتنی برنشتاین است

.

منحنی در نقطه t 0 را می توان با رابطه بازگشتی ارزیابی کرد

سپس ، ارزیابی از در نقطه را می توان با ارزیابی کرد. نتیجه از رابطه زیر بدست می آید:

علاوه بر این ، منحنی بزیه می تواند در نقطه به دو منحنی ،با نقاط کنترل مربوطه تقسیم شود:

اجرای نمونه[ویرایش]

در اینجا مثالی از پیاده سازی الگوریتم De Casteljau در زبان هاسکل آورده شده است :

deCasteljau :: Double -> [(Double, Double)] -> (Double, Double)
deCasteljau t [b] = b
deCasteljau t coefs = deCasteljau t reduced
  where
    reduced = 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) * a

یادداشت[ویرایش]

هنگام انجام محاسبه با دست ، مفید است که ضرایب را در یک طرح مثلث به صورت زیر بنویسید:

هنگام انتخاب نقطه t 0 برای ارزیابی چند جمله ای برنشتاین می توان از دو مورب طرح مثلث برای ساخت تقسیم چند جمله ای استفاده کرد

به

و

مثال[ویرایش]

ما می خواهیم چند جمله ای برنشتاین درجه 2 را با ضرایب برنشتاین ارزیابی کنیم

در نقطه t 0 .

بازگشت را با عبارات زیر شروع می کنیم

و با تکرار دوم بازگشت متوقف می شود با:

که انتظار می رود چند جمله ای درجه 2 برنشتاین باشد

منحنی بزیر[ویرایش]

منحنی Bézier

هنگام ارزیابی منحنی بزیر از درجه n در فضای 3 بعدی با نقاط کنترل P i

با

.

منحنی بزیر را به سه معادله جداگانه تقسیم می کنیم

که ما به صورت جداگانه با استفاده از الگوریتم De Casteljau ارزیابی می کنیم.

تفسیر هندسی[ویرایش]

تفسیر هندسی الگوریتم De Casteljau ساده است.

  • یک منحنی بزیر با نقاط کنترل را در نظر بگیرید . با اتصال نقاط متوالی چند ضلعی کنترل منحنی ایجاد می کنیم.
  • اکنون هر بخش خط از این چند ضلعی را با نسبت تقسیم کنید و امتیازاتی که بدست آوردید را بهم متصل کنید. با این روش به چند ضلعی جدید می رسید که دارای یک بخش کمتر است.
  • این فرآیند را تا رسیدن به نقطه واحد تکرار کنید - این نقطه منحنی مربوط به پارامتر است .

تصویر زیر این روند را برای یک منحنی مکعب بزیر نشان می دهد:

توجه داشته باشید که نقاط میانی که ساخته شده اند در واقع نقاط کنترل دو منحنی جدید بزیر هستند ، هر دو دقیقاً با یک منحنی قدیمی مطابقت دارند. این الگوریتم نه تنها منحنی را در ارزیابی می کند ، اما منحنی را به دو قسمت تقسیم می کند ، و معادلات دو زیر منحنی را به صورت بزیر فراهم می کند.

تفسیری که در بالا ارائه شد برای یک منحنی غیر منطقی بزیر معتبر است. برای ارزیابی منحنی بیزیر منطقی در ، ما ممکن است نقطه را به ؛ به عنوان مثال ، یک منحنی در سه بعد ممکن است نقاط کنترل خود را داشته باشد و وزن پیش بینی شده به نقاط کنترل وزنی . سپس الگوریتم مطابق معمول پیش می رود و در آن مداخله می کند . نقاط چهار بعدی حاصل ممکن است با یک شکاف چشم انداز به سه فضا برگردانده شود.

به طور کلی ، عملیات روی یک منحنی منطقی (یا سطح) معادل عملیات روی یک منحنی غیر منطقی در یک فضای فرافکنی است . این بازنمایی به عنوان "نقاط کنترل وزنی" و وزن اغلب هنگام ارزیابی منحنی های منطقی راحت است.

See also[ویرایش]

References[ویرایش]

لینک های خارجی[ویرایش]

  • تقریب خطی منحنی های Bézier - شرح الگوریتم De Casteljau ، از جمله یک معیار برای تعیین زمان متوقف کردن جمع کردن [ <span title="similar to recussion (November 2019)">بررسی املا</span> ]
  • منحنی های Bezier و Picasso - شرح و تصویر الگوریتم De Casteljau اعمال شده در منحنی های Bézier مکعب.

This article "الگوریتم De Casteljau's" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:الگوریتم De Casteljau's. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.



Read or create/edit this page in another language[ویرایش]