گرافیک برداری

نگاشتار برداری یا گرافیک برداری (به انگلیسی: Vector Graphics) روشی در تولید و ذخیرهٔ فایل‌های تصویری کامپیوتری است که در آن تصویر در قالب مجموعه‌ای از مشخصات هندسی نقاط، خط‌ها، منحنی‌ها و چندضلعی‌ها ذخیره می‌شود. واژهٔ «بردار» در این کاربرد معنایی وسیع‌تر از یک خط راست دارد.

تفاوت گرافیک برداری و گرافیک شطرنجی هنگام بزرگنمایی

تصاویر تعریف شده به کمک گرافیک برداری، از خطوط و منحنی‌هایی به نام بردار تشکیل شده‌اند که به صورت ریاضی تعریف می‌شوند. اجزای این تصاویر را می‌توان بدون از دست دادن کیفیت و مشکلات ایلیاسینگ (به انگلیسی: Aliasing) به راحتی جا به جا کرد و تغییر اندازه داد. این تصاویر مستقل از رزولوشن هستند و می‌توان آن‌ها را بزرگ و کوچک کرد و در هر رزولوشن بدون از دست دادن جزئیات و وضوح چاپ کرد. از شناخته شده ترین فرمت‌های ذخیرهٔ فایل‌های گرافیک برداری، فرمت SVG است که مخفف Scalable Vector Graphics است. همچنین گرافیک برداری در بسیاری از فرمت همچون EPS و PDF نیز یافت می شوند.

گرافیک برداری در مقابل گرافیک شطرنجی (به انگلیسی: Raster Graphics) قرار می‌گیرد که در آن تصویر به صورت مجموعه‌ای از پیکسل‌ها ذخیره می‌شود و رنگ هر پیکسل به‌طور جداگانه ذخیره می‌شود. اکثر فرمت‌های رایج فایل‌های تصویری مانند JPG، PNG، GIF بر مبنای گرافیک شطرنجی هستند.

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

نحوه ذخیره سازی حرف A در گرافیک برداری و گرافیک شطرنجی

به فرآیند تبدیل یک تصویر از گرافیک برداری به گرافیک شطرنجی شطرنجی سازی (به انگلیسی: Rasterization) گویند.

برعکس به فرآیند تبدیل یک تصویر از گرافیک شطرنجی به گرافیک برداری Image tracing گویند.

از آنجا که بسیاری از صفحه های نمایش امروزی به صورت ماتریسی از پیکسل ها هستند یکی از وظایف مهم پردازنده های گرفیکی (به انگلیسی: GPU)، شطرنجی سازی سریع تصویر های برداری و نمایش آنها روی صفحه نمایش است.

پیشینه

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

اولین استفاده از گرافیک برداری به شکل نمایشگر های برداری به سال ۱۹۵۸ در سیستم دفاعی ایالات متحده بر می گردد. همچنین گرافیک برداری به طور جدی در نرم افزار Sketchpad که ایوان سادرلند دانشمند پیشرو حوزه گرافیک کامپیوتر نوشته است، مورد استفاده قرار گرفته است. حائز اهمیت است که نرم افزار Sketchpad به عنوان اولین نرم افزار با رابط کاربر گرفیکی شناخته می شود که طراحی آن بسیار به طراحی شی گرایی امروزی نزدیک است.

سیستم هایی دیگری که از گرافیک کامپیوتری استفاده می کردند عبارت اند از: IBM 2250، Imlac PDS-1، DEC GT40. همچنین کنسول بازی Vectrex از گرافیک برداری برای نمایش تصاویر استفاده می کرد و بسیاری از کنسول های بازی آرکید از مانیتور های برداری برای نمایش صفحه بازی استفاده می کردند.

چاپگر های بسیاری از گرافیک برداری برای چاپ تصویر روی کاغذ استفاده می کردند (مانند پلاتر ها) به طوریکه قلمی به صورت مکرر روی کاغذ حرکت می کند تا خطوط و منحنی های مد نظر را رسم کند.

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

استاندارد ها

 
این تصویر چند ویژگی از گرافیک برداری را خلاصه می کند: امکان بزرگنمایی بدون از دست رفتن کیفیت، نداشتن مشکلات ایلیاسنگ و امکان استفاده از طیف رنگی یکنواخت.

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

در سال های اخیر SVG به فرمتی تبدیل شده که کاملا مستقل از رزولوشن و کیفیت رندر کننده (نمایشگر یا چاپگر) است. فایل های SVG ذاتاً فایل های متنی هستند که نحوه قرارگیری و جزییات ظاهری خطوط راست، منحنی ها، ناحیه ها و ... در آنها توصیف می شوند. به همین دلیل نمایش یا رندر آن با توجه به رزولوشن دستگاه نیازمند شطرنجی سازی است. ویکی پدیا از فرمت SVG برای تصاویری از قبیل نقشه های ساده، لوگو ها، پرچم ها و نشان های ملی، استفاده می کند.

ورژنی از SVG برای تلفن های همراه به نام SVGT یاSVG Tiny version موجود است که پیاده سازی سبکتری نسبت به فرمت اصلی SVG دارد.

تبدیل به گرافیک شطرنجی یا شطرنجی سازی

 
تصویر اصلی قبل از Image tracing یا برداری سازی
 
در گرافیک برداری امکان اضافه، کم کردن و ویرایش اشیا گرافیکی تصویر وجود دارد.

نمایشگر و چاپگر های امروز همگی از گرافیک شطرنجی استفاده می کنند. بدین معنی که اطلاعات برای نمایش یا خروجی چاپی باید به صورت پیکسل به پیکسل (بیت مپ یا آرایه پیکسلی) تعریف شوند. در پی تبدیل گرافیک برداری به بیت مپ ها، حجم فایل حاصل تابعی از رزولوشن دستگاه رندر کننده است ولی کماکان حجم فایل SVG متناظر به دلیل ماهیتش به مراتب کمتر است و در بین سیستم های مختلف ثابت است.

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

استفاده از گرافیک برداری برای مواقعی که نیاز به فوتورئالیسم نداشته باشیم مناسبند.

از همین رو است که برخی معقدند که نام گرافیک شی گرا (object-oriented graphics) برای گرافیک برداری مناسبتر است زیرا منظور از بردار در این سیستم بردار فضای اقلیدسی نیست بلکه اشیایی هندسی است که به صورت ریاضی قابل توصیف باشند. اما این نام نیز می تواند گمراه کننده باشد و به صورت سیستمی گرافیکی که با برنامه نویسی شی گرا طراحی شده، تفسیر شود.

عملیات های مرسوم

چند مزیت گرافیک برداری نسبت به گرافیک شطرنجی عبارت اند از:

  • از آنجا که گرافیک برداری به صورت مجموعه‌ای از نقاط صفحه مختصات و مسیر های (خطوط و خم ها) بین این نقاط تعریف می شود، امکان ویرایش پارامتر های مربوط به اشیا به طور مستقل وجود دارد. در واقع هر شی گرافیکی را می توان مستقلا تحت تبدیلات هندسی مانند تجانس یا Homothecy یا Dilation، دوران یا Rotation، بازتاب یا Reflection و انتقال یا Translation قرار داد (به طور کلی تحت هر تبدیل آفینی). همچنین امکان استفاده از الگوریتم های انباشتن سیلابی یا (flood fill) روی این اشیا گرافیکی وجود دارد.
  • حجم فایل حاوی گرافیک برداری با ابعاد اشیا گرافیکی موجود در آن ارتباطی ندارد. به عنوان مثال یک دایره با شعاع ۱۰۰ را در گرافیک برداری با مخصات مرکز دایره و شعاع آن توصیف کرد در حالی که پیاده سازی آن در گرافیک شطرنجی نیاز به حافظه زیادی دارد و مستلزم استفاده از الگوریتم های فشرده سازی تصویر هستیم.
  • استفاده از گرافیک برداری در پرسپکتیو سه بعدی معنای بیشتری دارد چرا که سایه ها با پیمایش پرتو های نور واقعی تر نمایش داده می شوند.
  • بزرگنمایی کمان ها و دایره ها موجب ایلیاسینگ نمی شود و خم ها هموار باقی می مانند. در حالی که چندضلعی هایی که برای تقریب کمان ها در گرافیک شطرنجی استفاده می شوند با کمی بزرگنمایی ویزگی هموار بودن را از دست می دهند. این مزیت گرافیک برداری به کمک رندر در لحظه است.
  • خطوط و خم ها با بزرگنمایی، به نسبت عریض و پهن نمی شوند.

به عنوان مثال، برای توصیف یک دایره به شعاع r در گرافیک برداری، ارائه اطلاعات زیر ضروری است:

  1. علامت یا نشانه‌ای حاکی از آن که شکل مد نظر دایره است.
  2. مقدار شعاع یا r
  3. مختصات مرکز دایره
  4. رنگ و ویژگی های ظاهری محیط دایره (مانند ضخامت، نقطه چین یا خط چین بودن، شفافیت و ...)
  5. رنگ و ویژگی های ظاهری ناحیه درون دایره

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

اگر چه بسیاری از نرم افزار های ویرایش تصاویر نیز وجود دارند که امکان ترکیب و استفاده از منابع تصویری برداری و شطرنجی را می دهند.

اشیا گرافیکی اولیه

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

اکثر فرمت های برداری موارد زیر را نیز پشتیبانی می کنند:

تعدادی از فرمت های تخصصی برداری (برای کاربرد های مهندسی خاص)، اشیا گرافیکی زیر را نیز پشتیبانی می کنند:

نرم افزار های تولید گرافیک برداری

نرم افزار های موجود برای تولید تصاویر با فرمت گرافیک برداری به دو دسته تقسیم می شوند: دسته‌ای بدون رابط کاربر گرافیکی که نیازمند برنامه نویسی هستند و دسته‌ای که امکان drag-and-drop اشیا گرافیکی با واسط کاربری.

 
لوگوی SVG زبان Asymptote که توسط خود زبان تولید شده است.

نرم افزار های دسته اول بسیار شبیه به کامپایلر ها هستند. زبان توصیف گرافیک برداری Asymptote برای رسم تصاویر فنی مورد نیاز در کتب ریاضی و مهندسی استفاده می شود. سیستم حروفچینی نویسه ها و معادلات ریاضی در این زبان مانند لاتک است و همچنین افزونه هایی برای استفاده مستقیم آن در کد منبع لاتک وجود دارد. رابطه گرافیکی برای کاربران تازه‌کار این زبان به کمک زبان برنامه نویسی پایتون نوشته شده است که Xasy نام دارد. زبان Asymptote از زبان متا پست (MetaPost) الگو گرفته است ولی سینتکسی بسیار مشابه زبان C دارد.

 
خم های ادواردز رسم شده توسط Asymptote

نمونه کد در این زبان برای رسم نمودار های ون ادواردز:

import graph;
size(8cm);
int k = 1;
real f (real t) {
	return 1 + cos(t * 2^k) / 2^k; 
}
draw((0, -2) -- (0, 2) .. (2,0) .. cycle);
draw((-2, 0) -- (2, 0) .. (0,-2) .. cycle, cyan);
draw(circle((0,0), 1), red);
draw(polargraph(f, 0, 2pi), green);
k = 2;
draw(polargraph(f, 0, 2pi), blue);
k = 3;
draw(polargraph(f, 0, 2pi), orange);


همچنین برای ویرایش تصاویر با یک فرمت گرافیک برداری خاص مانند SVG یا EPS میتوان از ابزار مناسب برای آن فرمت استفاده کرد. به عنوان مثال نرم افزار متن باز Draw.io امکان تولید و ویرایش تصاویر گرافیک برداری SVG را به کمک رابط کاربر گرافیکی می دهد.

جستارهای وابسته

پانویس

منبع