Theory
દરેક ચિત્રના પાયાના ટુકડા
Computer પરનું ચિત્ર ગમે તેટલું ગૂંચવણભર્યું લાગે, એ primitives કહેવાતા થોડા પાયાના આકારોમાંથી જ બન્યું હોય છે. Game નું પાત્ર હોય, આકૃતિ હોય કે font નો અક્ષર, છેવટે એ બધું points, lines અને વળાંકોના જોડાણથી જ બને છે.
આ પાઠ મુખ્ય graphics objects નો પરિચય આપે છે: point, line, circle અને ellipse, તથા polygon. દરેકની ગાણિતિક વ્યાખ્યા જાણવી જરૂરી છે, કારણ કે હવે પછીનો unit આ આકારોને pixel ની જાળી પર દોરવા વિશે છે, અને જે આકારનું વર્ણન જ ન કરી શકાય એને દોરી પણ ન શકાય. Primitives શીખી લો, પછી drawing algorithms આપોઆપ સમજાવા લાગશે.
At a glance
| Object | શેનાથી નક્કી થાય છે |
|---|---|
| Point | એક જ સ્થાન: યામ (x, y) |
| Line | બે છેડા (x1, y1) અને (x2, y2) વચ્ચેનો સીધો ટુકડો |
| Circle | કેન્દ્ર (h, k) થી r ત્રિજ્યા જેટલા અંતરે આવેલા બધા points |
| Ellipse | Circle જેવું જ, પણ બે ત્રિજ્યાઓ સાથે (આડી a, ઊભી b) |
| Polygon | શિરોબિંદુઓને જોડતા સીધા ટુકડાઓથી બનતો બંધ આકાર |
Theory
Point, line અને ગોળ આકારો
Point સૌથી પાયાનું object છે: યામ (x, y) થી નક્કી થતું એક જ સ્થાન, જે એક pixel તરીકે દોરાય છે. બાકીનું બધું points માંથી જ બને છે.
Line એટલે બે છેડા, (x1, y1) અને (x2, y2), ને જોડતો સીધો ટુકડો. એ સૌથી વધુ કામ કરતું primitive છે, કારણ કે મોટા ભાગના આકારો lines માંથી બને છે.
Circle એટલે કેન્દ્ર (h, k) થી નિશ્ચિત અંતરે, એટલે કે ત્રિજ્યા r જેટલા અંતરે, આવેલા બધા points નો સમૂહ. Ellipse એ circle નું વિસ્તૃત રૂપ છે: એને બે ત્રિજ્યાઓ હોય છે, એક આડી (a) અને એક ઊભી (b), એટલે એ ખેંચાયેલા circle જેવું લાગે છે. જ્યારે a અને b સરખાં હોય ત્યારે ellipse એ circle જ બની જાય છે. આ ગોળ આકારો છેડાઓથી નહીં, પણ પોતાના કેન્દ્ર અને ત્રિજ્યાઓથી નક્કી થાય છે.
Theory
Polygons: lines માંથી બનતા બંધ આકારો
Polygon એટલે સીધા line segments (એની બાજુઓ) થી બનેલી બંધ આકૃતિ, જે ખૂણાનાં બિંદુઓ (શિરોબિંદુઓ) ને જોડે છે. ત્રિકોણ એ 3 બાજુવાળું polygon છે, લંબચોરસ 4 બાજુવાળું, અને એ રીતે આગળ.
Polygons જરૂરી છે કારણ કે એ સાદી lines માંથી ગૂંચવણભર્યા આકારો ઊભા કરે છે, અને ખાસ તો 3D objects સામાન્ય રીતે polygons ની જાળી (mesh) તરીકે જ ઘડાય છે (ઘણી વાર ત્રિકોણોની). એટલે સાદી line, છેડે છેડે જોડાઈને બંધ ગાળા બનાવે, ત્યારે એ લગભગ કોઈ પણ આકાર રજૂ કરવાનો પાયો બની જાય છે. એટલે જ line ને સારી રીતે દોરવી (જે હવે પછીના unit નું કેન્દ્ર છે) આટલી પાયાની બાબત છે: lines માંથી polygons બને છે, અને polygons માંથી બાકીનું બધું.
Quiz
Graphics primitive તરીકે circle ની વ્યાખ્યા કઈ રીતે થાય છે?
- Line ની જેમ બે છેડાથી
- કેન્દ્રબિંદુ (h, k) થી નિશ્ચિત અંતરે (ત્રિજ્યા r જેટલા અંતરે) આવેલા બધા points તરીકે
- સીધા line segments થી બનેલા બંધ આકાર તરીકે
- બે જુદી ત્રિજ્યાઓથી, એક આડી અને એક ઊભી
Show the answer
કેન્દ્રબિંદુ (h, k) થી નિશ્ચિત અંતરે (ત્રિજ્યા r જેટલા અંતરે) આવેલા બધા points તરીકે
Circle ની વ્યાખ્યા છે કેન્દ્રબિંદુ (h, k) થી નિશ્ચિત અંતરે, એટલે કે ત્રિજ્યા r જેટલા અંતરે, આવેલા બધા points નો સમૂહ; circle પરનું દરેક બિંદુ કેન્દ્રથી બરાબર r જેટલું દૂર હોય છે. વિકલ્પ A LINE નું વર્ણન કરે છે (બે છેડા), circle નું નહીં. વિકલ્પ C POLYGON નું વર્ણન કરે છે (સીધા line segments થી બનેલો બંધ આકાર), જે સુંવાળો વળાંક નથી. વિકલ્પ D ELLIPSE નું વર્ણન કરે છે, જેને બે ત્રિજ્યાઓ હોય છે (આડી a અને ઊભી b); circle એ ખાસ કિસ્સો છે જેમાં બંને ત્રિજ્યાઓ સરખી હોય. એટલે circle માટે એક કેન્દ્ર અને એક ત્રિજ્યા જોઈએ; એ જ એની વ્યાખ્યા આપતું વર્ણન છે.
Think first
આકારોને primitives તરીકે રજૂ કરવાથી એમને દોરવામાં શો ફરક પડે છે?
દરેક ચિત્રને આખું ગણવાને બદલે એને points, lines, circles અને polygons માં કેમ તોડવું? વિચારીને પછી tap કરો.
Show the answer
કારણ કે computer એ જ દોરી શકે જેનું એ ચોકસાઈથી વર્ણન કરી શકે, અને દરેક ચિત્રને થોડાં સુસ્પષ્ટ primitives માં ઉતારવાથી તમારે ફક્ત એટલાં જ માટે algorithms જોઈએ; પછી એમને જોડીને કોઈ પણ ચિત્ર બનાવી શકાય.
Raster display છેવટે તો એક એક pixel જ પ્રગટાવે છે, એટલે કોઈ આકાર દોરવા માટે computer એ ગણવું પડે કે એમાં બરાબર કયા pixels આવે છે, અને એ ગણતરી આકારની ગાણિતિક વ્યાખ્યા પર જ સંપૂર્ણપણે આધાર રાખે છે. બે છેડાથી નક્કી થતી line માટે એની ઉપર કયા pixels આવે એનું સ્પષ્ટ સૂત્ર છે (DDA અને Bresenham એ જ ગણે છે); કેન્દ્ર અને ત્રિજ્યાથી નક્કી થતા circle માટે એના pixels નો સ્પષ્ટ નિયમ છે; અને polygon તો ફક્ત lines ની હારમાળા જ છે.
આ primitives સાદાં અને ચોકસાઈથી વ્યાખ્યાયિત હોવાથી, આપણે દરેક માટે એક જ વાર કાર્યક્ષમ અને સાચાં drawing algorithms લખી શકીએ છીએ. પછી ગમે તેટલું વિસ્તૃત અને ગૂંચવણભર્યું ચિત્ર પણ આ જ પાયાના ટુકડાઓમાંથી ગોઠવાય છે: પાત્ર એટલે polygons અને વળાંક, આકૃતિ એટલે lines અને circles, અને 3D model એટલે ત્રિકોણોની જાળી.
આ બહુ શક્તિશાળી વિભાજન છે: દરેક શક્ય ચિત્ર માટે અલગ ખાસ પદ્ધતિ જોઈએ (જે અશક્ય છે) એને બદલે તમારે મુઠ્ઠીભર primitives માટે drawing routines જોઈએ, અને એમને જોડવાની તથા ગોઠવવાની રીત જોઈએ (અને એ કામ transformations કરે છે).
એ એ જ વાત છે જે રીતે ગૂંચવણભર્યા programs સાદાં functions માંથી બને છે, કે ગૂંચવણભરી રચનાઓ સાદા ભાગોમાંથી. એટલે આકારોને primitives તરીકે વ્યાખ્યાયિત કરવા એ ફક્ત સુઘડ સંજ્ઞા નથી; એ જ દોરવાનું કામ સાધ્ય બનાવે છે. ચિત્રનું વર્ણન primitives માં કરો, અને તમે એને pixel દર pixel દોરી શકશો. સાદા અને ચોક્કસ પાયાના ટુકડા જ કોઈ પણ ચિત્રને દોરી શકાય એવું બનાવે છે.
Summary
Key takeaways
- બધાં ચિત્રો પાયાનાં graphics primitives માંથી બને છે.
- Point એટલે એક જ સ્થાન (x, y), જે એક pixel તરીકે દોરાય છે, અને એ સૌથી પાયાનું તત્ત્વ છે.
- Line એટલે બે છેડા (x1, y1) અને (x2, y2) વચ્ચેનો સીધો ટુકડો.
- Circle એટલે કેન્દ્ર (h, k) થી r ત્રિજ્યા જેટલા અંતરે આવેલા બધા points; ellipse circle જેવું જ છે પણ એને બે ત્રિજ્યાઓ હોય છે (આડી a, ઊભી b).
- Polygon એટલે શિરોબિંદુઓને જોડતા સીધા line segments થી બનતો બંધ આકાર (ત્રિકોણ, લંબચોરસ વગેરે).
- ગૂંચવણભર્યા અને 3D આકારો આ જ primitives માંથી બને છે (3D ઘણી વાર ત્રિકોણોની polygon mesh તરીકે).
- યાદ રાખવાની કડી: point, line, circle, ellipse અને polygon એ પાયાના ટુકડા છે જેમને drawing algorithms પડદા પર ઉતારે છે.