• مشکی
  • سفید
  • سبز
  • آبی
  • قرمز
  • نارنجی
  • بنفش
  • طلایی
  • تعداد بازديد :
  • 3728
  • دوشنبه 1385/12/28 ساعت 19:33
  • تاريخ :

ریاضیات حروف و کلمات

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

 

این روزها هر کس با کامپیوتر و نرم افزارهایی مثلWord سر و کار داشته باشد با مفهوم فونت آشناست و می‌داند که زندگی بدون فونت‌ها بیش از حد تحمل یک نواخت است.

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

ریاضیات حروف و کلمات

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

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

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

ریاضیات حروف و کلمات

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

مثلا برای اینکه شکلی رسم کنیم که از سه نقطهA و ‌B وC بگذرد و در ضمن در نقطه وسط شکستگی نداشته باشدباید این مساله را حل کنیم. ابتدا یک معادله درجه 2 پیدا کنیم که نمودار آن از نقاطA وB بگذرد و شیب خط مماس بر آن در نقطهB برابر مقدار مشخصی مثلq باشد. سپس باید معادله درجه 2 دیگری پیدا کنیم که نمودار آن از نقاطB وC بگذرد و شیب خط مماس بر آن در نقطهB برابرq باشد.

ریاضیات حروف و کلمات

فرض کنید تابع اول ریاضیات حروف و کلمات و تابع دوم ریاضیات حروف و کلمات باشد و داشته باشیم:

ریاضیات حروف و کلمات

در این صورت با توجه به اطلاعاتی که داریم برای بدست آوردن ضرایب دو چند جمله ای - یعنی P و Q‌ و ... - باید دو دستگاه زیر را حل کنیم.

ریاضیات حروف و کلمات

 

ریاضیات حروف و کلمات

 

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

 

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

 

برای تقریب زدن فونت‌ها از منحنی های درجه 3 استفاده می‌شود یعنی هر قطعه خم با 4 پارامتر مشخص می‌شود:

 

نقطه ابتدای خم/ نقطه انتهای خم/ شیب خط مماس بر خم در نقطه ابتدایی/ شیب خط مماس بر خم در نقطه انتهایی

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

 

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

 

در Applet‌ زیر یک خم و ۴ نقطه مربوط به آن را ببینید. با جا به جا کردن نقاط می توانید خم های مختلفی به دست آورید. ( مثلا اگر چهار نقطه را در ۴ راس یک مستطیل قرار دهید شکل استاندارد یک منحنی درجه ۳ را خواهید دید. )

برای دیدن محیط تعاملی، نرم افزار جاوا را از اینجا دریافت کنید.

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

برای دیدن محیط تعاملی، نرم افزار جاوا را از اینجا دریافت کنید.

در این شکل می توانید تصویری از یک «ط» را از فونت «تیتر» ببینید نقاط سروته خم با قرمز و بعضی از نقاط کنترل با سبز نشان داده شده اند.

ریاضیات حروف و کلمات

در حال حاضر همه فونت هایی که با نام True Type‌ شناخته می شوند با استفاده از همین روش ساخته می شوند و در واقع حروف چینی و نشر کامپیوتری بدون کمک این روش ممکن نیست. از این روش در برنامه هایی مثل Adobe Illustrator و یا Macromedia Flash و Macromedia Freehand که به برنامه های گرافیکی برداری مشهورند هم برای توصیف و ذخیره سازی تصاویر استفاده می شود. حجم تصاویری که با این روش ذخیره می شوند از آن جا که تنها شامل مختصات تعداد محدودی نقطه های سر و ته خم و نقاط کنترل هستند بسیار کمتر از تصاویری است که با روش هایی مثل JPEG و GIF که مبتنی بر ذخیره تک تک نقاط تصویر هستند ذخیره می شوند. در ضمن تصاویر برداری را می توان به اندازه دلخواه بدون افت کیفیت بزرگ کرد در حالی که مثلا یک تصویر  GIF با کمی بزرگ شدن کاملا نامفهوم می شود. اگر یکی از این برنامه ها را در اختیار دارید در آن به سراغ این ابزار بروید و با آن شکل دلخواهتان را به روشی که شرح دادیم بسازید

ریاضیات حروف و کلمات

برای مقایسه می توانید این دو فایل را که حاوی یک تصویر هستند Save کنید و سپس به هر دو نگاه کنید، آنها را تا حد امکان بزرگ کنید و حجم آن ها را با هم مقایسه کنید:

فایل برداری حدود ۱۶ کیلوبایت

فایل JPEG حدود ۷۲ کیلوبایت

UserName