منحنی بزیه
منحنی بزیه () نوعی منحنی پارامتری مورد استفاده در گرافیک رایانه‌ای و صنایع مربوطه است. تعمیم‌های منحنی بزیه به ابعاد بالاتر را سطوح بزیه می‌نامند که یکی از حالت‌های خاص آن‌ها، مثلث بزیه است.
در گرافیک برداری، از منحنی‌های بزیه برای مدلسازی منحنی‌های نرمی که می‌توانند تا بی‌نهایت بزرگ و کوچک شوند استفاده می‌شود. از پیوند زدن چند منحنی بزیه ساده یک مسیر (منحنی بزیهٔ پیچیده) حاصل می‌شود. مسیرها تابع محدودیت‌های تصویری گرافیک شطرنجی نیستند و کار با آن‌ها از نظر شهودی آسان است.
بنیاد ریاضیاتی منحنی‌های بزیه یعنی چندجمله‌ای‌های برنشتاین از سال ۱۹۱۲ شناخته شده بود، ولی از این چندجمله‌ای تا حدود ۵۰ سال بعد از آن در گرافیک استفاده‌ای نشد، تا این که مهندس فرانسوی پیر بزیه برای طراحی بدنهٔ خودروهای رنو از آن بهره برد.
هر منحنی بزیه دو "نقطه لنگر" و دو "نقطه کنترل" دارد. نقطه‌های لنگر ابتدا و انتهای منحنی را مشخص می‌کنند و نقطه‌های کنترل انحنای مسیر را تعیین می‌نمایند. پاره‌خطی که یک نقطهٔ لنگر را به یک نقطهٔ کنترل وصل می‌کند به دستگیره معروف میباشد .
مبنای ریاضی منحنی‌های بزیه - چند جمله‌ای‌های Bernstein - در سال ۱۹۱۲ تبیین شد، اما از این چند جمله‌ای‌ها در زمینه گرافیک استفاده‌ای نشد. حدود ۵۰ سال بعد وقتی Paul de Casteljau ریاضیدان در ۱۹۵۹ الگوریتم De Casteljau، یک روش عددی پایدار برای ارزیابی منحنی‌ها را ایجاد کرد، او اولین کسی بود که آنها را در طراحی اتومبیل سیتروئن به کمک رایانه اعمال کرد. این چند جمله‌ها در دهه ۱۹۶۰ توسط مهندس فرانسوی پیر بزیه، که از آن‌ها برای طراحی بدنه اتومبیل در شرکت رنو استفاده می‌کرد، به‌طور گسترده تبلیغ شد.
منحنی بزیر توسط مجموعه‌ای از "نقاط کنترل" P تا P ، جایی که "n" ترتیب آن را می‌نامند ("n" = ۱ برای خطی، ۲ برای درجه دوم و غیره).) اولین و آخرین نقاط کنترل همیشه نقاط انتهایی منحنی هستند. با این حال، نقاط کنترل میانی (در صورت وجود) به‌طور کلی روی منحنی قرار ندارند. مبالغ موجود در بخش‌های زیر به عنوان ترکیب‌های ترکیبی قابل درک است، ضرایب جمع شده به ۱.
با توجه به نقاط مجزا P و P ، یک منحنی خطی بزیر فقط یک خط مستقیم بین این دو نقطه است. منحنی توسط داده می‌شود
منحنی درجه دوم بزیر مسیری است که توسط تابع formula_2ردیابی می‌شود، با توجه به نقاط P ، P و P ،
formula_3
که به ترتیب می‌تواند به عنوان تقابل خطی نقاط متناظر در منحنی‌های خطی بزیر از P به P و از P به P تفسیر شود. تنظیم مجدد بازده معادله قبلی:
formula_4
این را می‌توان به گونه ای نوشت که تقارن را با توجه به P :
formula_5
که بلافاصله مشتق منحنی بزیر را با توجه به "t می‌دهد":
formula_6
از آنجا می‌توان نتیجه گرفت که مماس‌های منحنی در P و P در P . وقتی "t" از ۰ به ۱ افزایش می‌یابد، منحنی حرکت از P در جهت P سپس خم می‌شود تا از جهت P به P برسد
مشتق دوم منحنی بزیر با توجه به "t" است
چهار نقطه P ، P ، P و P در صفحه یا در فضای بعد بالاتر، منحنی بزیه مکعبی را تعریف می‌کنند. منحنی از P شروع می‌شود و به سمت P می‌رود و و از جهت P به P . معمولاً از P یا P عبور نخواهد کرد. این نقاط فقط برای ارائه اطلاعات جهت دار وجود دارد. فاصله بین P و P «تا چه حد» و «چگونه سریع» حرکت منحنی به سمت P قبل از انحراف به سمت P
نوشتن B("t") formula_8برای منحنی درجه دوم بزیه که توسط نقاط P ، P و P تعریف شده‌است، منحنی بزیه مکعب را می‌توان به عنوان ترکیبی از دو منحنی درجه دوم بزیر تعریف کرد:
formula_9
فرم صریح منحنی به شرح زیر است:
formula_10
برای بعضی از گزینه‌های P و P منحنی ممکن است خودش را قطع کند یا حاوی یک cusp باشد.
هر سری از ۴ نقطه مشخص را می‌توان به یک منحنی بزیه مکعب تبدیل کرد که به ترتیب از هر ۴ نقطه عبور می‌کند. با توجه به نقطه شروع و پایان برخی از منحنی‌های بزیر مکعب، و نقاط امتداد منحنی مربوط به "t" = ۱/۳ و "t" = ۲/۳، نقاط کنترل منحنی بزیر اصلی را می‌توان بازیابی کرد.
مشتق منحنی بزیر مکعب با توجه به "t" مقدار زیر است
formula_11
مشتق دوم منحنی بزیر با توجه به "t" مقدار زیر است:
formula_12
منحنی‌های بزیر را می‌توان برای هر درجه "n تعریف کرد".
یک تعریف بازگشتی برای منحنی بزیر از درجه "n"، آن را به عنوان یک ترکیب خطی نقطه به نقطه (درون یابی خطی) از یک جفت نقطه مربوطه در دو منحنی بزیر از درجهformula_13 "بیان می‌کند."
اجازه دهید formula_14 منحنی بزیر را مشخص می‌کنیم که با انتخاب هر یک از نقاط P ، P ،. ، P سپس برای شروع،
formula_15
formula_16
این بازگشت در انیمیشن‌های زیر توضیح داده شده‌است.
فرمول را می‌توان به صراحت به شرح زیر بیان کرد:
formula_17
جایی که formula_18 ضرایب دوجمله‌ای هستند.
به عنوان مثال، برای "n" = ۵:
formula_19
برخی اصطلاحات با این منحنی‌های پارامتریک مرتبط است. ما داریم:
formula_20
چند جمله ای‌ها:
formula_21
به چند جمله ای پایه برنشتاین درجه "n معروف هستند".
توجه داشته باشید که "t" = ۱، (1 - "t") = ۱، و ضریب دوجمله‌ای، formula_18 ، است:
formula_23
نقاط P برای منحنی بزیر نقاط "کنترلی می"‌نامند. چند ضلعی حاصل از اتصال نقاط بزیر با خطوط، شروع با P و پایان دادن به P ، "چند ضلعی بزیر" (یا "چند ضلعی کنترل") نامیده می‌شود. بدنه محدب چند ضلعی بزیر شامل منحنی بزیر است.
گاهی اوقات مطلوب است که منحنی بزیر را به جای چند جمله، چند جمله‌ای ساده‌تر برنشتاین به صورت چند جمله‌ای بیان کنید. استفاده از قضیه دوجمله‌ای در تعریف منحنی و به دنبال برخی از مقداری بازآرایی نتیجه می‌دهد:
formula_24
که
formula_25
این می‌تواند عملی باشد اگر formula_26 می‌تواند قبل از بسیاری از ارزیابی‌ها محاسبه شود formula_27 ؛ با این وجود باید احتیاط کرد زیرا منحنی‌های مرتبه بالا ممکن است از ثبات عددی برخوردار نباشند (در صورت بروز این الگوریتم دی Casteljau باید استفاده شود). توجه داشته باشید که محصول خالی ۱ است.منحنی درجه دوم بزیه نیز بخشی از یک سهمی است. از آنجا که سهمی یک بخش مخروطی است، برخی منابع از بزیه‌های درجه دوم به عنوان «قوس‌های مخروطی» یاد می‌کنند. با اشاره به شکل سمت راست، ویژگی‌های مهم سهمی را می‌توان به شرح زیر بدست آورد:
مشتق منحنی سفارش "n" است
formula_31
"t" در تابع را برای یک منحنی خطی بزیه می‌توان تصور کرد که فاصله B ("t") از P به P چیست. به عنوان مثال، وقتی "t = ۰٫۲۵"، B ("t") یک چهارم راه از نقطه P به P . از آنجا که "t" از ۰ تا ۱ متغیر است، B ("t") یک خط مستقیم از P به P .
برای منحنی‌های درجه دوم بزی می‌توان نقاط میانی Q و Q طوری ساخت که "t" از ۰ تا ۱ متغیر باشد:
برای منحنی‌های مرتبه بالاتر شخص به نقاط میانی بیشتری احتیاج دارد. برای منحنی‌های مکعبی می‌توان نقاط میانی Q ، Q و Q که منحنی‌های خطی بزیه را توصیف می‌کند و نقاط R & R که منحنی‌های درجه دوم بزیه را توصیف می‌کنند، ساخت:
برای منحنی‌های مرتبه چهارم می‌توان نقاط میانی Q ، Q ، Q و Q که منحنی‌های خطی بزیه، نقاط R ، R و R توصیف می‌کند که منحنی‌های درجه دوم بزیه و نقاط S & S می‌کند. منحنی‌های بزیه مکعبی را توصیف کنید:
برای منحنی‌های مرتبه پنجم، می‌توان نقاط میانی مشابهی را ساخت.
این نمایش‌ها متکی بر فرایند مورد استفاده در الگوریتم De Casteljau برای محاسبه منحنی‌های بزیر است.
منحنی در یک جابجایی ثابت از یک منحنی بزیه داده نمی‌شود، که در ریاضیات منحنی افست یا موازی نامیده می‌شود ("موازی" با منحنی اصلی قرار دارد، مانند جابجایی بین ریل‌ها در یک مسیر راه‌آهن)، دقیقاً توسط یک منحنی بزیر تشکیل نمی‌شود (به جز در برخی موارد پیش پا افتاده). به‌طور کلی، منحنی انحراف دو طرفه بزیر مکعب یک منحنی جبری مرتبه ۱۰ است و به‌طور کلی برای یک بزیه درجه "n" منحنی انحراف دو طرفه یک منحنی جبری درجه ۴ ، formula_36 است. با این حال، روشهای ابتکاری وجود دارد که معمولاً تقریب مناسبی را برای اهداف عملی ارائه می‌دهند.
در زمینه گرافیک برداری، به رنگ آمیزی دو منحنی افست با تقارن متقارن "نوازش گفته می‌شود" (منحنی بزیر یا به‌طور کلی مسیری از چندین بخش بزیر). تبدیل از منحنی‌های افست به خطوط پر شده بزیر از اهمیت عملی در تبدیل فونت‌های تعریف شده در Metafont است که اجازه می‌دهد تا منحنی‌های بزیر را به فونت‌های نوع 1 PostScript که به‌طور گسترده استفاده می‌شود، تبدیل کنید. پر کردن یک کانتور مشخص شده توسط منحنی‌های بزیر (غیر خود تلاقی).
منحنی بزیر از درجه "n" می‌تواند به منحنی بزیر از درجه "n+1 با همان شکل تبدیل شود". این در صورتی مفید است که نرم‌افزار منحنی‌های بزیر را فقط در درجه خاص پشتیبانی کند. به عنوان مثال، سیستم‌هایی که فقط می‌توانند با منحنی‌های مکعبی مکعبی کار کنند، می‌توانند با استفاده از نمایش مکعب معادل آنها، به‌طور ضمنی با منحنی‌های درجه دوم کار کنند.
برای انجام ارتفاع درجه، از برابری استفاده می‌کنیم formula_37 . هر مولفه formula_38 ضرب در (1 − "t") می‌شود و "t"، بنابراین یک درجه بدون تغییر مقدار افزایش می‌یابد. در اینجا مثالی برای افزایش درجه از ۲ به ۳:
formula_39
برای "n" دلخواه از برابری استفاده می‌کنیم
formula_40
از این رو:
formula_41
معرفی دلخواه formula_42 و formula_43 .
بنابراین، نقاط کنترل جدید
formula_44
مفهوم ارتفاع درجه را می‌توان بر روی چند ضلعی کنترل R تکرار کرد تا توالی چند ضلعی‌های کنترل R , R ، R و غیره بدست آید. بعد از افزایش درجه "r"، چند ضلعی R دارای رئوس P ، P ، P ، است. . ، P داده شده توسط
formula_45
همچنین می‌توان نشان داد که برای منحنی بزیه زیرین "B" ,
formula_46
منحنی بیزیر منطقی وزنی قابل تنظیم برای ایجاد تقریب نزدیک به اشکال دلخواه اضافه می‌کند. عدد یک منحنی وزنی شکل بزیر به شکل برنشتاین است و مخرج یک مجموع وزنی از چند جمله‌های برنشتاین است. از منحنی‌های منطقی بزیر، در میان سایر کاربردها، می‌توان برای نمایش دقیق بخشهای مخروطی، از جمله قوسهای دایره ای استفاده کرد.
با توجه به formula_47 نقاط کنترل P ، منحنی بزیر منطقی را می‌توان با شرح زیر توصیف کرد:
formula_48
یا به سادگی
formula_49
این عبارت را می‌توان با استفاده از سیستم‌های عددی علاوه بر واقعی برای اوزان، گسترش داد. در صفحه پیچیده، نقاط {۱}، {-۱} و {۱} با وزن { formula_50 }، {۱} و { formula_51 } یک دایره کامل با شعاع یک ایجاد کنید. برای منحنی‌های دارای نقطه و وزن روی یک دایره، وزن‌ها را می‌توان بدون تغییر شکل منحنی مقیاس بندی کرد. مقیاس گذاری وزن مرکزی منحنی فوق توسط ۱٫۳۵۵۰۸، پارامتر سازی یکنواخت تری را به دست می‌دهد.
منحنی‌های بزیر به‌طور گسترده‌ای در گرافیک کامپیوتر برای مدل‌سازی منحنی‌های صاف استفاده می‌شود. از آنجا که منحنی کاملاً در پوسته محدب نقاط کنترل آن قرار دارد، می‌توان نقاط را به صورت گرافیکی نمایش داد و از آنها برای دستکاری بصری بصورت منحنی استفاده کرد. با اعمال تغییر شکل مربوط به نقاط کنترل منحنی، می‌توان تبدیلات آفین مانند ترجمه و چرخش را روی منحنی اعمال کرد.
منحنی‌های درجه دوم و مکعب بزیر بیشترین شیوع را دارند. منحنی‌های درجه بالاتر برای ارزیابی از نظر محاسباتی گران ترند. در صورت نیاز به اشکال پیچیده‌تر، منحنی‌های کم‌نظیر بزیر به هم وصل می‌شوند و یک منحنی بزیر مرکب تولید می‌کنند. از منحنی ترکیبی بزیر معمولاً به عنوان «مسیر» در زبانهای گرافیکی برداری (مانند PostScript)، استانداردهای گرافیکی برداری (مانند SVG) و برنامه‌های گرافیکی برداری (مانند Artline، Timeworks Publisher، Adobe Illustrator، CorelDraw، Inkscape و Allegro) یاد می‌شود. . به منظور پیوستن منحنی‌های بزیر به یک منحنی ترکیبی بزیر و بدون انحراف، خاصیتی به نام "G1 مداوم"، کافی است که نقطه کنترل
ی را که در آن دو منحنی تشکیل دهنده بزیر به هم می‌رسند، مجبور کنیم در روی خط مشخص شده توسط دو نقطه کنترل در دو طرف قرار بگیریم.
ساده‌ترین روش برای تبدیل اسکن (تصادفی سازی) منحنی بزیر ارزیابی آن در بسیاری از نقاط با فاصله نزدیک و اسکن تبدیل توالی تقریبی بخشهای خط است. با این حال، این تضمین نمی‌کند که خروجی تصادفی شده به اندازه کافی صاف به نظر می‌رسد، زیرا ممکن است نقاط از یکدیگر بسیار دور باشند. برعکس ممکن است در مناطقی که منحنی نزدیک به خطی است، نقاط زیادی ایجاد کند. یک روش تطبیقی معمول، تقسیم بازگشتی است که در آن نقاط کنترل یک منحنی بررسی می‌شود تا ببیند که آیا منحنی به یک خط مستقیم نزدیک به یک تحمل کوچک است. در غیر این صورت، منحنی از نظر پارامتری به دو بخش formula_52 و formula_53 تقسیم می‌شود و روش مشابه به‌طور بازگشتی برای هر نیمه اعمال می‌شود. روشهای متمایزسازی به جلو نیز وجود دارد، اما باید برای تجزیه و تحلیل انتشار خطا بسیار دقت شود.
روشهای تحلیلی که یک بزیر با هر خط اسکن قطع می‌شود شامل یافتن ریشه‌های چند جمله ای مکعبی (برای بزیه‌های مکعبی) و مقابله با چندین ریشه است، بنابراین آنها در عمل اغلب استفاده نمی‌شوند.
الگوریتم rasterisation مورد استفاده در Metafont مبتنی بر تشخیص منحنی است، به طوری که با دنباله ای از "حرکتهای rook " که کاملاً عمودی یا کاملاً افقی هستند، در امتداد مرزهای پیکسل تقریب می‌یابد. بدین منظور، هواپیما ابتدا به هشت بخش ۴۵ درجه تقسیم می‌شود (توسط محورهای مختصات و دو خط formula_54)، سپس منحنی به بخشهای کوچکتر تجزیه می‌شود، به طوری که "جهت" یک بخش منحنی در یک بخش باقی می‌ماند. از آنجا که سرعت منحنی یک چند جمله ای درجه دو است، پیدا کردن formula_55 مقادیری که موازی یکی از این خطوط باشد را می‌توان با حل معادلات درجه دوم انجام داد. در هر بخش، حرکت افقی یا عمودی غالب است و تعداد کل مراحل در هر جهت را می‌توان از مختصات نقطه انتهایی خواند. برای مثال حرکت افقی بخش ۰–۴۵ درجه به سمت راست غالب است، بنابراین فقط باید تصمیم بگیرید که بین کدام پله‌ها به سمت راست منحنی باید یک پله بالا برود.
در برنامه‌های انیمیشن سازی، مانند Adobe Flash و Synfig، از منحنی‌های بزیه برای طرح کلی، به عنوان مثال حرکت، استفاده می‌شود. کاربران مسیر مورد نظر را در منحنی‌های بزیه ترسیم می‌کنند، و برنامه قاب‌های لازم را برای حرکت جسم در طول مسیر ایجاد می‌کند.
در انیمیشن سه بعدی، منحنی‌های بزیه اغلب برای تعریف مسیرهای سه بعدی و همچنین منحنی‌های دو بعدی برای درهم آمیختن فریم کلیدی استفاده می‌شوند. منحنی‌های بزیر اکنون بطور مداوم برای کنترل کاهش انیمیشن در CSS، JavaScript و JavaFx استفاده می‌شود.
قلم‌های TrueType از منحنی‌های بزیر مرکب متشکل از منحنی‌های درجه دوم بزیر استفاده می‌کنند. زبانهای دیگر و ابزارهای تصویربرداری (مانند PostScript، Asymptote، Metafont و SVG) از بزیر مرکب متشکل از منحنی‌های بزیر مکعب برای ترسیم اشکال منحنی استفاده می‌کنند. بسته به طعم قلم، قلمهای OpenType می‌توانند از هر دو نوع استفاده کنند.
رندر داخلی تمام منحنی‌های بزیر در رندرهای فونت یا گرافیک برداری، آنها را به صورت بازگشتی تقسیم می‌کند تا جایی که منحنی به اندازه کافی مسطح باشد تا به صورت مجموعه ای از بخشهای خطی یا دایره ای ترسیم شود. الگوریتم تقسیم دقیق به اجرا وابسته است، فقط معیارهای مسطح بودن باید رعایت شود تا به دقت لازم برسد و از تغییر موضع منحنی غیر یکنواخت جلوگیری کند. ویژگی «منحنی روان» نمودارها در Microsoft Excel نیز از این الگوریتم استفاده می‌کند.
از آنجا که قوس دایره‌ها و بیضی‌ها را نمی‌توان دقیقاً توسط منحنی‌های بزیر نشان داد، ابتدا با منحنی‌های بزیر تقریب می‌شوند که به نوبه خود با قوس‌های دایره‌ها تقریب می‌شوند. این ناکارآمد است زیرا تقریبهای منحنی بزیر با استفاده از کمانهای دایره یا بیضی نیز وجود دارد، که می‌تواند با دقت دلخواه به صورت تدریجی ارائه شود. رویکرد دیگری که توسط آداپتورهای گرافیکی سخت‌افزاری مدرن با هندسه شتابدهنده استفاده می‌شود، می‌تواند دقیقاً تمام منحنی‌های بزیر و مخروطی (یا سطوح) را به NURBS تبدیل کند، که می‌تواند بدون تقسیم منحنی به صورت بازگشتی به صورت افزایشی ارائه شود تا به شرایط مسطح لازم برسد. این روش همچنین اجازه می‌دهد تا تعریف منحنی را تحت همه تبدیل‌ها و پیش‌بینی‌های 2D و 3D خطی یا پرسپکتیو حفظ کنیم.
موتورهای قلم، مانند FreeType، منحنی‌های قلم (و خطوط) را با استفاده از فرایندی که به عنوان rasterization قلم شناخته می‌شود، روی یک سطح پیکسلی ترسیم می‌کنند.