نمایش منحنی و سطح، درون‌یابی، هرمیت، بزیه و B-Spline | گرافیک تعاملی با OpenGL

نمایش منحنی و سطح، درون‌یابی، هرمیت، بزیه و B-Spline

نمایش منحنی و سطح، درون‌یابی، هرمیت، بزیه و B-Spline

  • عنوان اصلی اثر: Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL, Sixth Edition
  • عنوان ترجمه‌شدهٔ این بخش: نمایش منحنی و سطح، درون‌یابی، هرمیت، بزیه و B-Spline
  • نویسندگان و سازمان: Edward Angel — University of New Mexico؛ Dave Shreiner — ARM, Inc.
  • زبان اصلی: انگلیسی
  • وضعیت مجوز: حق ترجمه و بازنشر توسط کاربر تأیید شده است.
  • تاریخ ترجمه: ۱۴۰۵/۰۵/۲۲
  • مترجم: ترجمه با کمک هوش مصنوعی

نمایش منحنی و سطح، درون‌یابی، هرمیت، بزیه و B-Spline

فصل ۱۰ — منحنی‌ها و سطح‌ها

جهان پیرامون ما پر از اشیایی با شکل‌های چشمگیر است، با این حال در گرافیک رایانه‌ای جهان‌های مجازی هنوز تا حد زیادی با اشیای تخت ساخته می‌شوند. دلیل روشن است: سامانه‌های گرافیکی می‌توانند چندضلعی‌های سه‌بعدی تخت را با سرعت بسیار بالا، همراه با حذف سطح پنهان، سایه‌زنی و نگاشت بافت، رندر کنند. یک راه آن است که مانند مدل کره، شیء منحنی را در واقع مجموعه‌ای از چندضلعی‌های تخت بدانیم. راه دیگر، که در این فصل دنبال می‌شود، این است که برنامه‌نویس در سطح کاربرد با اشیای منحنی کار کند و رندر نهایی را به پیاده‌سازی بسپارد.

سه روش برای مدل‌سازی منحنی‌ها و سطح‌ها معرفی می‌شود و بیشترین تمرکز بر فرم‌های چندجمله‌ای پارامتری است. همچنین بررسی می‌شود که سامانه‌های گرافیکی امروزی چگونه این اشیا را معمولاً با تقسیم آن‌ها به primitiveهای تخت رندر می‌کنند. این فرایند از دید برنامه‌نویس کاربردی شفاف است، اما شناخت هزینهٔ آن برای درک محدودیت‌های عملی لازم است.

۱۰.۱ نمایش منحنی‌ها و سطح‌ها

پیش از منحنی‌ها و سطح‌های چندجمله‌ای پارامتری، سه نمایش اصلی ــ صریح، ضمنی و پارامتری ــ و مزایا و معایب هر یک را مرور می‌کنیم. خط، دایره، صفحه و کره برای نشان دادن تفاوت‌ها کافی‌اند.

۱۰.۱.۱ نمایش صریح

در دو بعد، فرم صریح مقدار متغیر وابسته را بر حسب متغیر مستقل می‌دهد:

y=f(x),

یا اگر رابطه قابل وارون‌سازی باشد:

x=g(y).

هیچ تضمینی نیست که برای هر منحنی یکی از این دو فرم وجود داشته باشد. برای خط معمولاً می‌نویسیم:

y=mx+h,

که (m) شیب و (h) عرض از مبدأ است، اما این فرمول خط عمودی را پوشش نمی‌دهد. این نمونه‌ای از وابستگی نامطلوب نمایش به دستگاه مختصات است.

دایره نمونهٔ روشن‌تری است. دایره‌ای با شعاع (r) و مرکز مبدأ، انحنای ثابت و تقارن کامل دارد، اما نمایش صریح آن نیازمند دو معادله برای دو نیمه است:

y=\sqrt{r^2-x^2}, \qquad y=-\sqrt{r^2-x^2},

و نیز باید شرط

0\le |x|\le r

مشخص شود.

در سه بعد، نمایش صریح یک منحنی به دو معادله نیاز دارد. اگر (x) مستقل باشد:

y=f(x),\qquad z=g(x).

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

z=f(x,y).

همانند دو بعد، همهٔ منحنی‌ها و سطح‌ها فرم صریح مناسب ندارند. روابط

y=ax+b,\qquad z=cx+d

یک خط سه‌بعدی را توصیف می‌کنند، اما خطی در صفحهٔ (x=\text{constant}) را نمی‌توانند نشان دهند. همچنین (z=f(x,y)) قادر به نمایش کامل کره نیست، زیرا یک زوج (x,y) ممکن است صفر، یک یا دو نقطه روی کره داشته باشد.

۱۰.۱.۲ نمایش‌های ضمنی

بیشتر منحنی‌ها و سطح‌های مورد استفاده، نمایش ضمنی دارند. در دو بعد:

f(x,y)=0.

خط و دایرهٔ مرکز مبدأ به‌ترتیب:

ax+by+c=0,
x^2+y^2-r^2=0

هستند. تابع (f) در اصل یک تابع آزمون عضویت است: یک زوج ((x,y)) را می‌گیریم و با ارزیابی (f) تشخیص می‌دهیم نقطه روی منحنی هست یا نه. اما این فرم عموماً راه تحلیلی مستقیمی برای یافتن (y) متناظر با (x) یا برعکس نمی‌دهد. در عوض، نسبت به فرم صریح کمتر به دستگاه مختصات وابسته است و همهٔ خط‌ها و دایره‌ها را پوشش می‌دهد.

در سه بعد:

f(x,y,z)=0

یک سطح را تعریف می‌کند. هر صفحه:

ax+by+cz+d=0

و کرهٔ شعاع (r) در مبدأ:

x^2+y^2+z^2-r^2=0

است.

نمایش ضمنی منحنی سه‌بعدی دشوارتر است و می‌توان آن را، در صورت وجود، تقاطع دو سطح دانست:

f(x,y,z)=0,\qquad g(x,y,z)=0.

اگر نقطه‌ای روی هر دو سطح باشد، روی منحنی تقاطع قرار دارد. بیشتر منحنی‌ها و سطح‌های کاربردی نمایش ضمنی دارند، اما یافتن نقاط روی آن‌ها دشوار است.

سطح‌های جبری سطح‌هایی هستند که (f(x,y,z)) مجموعی از چندجمله‌ای‌هاست. سطح‌های درجهٔ دوم یا quadric اهمیت ویژه دارند؛ جمله‌های آن‌ها حداکثر درجهٔ ۲ دارند. کره، دیسک و مخروط از این خانواده‌اند. تقاطع خط با quadric حداکثر دو نقطه ایجاد می‌کند؛ این ویژگی در رندر quadricها و در ray tracing فصل ۱۱ مهم است.

۱۰.۱.۳ فرم پارامتری

فرم پارامتری منحنی، هر متغیر فضایی را بر حسب پارامتر مستقل (u) بیان می‌کند. در سه بعد:

x=x(u),\qquad y=y(u),\qquad z=z(u).

شکل ۱۰.۱ — منحنی پارامتری.

می‌توان مکان نقاط

p(u)=[x(u)\ y(u)\ z(u)]^T

را هنگام تغییر (u) تصور کرد. مشتق

\frac{dp(u)}{du} = \begin{bmatrix} dx/du\\dy/du\\dz/du \end{bmatrix}

مانند سرعت پیمایش منحنی است و در جهت مماس اشاره می‌کند.

سطح پارامتری به دو پارامتر نیاز دارد:

x=x(u,v),\qquad y=y(u,v),\qquad z=z(u,v).

یا:

p(u,v)= \begin{bmatrix} x(u,v)\\y(u,v)\\z(u,v) \end{bmatrix}.

با تغییر (u) و (v)، همهٔ نقاط سطح ساخته می‌شوند. بردارهای

\frac{\partial p}{\partial u}, \qquad \frac{\partial p}{\partial v}

صفحهٔ مماس را تعیین می‌کنند و اگر موازی نباشند، ضرب برداری آن‌ها نرمال سطح است:

n=\frac{\partial p}{\partial u}\times\frac{\partial p}{\partial v}.

شکل ۱۰.۲ — صفحهٔ مماس و نرمال در نقطه‌ای از سطح پارامتری.

فرم پارامتری برای گرافیک رایانه‌ای منعطف و robust است. حتی می‌توان دستگاهی صرفاً بر پایهٔ (p(u)) و (p(u,v)) ساخت. برای منحنی‌های سه‌بعدی، Frenet frame از مماس و نرمال هر نقطه ساخته می‌شود و binormal جهت سوم را می‌دهد؛ هرچند این frame در طول منحنی تغییر می‌کند. برای هدف این فصل، بیان مؤلفه‌های (x,y,z) در یک frame مشخص کافی است.

۱۰.۱.۴ منحنی‌های چندجمله‌ای پارامتری

فرم پارامتری یکتا نیست. یک منحنی یا سطح می‌تواند نمایش‌های متعدد داشته باشد، اما فرم‌هایی که در آن توابع برای منحنی نسبت به (u) و برای سطح نسبت به (u,v) چندجمله‌ای‌اند، در گرافیک بسیار مفیدند.

منحنی

p(u)= \begin{bmatrix} x(u)\\y(u)\\z(u) \end{bmatrix}

اگر چندجمله‌ای پارامتری درجهٔ (n) باشد، به شکل زیر است:

p(u)=\sum_{k=0}^{n}u^k c_k,

که

c_k= \begin{bmatrix} c_{xk}\\c_{yk}\\c_{zk} \end{bmatrix}.

(n+1) بردار ضریب، (3(n+1)) درجهٔ آزادی می‌دهند. مؤلفه‌های (x,y,z) مستقل‌اند، پس می‌توان سه معادلهٔ مستقل از نوع

p(u)=\sum_{k=0}^{n}u^k c_k

را بررسی کرد که در آن (p) یکی از (x,y,z) است. هر معادله (n+1) درجهٔ آزادی دارد. بازهٔ پارامتر می‌تواند دلخواه باشد:

u_{\min}\le u\le u_{\max},

ولی بدون از دست دادن کلیت می‌توان (0\le u\le1) فرض کرد.

شکل ۱۰.۳ — یک قطعهٔ منحنی.

۱۰.۱.۵ سطح‌های چندجمله‌ای پارامتری

سطح چندجمله‌ای پارامتری:

p(u,v)= \begin{bmatrix} x(u,v)\\y(u,v)\\z(u,v) \end{bmatrix} = \sum_{i=0}^{n}\sum_{j=0}^{m}c_{ij}u^iv^j.

برای تعیین سطح به (3(n+1)(m+1)) ضریب نیاز است. در ادامه معمولاً (n=m) و (0\le u,v\le1) فرض می‌شود و یک surface patch ساخته می‌شود.

شکل ۱۰.۴ — وصلهٔ سطحی.

هر patch را می‌توان حد مجموعه‌ای از منحنی‌ها دانست که با ثابت گرفتن یکی از پارامترها و تغییر دیگری ایجاد می‌شوند. بنابراین نخست منحنی‌های چندجمله‌ای پارامتری را تعریف می‌کنیم و از آن‌ها سطح‌هایی با خواص مشابه می‌سازیم.

۱۰.۲ معیارهای طراحی

کاربرد منحنی و سطح در گرافیک و CAD با بسیاری از حوزه‌های ریاضی متفاوت است. دلایل ترجیح چندجمله‌ای‌های پارامتری کم‌درجه شامل این موارد است:

  • کنترل محلی شکل؛
  • نرمی و پیوستگی؛
  • امکان محاسبهٔ مشتق‌ها؛
  • پایداری؛
  • سهولت رندر.

مدل هواپیمای چوبی نمونهٔ خوبی است. بدنه را می‌توان با چند مقطع عرضی و اتصال آن‌ها با قطعات طولی ساخت.

شکل ۱۰.۵ — مدل هواپیما.

شکل ۱۰.۶ — منحنی مقطع عرضی.

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

شکل ۱۰.۷ — تقریب منحنی مقطع.

در عمل، چند نوار چوبی هر کدام یک قطعهٔ منحنی می‌سازند؛ هر قطعه باید نرم باشد و در نقاط اتصال نیز میزان مناسبی از نرمی حفظ شود.

شکل ۱۰.۸ — ناپیوستگی مشتق در نقطهٔ اتصال.

دو قطعه ممکن است جداگانه نرم باشند ولی مشتق در نقطهٔ اتصال ناپیوسته شود. تعریف معمول نرمی بر مشتق‌های طول منحنی تکیه دارد: منحنی با مشتق اول پیوسته نرم‌تر از منحنی با مشتق اول ناپیوسته است و این مفهوم به مشتق‌های بالاتر تعمیم می‌یابد.

برای منحنی چندجمله‌ای

p(u)=\sum_{k=0}^{n}c_k u^k

همهٔ مشتق‌ها وجود دارند و تحلیلی قابل محاسبه‌اند؛ پس مشکل پیوستگی عمدتاً در نقاط اتصال رخ می‌دهد.

مطلوب است هر قطعه را جداگانه و تعاملی طراحی کنیم، به‌گونه‌ای که تغییر شکل فقط ناحیهٔ محلی را تحت تأثیر قرار دهد. این کنترل محلی نمونه‌ای از اصل عمومی پایداری است: تغییرهای کوچک در پارامترهای ورودی باید فقط تغییرهای کوچک در متغیرهای خروجی ایجاد کنند.

در طراحی عملی معمولاً از تعداد اندکی نقطهٔ کنترل یا داده استفاده می‌شود.

شکل ۱۰.۹ — قطعهٔ منحنی و نقاط کنترل.

منحنی ممکن است بعضی نقاط کنترل را دقیقاً قطع کند (interpolate) و فقط از نزدیکی بعضی دیگر بگذرد. در گرافیک و CAD معمولاً نزدیک بودن به نقاط کنترل، در صورتی که منحنی نرم باشد، کافی است.

واژهٔ spline از ابزار انعطاف‌پذیر چوبی یا فلزی کشتی‌سازان آمده است که با میخ‌ها در نقاطی نگه داشته و به‌طور طبیعی خم می‌شد. بازگشت به گرافیک یادآور می‌شود که نمایش ریاضی خوب وقتی مفید است که بتوان منحنی و سطح حاصل را با رنگ، سایه‌زنی و texture map به‌سادگی رندر کرد.

۱۰.۳ منحنی‌های چندجمله‌ای مکعبی پارامتری

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

یک چندجمله‌ای مکعبی پارامتری را می‌توان نوشت:

p(u)=c_0+c_1u+c_2u^2+c_3u^3 =\sum_{k=0}^{3}c_k u^k =u^T c,

که در آن

u= \begin{bmatrix} 1\\u\\u^2\\u^3 \end{bmatrix}, \qquad c= \begin{bmatrix} c_0\\c_1\\c_2\\c_3 \end{bmatrix}.

هر (c_k) دارای مؤلفه‌های (x,y,z) است. هدف تعیین ضرایب (c) از دادهٔ نقاط کنترل است. برای هر نوع منحنی مکعبی ۱۲ معادله در ۱۲ مجهول داریم، اما چون مؤلفه‌ها مستقل‌اند، سه دستگاه ۴ معادله‌ای مستقل حل می‌شوند. در NURBS، مختصات همگن (w) نیز اضافه می‌شود.

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

۱۰.۴ درون‌یابی

نخست چندجمله‌ای مکعبی درون‌یاب را بررسی می‌کنیم. هرچند در گرافیک زیاد استفاده نمی‌شود، مشتق‌گیری آن روش کلی کار را روشن می‌کند.

چهار نقطهٔ کنترل سه‌بعدی (p_0,p_1,p_2,p_3) داریم و می‌خواهیم (p(u)=u^Tc) از هر چهار بگذرد.

هر نقطه:

p_k= \begin{bmatrix} x_k\\y_k\\z_k \end{bmatrix}.

برای (u\in[0,1])، مقدارهای مساوی‌فاصلهٔ (0,\frac13,\frac23,1) را برای درون‌یابی انتخاب می‌کنیم:

p_0=p(0)=c_0,
p_1=p(1/3)=c_0+\frac13c_1+\left(\frac13\right)^2c_2+\left(\frac13\right)^3c_3,
p_2=p(2/3)=c_0+\frac23c_1+\left(\frac23\right)^2c_2+\left(\frac23\right)^3c_3,
p_3=p(1)=c_0+c_1+c_2+c_3.

این دستگاه به شکل ماتریسی

p=Ac

نوشته می‌شود، که (p=[p_0,p_1,p_2,p_3]^T) و

A= \begin{bmatrix} 1&0&0&0\1&1/3&(1/3)^2&(1/3)^3\1&2/3&(2/3)^2&(2/3)^3\1&1&1&1 \end{bmatrix}.

در این نمایش باید توجه کرد که عناصر (p) و (c) خود بردارهای سه‌مولفه‌ای هستند؛ ضرب اسکالرهای (A) در این بردارها همچنان بردار سه‌مولفه‌ای می‌دهد.

ماتریس (A) نامنفرد است و وارون آن ماتریس هندسی درون‌یابی را می‌دهد:

M_I=A^{-1}= \begin{bmatrix} 1&0&0&0\-5.5&9&-4.5&1\9&-22.5&18&-4.5\-4.5&13.5&-13.5&4.5 \end{bmatrix},

و ضرایب مطلوب:

c=M_Ip.

اگر دنباله‌ای از نقاط (p_0,p_1,\ldots,p_m) داشته باشیم، به‌جای ساخت یک منحنی درون‌یاب درجهٔ (m)، مجموعه‌ای از منحنی‌های مکعبی می‌سازیم. نقاط (p_0,p_1,p_2,p_3) قطعهٔ اول و (p_3,p_4,p_5,p_6) قطعهٔ دوم را تعیین می‌کنند.

شکل ۱۰.۱۰ — اتصال قطعه‌های درون‌یاب.

اشتراک نقطهٔ انتهایی یک قطعه با نقطهٔ آغاز قطعهٔ بعد، پیوستگی خود تابع را تضمین می‌کند. چون هر قطعه روی (u\in[0,1]) تعریف شده، (M_I) برای همه یکسان است. با این حال مشتق‌ها در نقاط اتصال الزاماً پیوسته نیستند.

۱۰.۴.۱ توابع blending

با جای‌گذاری ضرایب:

p(u)=u^Tc=u^TM_Ip=b(u)^Tp,

که

b(u)=M_I^Tu

برداری از چهار چندجمله‌ای blending است. در نتیجه:

p(u)=\sum_{i=0}^{3}b_i(u)p_i.

این توابع سهم هر نقطهٔ کنترل را در کل منحنی مشخص می‌کنند. برای مکعب درون‌یاب:

b_0(u)=-\frac92u\left(u-\frac13\right)\left(u-\frac23\right)(u-1),
b_1(u)=\frac{27}{2}u\left(u-\frac23\right)(u-1),
b_2(u)=-\frac{27}{2}u\left(u-\frac13\right)(u-1),
b_3(u)=\frac92u\left(u-\frac13\right)\left(u-\frac23\right).

همهٔ صفرهای این توابع در بازهٔ بستهٔ ([0,1]) قرار دارند؛ بنابراین توابع در همین بازه به‌شدت تغییر می‌کنند و چندان نرم نیستند. این رفتار نتیجهٔ الزام عبور دقیق منحنی از نقاط کنترل است و در چندجمله‌ای‌های درون‌یاب درجهٔ بالاتر شدیدتر می‌شود. همین کمبود نرمی و ناپیوستگی مشتق در اتصال‌ها دلیل کاربرد محدود درون‌یاب‌های چندجمله‌ای در گرافیک است.

شکل ۱۰.۱۱ — چندجمله‌ای‌های blending برای درون‌یابی.

۱۰.۴.۲ وصلهٔ مکعبی درون‌یاب

تعمیم طبیعی منحنی درون‌یاب، یک patch دوبعدی است. سطح bicubic:

p(u,v)=\sum_{i=0}^{3}\sum_{j=0}^{3}u^iv^jc_{ij}.

اگر

C=[c_{ij}],

آنگاه:

p(u,v)=u^TCv,

با

v=[1\ v\ v^2\ v^3]^T.

یک patch bicubic با ۱۶ بردار سه‌مولفه‌ای، یعنی ۴۸ ضریب اسکالر، تعیین می‌شود.

حال ۱۶ نقطهٔ کنترل (p_{ij}) برای (i,j=0,\ldots,3) را در نظر بگیرید و فرض کنید در مقدارهای (0,\frac13,\frac23,1) برای هر دو پارامتر درون‌یابی شوند.

شکل ۱۰.۱۲ — وصلهٔ سطحی درون‌یاب.

برای (u=v=0):

p_{00}=[1\ 0\ 0\ 0]C \begin{bmatrix}1\\0\\0\\0\end{bmatrix} =c_{00}.

به‌جای نوشتن ۱۶ معادله، (v=0) را ثابت می‌کنیم؛ در این حالت منحنی در (u) باید نقاط (p_{00},p_{10},p_{20},p_{30}) را درون‌یابی کند:

p(u,0)=u^TM_I \begin{bmatrix} p_{00}\\p_{10}\\p_{20}\\p_{30} \end{bmatrix}.

سه مقدار دیگر (v) نیز سه منحنی مشابه می‌دهند. همهٔ ۱۶ رابطه را می‌توان به صورت

u^TM_IP=u^TCA^T

نوشت؛ پس:

C=M_IPM_I^T,

و:

p(u,v)=u^TM_IPM_I^Tv.

این نتیجه نشان می‌دهد سطح درون‌یاب مستقیماً از منحنی‌های درون‌یاب ساخته می‌شود. با استفاده از توابع blending:

p(u,v)=\sum_{i=0}^{3}\sum_{j=0}^{3}b_i(u)b_j(v)p_{ij}.

هر (b_i(u)b_j(v)) یک blending patch است و سطح از ترکیب ۱۶ patch ساده وزن‌دار ساخته می‌شود. خواص این سطح از همان توابع blending منحنی می‌آیند، بنابراین این سطح‌ها نیز چندان نرم نیستند.

سطح‌هایی که به این روش از منحنی‌ها ساخته می‌شوند tensor-product surfaces نام دارند. سطح‌های bicubic tensor-product زیرمجموعهٔ patchهایی هستند که در هر دو پارامتر حداکثر جمله‌های مکعبی دارند. آن‌ها نمونه‌ای از سطح‌های separable هستند:

p(u,v)=f(u)g(v),

که اجازه می‌دهند وابستگی به (u) و (v) جداگانه بررسی شود.

۱۰.۵ منحنی‌ها و سطح‌های Hermite

با تغییر نحوهٔ استفاده از دادهٔ نقاط کنترل می‌توان انواع دیگری از منحنی و سطح ساخت.

۱۰.۵.۱ فرم Hermite

دو نقطهٔ کنترل (p_0) و (p_3) را می‌گیریم و می‌خواهیم:

p(0)=p_0=c_0,
p(1)=p_3=c_0+c_1+c_2+c_3.

دو شرط دیگر از مشتق در دو انتها می‌آیند. مشتق مکعب:

p'(u)=c_1+2uc_2+3u^2c_3.

اگر مشتق‌های داده‌شده را (p'_0) و (p'_3) بنامیم:

p'_0=p'(0)=c_1,
p'_3=p'(1)=c_1+2c_2+3c_3.

شکل ۱۰.۱۳ — تعریف مکعب Hermite.

در فرم ماتریسی:

\begin{bmatrix} p_0\\p_3\\p'_0\\p'_3 \end{bmatrix} = \begin{bmatrix} 1&0&0&0\1&1&1&1\0&1&0&0\0&1&2&3 \end{bmatrix}c.

اگر

q=[p_0\ p_3\ p'_0\ p'_3]^T,

آنگاه:

c=M_Hq,

با:

M_H= \begin{bmatrix} 1&0&0&0\0&0&1&0\-3&3&-2&-1\2&-2&1&1 \end{bmatrix}.

پس:

p(u)=u^TM_Hq.

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

شکل ۱۰.۱۴ — فرم Hermite در نقطهٔ اتصال.

فرم blending برای Hermite:

p(u)=b(u)^Tq,

که:

b(u)=M_H^Tu= \begin{bmatrix} 2u^3-3u^2+1\-2u^3+3u^2\u^3-2u^2+u\u^3-u^2 \end{bmatrix}.

هیچ‌یک از این چهار چندجمله‌ای در بازهٔ باز ((0,1)) صفر ندارند و بسیار نرم‌تر از blending functionهای درون‌یاب هستند.

یک patch bicubic Hermite نیز به‌صورت

p(u,v)=\sum_{i=0}^{3}\sum_{j=0}^{3}b_i(u)b_j(v)q_{ij}

تعریف می‌شود. چهار عنصر (Q=[q_{ij}]) گوشه‌های patch را درون‌یابی می‌کنند و عناصر دیگر برای تطبیق مشتق‌های خاص در گوشه‌ها هستند. در کاربردهای تعاملی معمولاً کاربر نقطه وارد می‌کند نه مشتق؛ بنابراین دادهٔ مشتق همیشه در دسترس نیست. این محدودیت ما را به فرم Bézier می‌رساند.

۱۰.۵.۲ پیوستگی هندسی و پارامتری

دو قطعهٔ (p(u)) و (q(u)) را در یک نقطهٔ اتصال در نظر بگیرید.

شکل ۱۰.۱۵ — پیوستگی در نقطهٔ اتصال.

برای پیوستگی خود تابع باید:

p(1)=q(0)

باشد، یعنی هر سه مؤلفهٔ پارامتری برابر باشند. این حالت پیوستگی پارامتری (C^0) است.

اگر علاوه بر آن:

p'(1)=q'(0)

باشد، پیوستگی پارامتری (C^1) داریم.

از دید هندسی شرط ضعیف‌تری کافی است. مشتق جهت مماس را می‌دهد؛ بنابراین می‌توان فقط تناسب دو مشتق را خواست:

p'(1)=\alpha q'(0),\qquad \alpha>0.

در این صورت جهت مماس یکسان است ولی اندازهٔ آن می‌تواند متفاوت باشد. این حالت پیوستگی هندسی (G^1) است. چون به‌جای سه شرط، عملاً دو شرط جهت داریم، یک درجهٔ آزادی اضافی برای معیارهای دیگر باقی می‌ماند. مفهوم به مشتق‌های بالاتر و (C^n)، (G^n) تعمیم می‌یابد.

شکل ۱۰.۱۶ — تغییر اندازه در پیوستگی (G^1).

دو منحنی با جهت مماس یکسان ولی اندازهٔ مماس متفاوت، شکل متفاوتی دارند. برنامه‌های نقاشی از این ویژگی برای تغییر تعاملی اندازهٔ tangent استفاده می‌کنند. در برخی کاربردها مانند مسیر حرکت در انیمیشن، صرف (G^1) ممکن است کافی نباشد.

۱۰.۶ منحنی‌ها و سطح‌های Bézier

Hermite و فرم درون‌یاب دادهٔ یکسانی مصرف نمی‌کنند؛ در Hermite مشتق نیز لازم است. با تقریب مشتق‌های Hermite از همان نقاط کنترلی که برای درون‌یابی داشتیم، منحنی Bézier حاصل می‌شود. این منحنی‌ها تقریب بسیار خوبی از Hermite هستند و چون فقط دادهٔ نقطه می‌خواهند برای گرافیک و CAD مناسب‌اند.

۱۰.۶.۱ منحنی‌های Bézier

چهار نقطهٔ (p_0,p_1,p_2,p_3) را در نظر بگیرید و همچنان دو سر منحنی را درون‌یابی کنید:

p_0=p(0),\qquad p_3=p(1).

Bézier پیشنهاد کرد دو نقطهٔ میانی برای تقریب مماس‌های دو انتها به کار روند:

p'(0)\approx \frac{p_1-p_0}{1/3}=3(p_1-p_0),
p'(1)\approx \frac{p_3-p_2}{1/3}=3(p_3-p_2).

شکل ۱۰.۱۷ — تقریب مماس‌ها.

این شرط‌ها برای (p(u)=u^Tc) می‌شوند:

3p_1-3p_0=c_1,
3p_3-3p_2=c_1+2c_2+3c_3,

به‌همراه:

p_0=c_0,\qquad p_3=c_0+c_1+c_2+c_3.

حل دستگاه:

c=M_Bp.

ماتریس هندسی Bézier:

M_B= \begin{bmatrix} 1&0&0&0\-3&3&0&0\3&-6&3&0\-1&3&-3&1 \end{bmatrix}.

و منحنی:

p(u)=u^TM_Bp.

برای دنبالهٔ نقاط، چهار نقطهٔ اول قطعهٔ اول و سپس (p_3,p_4,p_5,p_6) قطعهٔ بعدی را می‌سازند. (C^0) تضمین می‌شود ولی (C^1) Hermite را از دست می‌دهیم، چون تقریب مشتق در دو سمت اتصال یکسان نیست.

توابع blending:

p(u)=b(u)^Tp,
b(u)=M_B^Tu= \begin{bmatrix} (1-u)^3\3u(1-u)^2\3u^2(1-u)\u^3 \end{bmatrix}.

شکل ۱۰.۱۸ — چندجمله‌ای‌های blending برای مکعب Bézier.

این‌ها نمونه‌ای از چندجمله‌ای‌های Bernstein هستند:

b_k^d(u)=\frac{d!}{k!(d-k)!}u^k(1-u)^{d-k}.

چندجمله‌ای‌های Bernstein خواص مهمی دارند. صفرهای آن‌ها فقط در (u=0) یا (u=1) است و بنابراین برای (0<u<1):

b_i^d(u)>0.

همچنین:

b_i^d(u)<1, \qquad \sum_{i=0}^{d}b_i^d(u)=1.

پس نمایش Bézier:

p(u)=\sum_{i=0}^{3}b_i(u)p_i

یک مجموع محدب است. در نتیجه کل منحنی در پوستهٔ محدب چهار نقطهٔ کنترل قرار می‌گیرد.

شکل ۱۰.۱۹ — پوستهٔ محدب و چندجمله‌ای Bézier.

بنابراین حتی اگر منحنی همهٔ نقاط را interpolate نکند، از آن‌ها دور نمی‌شود. نرمی blendingها، خاصیت پوستهٔ محدب و استفاده از نقاط کنترل، ویرایش تعاملی Bézier را بسیار ساده می‌کند.

۱۰.۶.۲ patchهای سطحی Bézier

اگر (P=[p_{ij}]) آرایهٔ (4\times4) نقاط کنترل باشد:

p(u,v)=\sum_{i=0}^{3}\sum_{j=0}^{3}b_i(u)b_j(v)p_{ij} =u^TM_BPM_B^Tv.

patch کاملاً در پوستهٔ محدب نقاط کنترل قرار دارد و نقاط (p_{00},p_{03},p_{30},p_{33}) را درون‌یابی می‌کند.

شکل ۱۰.۲۰ — patch بزیه.

در گوشهٔ (u=v=0):

p(0,0)=p_{00},
\frac{\partial p}{\partial u}(0,0)=3(p_{10}-p_{00}),
\frac{\partial p}{\partial v}(0,0)=3(p_{01}-p_{00}),
\frac{\partial^2p}{\partial u\partial v}(0,0) =9(p_{00}-p_{01}+p_{10}-p_{11}).

سه شرط نخست تعمیم طبیعی منحنی Bézier هستند. مشتق مختلط آخر معیاری از twist یا تمایل patch به خروج از تخت بودن در گوشه است. چهارضلعی نقاط مربوط فقط وقتی هم‌صفحه است که twist صفر باشد.

شکل ۱۰.۲۱ — twist در گوشهٔ patch بزیه.

۱۰.۷ B-Splineهای مکعبی

منحنی‌ها و patchهای Bézier بسیار رایج‌اند، اما در نقاط اتصال یا لبهٔ patch تنها (C^0) دارند. برای شکل‌های فیزیکی نرم‌تر این محدودیت مشکل‌ساز است. به‌جای رفتن به چندجمله‌ای‌های درجهٔ بالا یا قطعه‌های بسیار کوتاه، می‌توان همان نقاط کنترل را استفاده کرد ولی الزام درون‌یابی هیچ‌یک را برداشت. اگر منحنی به نقاط نزدیک بماند و اتصال‌ها نرم‌تر شوند، نتیجه مطلوب‌تر است.

۱۰.۷.۱ منحنی B-Spline مکعبی

چهار نقطهٔ میانی از یک دنباله را در نظر بگیرید:

\{p_{i-2},p_{i-1},p_i,p_{i+1}\}.

به‌جای آن‌که منحنی با (u\in[0,1]) از (p_{i-2}) تا (p_{i+1}) کشیده شود، فقط فاصلهٔ بین دو نقطهٔ میانی را پوشش می‌دهد.

شکل ۱۰.۲۲ — چهار نقطه‌ای که منحنی بین دو نقطهٔ میانی را تعیین می‌کنند.

اگر (p(u)) قطعهٔ بین (p_{i-1}) و (p_i) باشد:

p(u)=u^TMp,

که

p= \begin{bmatrix} p_{i-2}\\p_{i-1}\\p_i\\p_{i+1} \end{bmatrix}.

قطعهٔ سمت چپ:

q(u)=u^TMq,

با

q= \begin{bmatrix} p_{i-3}\\p_{i-2}\\p_{i-1}\\p_i \end{bmatrix}.

شرط پایه:

p(0)=q(1)

پیوستگی در اتصال را تضمین می‌کند، بدون آن‌که لازم باشد هیچ نقطهٔ داده‌ای interpolate شود.

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

p(0)=q(1)=\frac16(p_{i-2}+4p_{i-1}+p_i),
p'(0)=q'(1)=\frac12(p_i-p_{i-2})

هستند. اگر (p(u)=u^Tc):

c_0=\frac16(p_{i-2}+4p_{i-1}+p_i),
c_1=\frac12(p_i-p_{i-2}).

در انتهای دیگر نیز:

p(1)=\frac16(p_{i-1}+4p_i+p_{i+1}),
p'(1)=\frac12(p_{i+1}-p_{i-1}).

حل این چهار شرط، ماتریس هندسی B-Spline را می‌دهد:

M_S=\frac16 \begin{bmatrix} 1&4&1&0\-3&0&3&0\3&-6&3&0\-1&3&-3&1 \end{bmatrix}.

توابع blending:

b(u)=M_S^Tu = \frac16 \begin{bmatrix} (1-u)^3\4-6u^2+3u^3\1+3u+3u^2-3u^3\u^3 \end{bmatrix}.

شکل ۱۰.۲۳ — توابع blending اسپلاین.

داریم:

\sum_{i=0}^{3}b_i(u)=1, \qquad 0<b_i(u)<1 \quad (0<u<1).

پس منحنی در پوستهٔ محدب نقاط کنترل قرار دارد.

شکل ۱۰.۲۴ — پوستهٔ محدب برای منحنی spline.

منحنی نه‌تنها (C^1)، بلکه (C^2) است؛ با ارزیابی مشتق دوم در دو سوی اتصال می‌توان این را دید. از دید فیزیکی فلز طوری خم می‌شود که مشتق دوم پیوسته باشد و از دید بصری، قطعه‌های مکعبی با (C^2) حتی در اتصال نیز نرم دیده می‌شوند.

این نرمی هزینه دارد: در مقایسه با Bézier یا درون‌یاب مکعبی، تقریباً سه برابر قطعه لازم است، چون هر منحنی فقط فاصلهٔ بین نقاط کنترل (i-1) و (i) را پوشش می‌دهد، در حالی که Bézier با همان چهار نقطه از (i-2) تا (i+1) گسترده می‌شود.

۱۰.۷.۲ B-Spline و پایه

به‌جای نگاه به یک بازه، می‌توان سهم یک نقطهٔ کنترل را بررسی کرد. هر نقطهٔ کنترل در چهار بازهٔ مجاور روی spline اثر می‌گذارد. همین ویژگی محلی بودن را تضمین می‌کند: تغییر یک نقطه فقط چهار بازهٔ مجاور را تغییر می‌دهد.

برای نقطهٔ (p_i)، سهم کلی را می‌توان (B_i(u)p_i) نوشت، که (B_i) تابع قطعه‌ای است:

B_i(u)= \begin{cases} 0 & u<i-2,\b_0(u+2) & i-2\le u<i-1,\b_1(u+1) & i-1\le u<i,\b_2(u) & i\le u<i+1,\b_3(u-1) & i+1\le u<i+2,\0 & u\ge i+2. \end{cases}

برای نقاط کنترل (p_0,\ldots,p_m)، کل spline را می‌توان یک‌جا نوشت:

p(u)=\sum_{i=1}^{m-1}B_i(u)p_i.

تابع‌های (B(u-i)) نسخه‌های جابه‌جا‌شدهٔ یک تابع پایه‌اند و یک basis برای همهٔ B-Splineهای مکعبی تشکیل می‌دهند. در نتیجه منحنی قطعه‌ای روی کل بازه، ترکیب خطی توابع پایه است. نظریهٔ عمومی spline که در بخش ۱۰.۸ می‌آید، این دید را به درجه‌های بالاتر و چندجمله‌ای‌های متفاوت در بازه‌های مختلف گسترش می‌دهد.

۱۰.۷.۳ سطح‌های spline

سطح‌های B-Spline نیز به روش مشابه و از توابع blending اسپلاین ساخته می‌شوند؛ ادامهٔ تعریف و تعمیم عمومی آن در بخش بعدی آمده است.

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

0 / 500

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620