Máté: Számítógépes grafika alapjai



Hasonló dokumentumok
Algoritmusok raszteres grafikához

Algoritmusok raszteres grafikához

Algoritmusok raszteres grafikához

Máté: Számítógépes grafika alapjai

Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

Érdekes informatika feladatok

Máté: Számítógépes grafika alapjai

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Grafikus csővezeték és az OpenGL függvénykönyvtár

Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

A kurzusról. Pontok rajzolása. Szegedi Tudományegyetem Informatikai Tanszékcsoport

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Képfeldolgozás és Számítógépes Grafika Tanszék 1. A SZÁMÍTÓGÉPES GRAFIKA TÁRGYA, ALKALMAZÁSAI

Képfeldolgozás és Számítógépes Grafika Tanszék 1. A SZÁMÍTÓGÉPES GRAFIKA TÁRGYA, ALKALMAZÁSAI

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

OpenGL és a mátrixok

Klár Gergely

Számítógépes grafika

2D képszintézis. Szirmay-Kalos László

Tartalom. Tartalom. Hajder Levente Szakasz raszterizálása. 2017/2018. II. félév. Poligon raszterizáció.

VISUAL BASIC ALAPISMERETEK

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 21./0. 3D grafika programozása OpenGL támogatással A 3D API

Számítógépes grafika

Számítógépes grafika

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programfejlesztés az OpenGL segítségével (1. rész) A 3D programozás alapjai

Fejezetek a számítógépi grafikából

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 felhasználása számítógépes grafikában (bevezető egy primitív keretrendszer)

A keretrendszer. A linuxos keretrendszer az eredeti alapján készült (nagyrészt C++-ban), ezért nagyjából azzal azonos funkcionalitásokkal rendelkezik.

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

3D koordináta-rendszerek

BME MOGI Gépészeti informatika 15.

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

. Typeset by AMS -TEX 0

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

A Paint program használata

Máté: Számítógépes grafika alapjai

Cohen-Sutherland vágóalgoritmus

Szürke árnyalat: R=G=B. OPENCV: BGR Mátrix típus: CV_8UC3 Pont típus: img.at<vec3b>(i, j) Tartomány: R, G, B [0, 255]

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./0. 3D grafika programozása OpenGL támogatással Transzformációk

Láthatósági kérdések

Szürke árnyalat: R=G=B. OPENCV: BGR Mátrix típus: CV_8UC3 Pont típus: img.at<vec3b>(i, j) Tartomány: R, G, B [0, 255]

Matematika A2 vizsga mgeoldása június 4.

VII. Appletek, grafika

Szoftvertechnológia alapjai Java előadások

Skaláris szorzat: a b cos, ahol α a két vektor által bezárt szög.

Komputeralgebra rendszerek

2 (j) f(x) dx = 1 arcsin(3x 2) + C. (d) A x + Bx + C 5x (2x 2 + 7) + Hx + I. 2 2x F x + G. x

A színkezelés alapjai a GIMP programban

Érettségi feladatok Koordinátageometria_rendszerezve / 5

valós számot tartalmaz, mert az ilyen részhalmazon nem azonosság.

Pénzügyi algoritmusok

1. Bevezetés 1. Köszönetnyilvánítás A számítógépes játékfejlesztésről 3

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

SZÁMÍTÓGÉPI GRAFIKA VÁGÁS

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

Függvények int, long 1. Adott a mellékelt f alprogram.

Grafikus csővezeték 2 / 77

Máté: Számítógépes grafika alapjai

CAD-CAM-CAE Példatár

Grafika. Egyváltozós függvény grafikonja

Számítógépes Grafika mintafeladatok

Informatika 1. Informatika el adás. Kovács Kristóf, Pálovics Róbert. Budapesti M szaki Egyetem november 13.

Lineáris leképezések. Wettl Ferenc március 9. Wettl Ferenc Lineáris leképezések március 9. 1 / 31

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

értékel függvény: rátermettségi függvény (tness function)

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Matematika (mesterképzés)

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

KÉPFELDOLGOZÁS. 10. gyakorlat: Morfológiai műveletek, alakjellemzők

Feladatok megoldásokkal az első gyakorlathoz (differencia- és differenciálhányados fogalma, geometriai és fizikai jelentése) (x 1)(x + 1) x 1

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Mintavételes szabályozás mikrovezérlő segítségével

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Számítógépes Grafika SZIE YMÉK

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Kettős integrál Hármas integrál. Többes integrálok. Sáfár Orsolya május 13.

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Látható felszín algoritmusok

First Prev Next Last Go Back Full Screen Close Quit

4. gyakorlat: interpolációs és approximációs görbék implementációja

Kérdés Lista. A Magyarországon alkalmazott rajzlapoknál mekkora az oldalak aránya?

Függvények ábrázolása

B8. A CIE 1931 SZÍNINGER-MÉRŐ RENDSZER ISMERTETÉSE;

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Megoldás: Mindkét állítás hamis! Indoklás: a) Azonos alapú hatványokat úgy szorzunk, hogy a kitevőket összeadjuk. Tehát: a 3 * a 4 = a 3+4 = a 7

Programozás I. Grafika Eseménykezelés. Programozás I. 2. gyakorlat Interakció a grafikus felületen, tagfüggvények. Surányi Márton PPKE-ITK

1. Alapok. #!/bin/bash

Fordítás Kódoptimalizálás

Mesh generálás. IványiPéter

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Érettségi feladatok: Koordináta-geometria 1/5

SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Programozási nyelvek 2. előadás

Átírás:

Pontok rajzolása OpenGL Rajzoljunk egy piros pontot a (10, 10), egy zöld pontot az (50, 10) és egy kék pontot a (30, 80) koordinátákba (az ablak 100*100-as méretű) Pontok rajzolása Színek és színmódok RGBA színmód: Minden színt négy komponens definiál: (R, G, B, A) vörös (Red), zöld (Green), kék (Blue), alfa (Alpha) Minél nagyobb az RGB komponens értéke, annál intenzívebb a színkomponens A (átlátszóság): 1.0 - nem átlátszó, 0.0 - teljesen átlátszó Pl.: (0.0, 0.0, 0.0, 0.0) átlátszó fekete Törlő szín void glclearcolor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); Aktuális törlő szín beállítása Alapértelmezés: (0, 0, 0, 0) GLclampf - float Mátrix mód beállítása Transzformációk: mátrixokkal definiálva nézeti (viewing), modellezési (modelling), vetítési (projection) void glmatrixmode(enum mode); Ha mode == GL_PROJECTION, akkor vetítési mátrix pl.: glmatrixmode(gl_projection); Vetítési mátrix megadása (2D) void gluortho2d(double left, double right, double bottom, double top); a (left, right, bottom, top) téglalapban levő objektumok 2D párhuzamos vetítése pl.: gluortho2d(0, 100, 0, 100); void glloadidentity(void); az érvényes mátrix az egységmátrix lesz 02_algoritmusok 1

Program (pontrajzoló) I #include "stdafx.h" // Visual C++ esetén // más fordítónál kicsit másképp void init(void) { glclearcolor(0.0,0.0,0.0,0.0); // fekete a törlőszín glmatrixmode(gl_projection); // vetítés az aktuális mátrix mód glloadidentity(); // legyen az egységmátrix gluortho2d(0,100,0,100); // párhuzamos vetítés specifikálása Pufferek törlése void glclear(glbitfield mask); Pufferek tartalmának a törlése A pufferek: GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, GL_STENCIL_BUFFER_BIT vagy GL_ACCUM_BUFFER_BIT Pl. a szín puffer törlése az aktuális törlőszínnel: glclear(gl_color_buffer_bit); Objektumok megadása void glbegin(enum mode); void glend(void); geometriai objektumok specifikációja mode értéke lehet pl. POINTS, LINES, POLYGON Színbeállítás void glcolor{34{bsifd ubusui (T components); Színbeállítás csúcspontokhoz van hozzárelve Pl. glcolor3f(1.0,0.0,0.0); glcolor3f(0.0,1.0,0.0); glcolor3f(0.0,0.0,1.0); // piros // zöld // kék Csúcspontok megadása void glvertex{234{sifd( T coords ); Csúcspont(ok) (vertex) megadása Pl.: glvertex2i(10,10); // a pont koordinátája (10, 10) Program (pontrajzoló) II void display(void) { glclear(gl_color_buffer_bit); // képernyő tötlés glbegin(gl_points); // pontokat specifikálunk glcolor3f(1.0,0.0,0.0); // piros glvertex2i(10,10); // piros pont glcolor3f(0.0,1.0,0.0); // zöld glvertex2i(50,10); // zöld pont glcolor3f(0.0,0.0,1.0); // kék glvertex2i(30,80); // kék pont glend(); // több pont nem lesz glflush(); // rajzolj! 02_algoritmusok 2

Program (pontrajzoló) III Képernyő mód void keyboard (unsigned char key, int x, int y){ switch(key) { // billentyű kezelés case 27: // ha escape exit(0); // kilép a programból break; void glutinitdisplaymode (unsigned int mode); A képernyő módot definiálja Pl. ha mode GLUT_SINGLE GLUT_RGB akkor az ún. egyszeresen pufferelt, RGB módban specifikál ablakot Ablak void glutinitwindowsize (int width, int height); Az ablak méretét definiálja pixelekben void glutinitwindowposition(int x, int y); Az ablak bal felső sarkának pozíciója int glutcreatewindow(char *name); Megnyit egy ablakot az előző rutinokban specifikált jellemzőkkel. Ha az ablakozó rszer lehetővé teszi, akkor name megjelenik az ablak fejlécén. A visszatérési érték egy egész, amely az ablak azonosítója. Callback függvények void glutdisplayfunc(void(*func)(void)); Azt a callback függvényt specifikálja, amelyet akkor kell meghívni, ha az ablak tartalmát újra akarjuk rajzoltatni. Pl.: glutdisplayfunc(display); void glutkeyboardfunc(void(*func) (unsigned char key, int x, int y); Azt a callback függvényt specifikálja, melyet egy billentyű lenyomásakor kell meghívni. key egy ASCII karakter. Az x és y paraméterek az egér pozícióját jelzik a billentyű lenyomásakor (ablak relatív koordinátákban). Pl.: glutkeyboardfunc(keyboard); Program (pontrajzoló) IV int APIENTRY WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { glutinitdisplaymode(glut_single GLUT_RGB); //az ablak egyszeresen pufferelt,és RGB módú glutinitwindowsize(100, 100); // 100x100-as glutinitwindowposition(100, 100); // az ablak bal felső sarkának koordinátája glutcreatewindow("3point"); // neve 3point init(); // inicializálás glutdisplayfunc(display); // a képernyő események kezelése glutkeyboardfunc(keyboard); // billentyűzet események kezelése glutmainloop() // belépés az esemény hurokba... return 0; ALGORITMUSOK RASZTERES GRAFIKÁHOZ Kör rajzolása Ellipszis rajzolása 02_algoritmusok 3

Algoritmusok raszteres grafikához Feladat: Grafikai primitíveket (pl. vonalat, síkidomot) ábrázolni kép-mátrixszal, meghatározni azokat a képpontokat, amelyek a primitív pontjai, vagy közel vannak a primitívhez Modell: képpont (= körlap), amely a négyzetháló csúcspontjaiban helyezhető el. A koordináták: egész számok Tegyük fel, hogy "vékony" egyenes: y = mx + b meredeksége: 0 < m < 1 (m = 0,1,... triviális speciális esetek) más esetekben visszavezetjük 0 < m < 1 -re Legyen: x 0 < x 1, y 0 < y 1 1. Alap inkrementális algoritmus Haladjunk Δx = 1 növekménnyel balról jobbra, válasszuk a legközelebbi képpontot: (x i, [y i +0.5]) = (x i, [mx i +b+0.5]) A szorzás kiküszöbölhető inkrementálással: y i+1 = mx i+1 +b = m(x i + Δx)+b = y i +m Δx = y i +m Alap inkrementális algoritmus Algoritmus: (ha m >1, akkor x-et cseréljük y-nal) procedure Line(x0,y0, x1,y1, value: integer); var x : integer; dy,dx,y,m : real; dy := y1-y0; dx := x1-x0; m := dy/dx; y := y0; for x := x0 to x1 do WritePixel(x, Round(y), value); y := y+m ; {Line 2. Felezőpont algoritmus egyenesre egész aritmetika elegő (Bresenham) Elv: Azt a képpontot válasszuk NE és E közül, amelyik közelebb van a Q metszésponthoz. Másképp: az döntsön a választásban, hogy Q az M felezőpont melyik oldalán van. Tegyük fel, hogy: x 0 < x 1, y 0 < y 1 Felezőpont algoritmus egyenesre Az (x0, y0) és (x1, y1) ponton átmenő egyenes egyenlete: (x x0) / (y y0) = (x1 x0) / (y1 y0) Legyen dx = x1 x0 ( > 0), dy = y1 y0 ( > 0), akkor: x dy y dx + y0 dx x0 dy = 0 Legyen: F(x,y) = x dy y dx + y0 dx x0 dy F(x,y) > 0, ha az egyenes (x, y) fölött fut, = 0, ha (x, y) az egyenesen van, < 0, ha az egyenes (x, y) alatt fut. 02_algoritmusok 4

F(x,y) = x dy y dx + y0 dx x0 dy Felezőpont kritérium: az egyenes választás: > 0, M fölött, NE d = F(M) +½) = 0, M-en át, NE vagy E (d : döntési változó) < 0, M alatt E fut A következő pontnál: ha E-t választottuk, akkor Δ E Felezőpont algoritmus egyenesre = d új d régi +½) F(x p +½) = dy, ha NE-t választottuk, akkor Δ NE +3/2) F(x p +½) = dy dx Felezőpont algoritmus egyenesre F(x,y) = x dy y dx + y0 dx x0 dy Kezdés: d start = F(x 0 +1,y 0 +½) = F(x 0,y 0 )+dy dx/2 = dy dx/2 Azért, hogy egész aritmetikával számolhassunk, használjuk inkább az F(x,y) = 2 (x dy y dx + y0 dx x0 dy) függvényt. procedure MidpointLine (x0,y0,x1,y1,value: integer); var dx,dy,incre,incrne,d,x,y : integer; dx := x1-x0; dy := y1-y0; d := 2*dy-dx; incre := 2*dy; incrne := 2*(dy-dx); x := x0; y := y0; WritePixel(x,y,value); while x < x1 do if d <= 0 then x := x + 1; d := d + incre; else x := x + 1; y := y + 1; d := d + incrne; ; WritePixel(x,y,value) {while Felezőpont algoritmus ; {MidpointLine egyenesre Felezőpont algoritmus egyenesre Eredmény: pl. Tulajdonságok: - csak összeadás és kivonás - általánosítható körre, ellipszisre Megjegyzés: Nem mindig lehet csak balról jobbra haladva rajzolni az egyeneseket. Pl. szaggatott vonallal rajzolt zárt poligon 2. A vonal pontjainak a sűrűsége függ a meredekségétől Problémák: 1. Különböző pontsorozat lesz az eredmény, ha balról jobbra, vagy ha jobbról balra haladunk. Legyen a választás: balról jobbra: d = 0 jobbról balra: d = 0 E-t választani SW-t választani Megoldás: - intenzitás változtatása, - kitöltött téglalapnak tekinteni az egyenes pontjait 02_algoritmusok 5

Program (szakaszrajzoló) I OpenGL Rajzoljunk egy 5 pixel vastagságú egyenest, melynek egyik végpontja piros, a másik kék! Egyenes szakasz rajzolása Program (szakaszrajzoló) II Program (szakaszrajzoló) III void display() { glclear(gl_color_buffer_bit); gllinewidth(5.0); // 5 pixel vastag vonal glbegin(gl_lines); glcolor3d(0.0,0.0,1.0); // A kék végpont glvertex2d(0.0,0.0); glcolor3d(1.0,0.0,0.0); //A piros végpont glvertex2d(1.0,1.0); glend(); glflush(); Megjegyzés: glshademodel (GL_SMOOTH) GL_SMOOTH: ekkor a két végpont között a hozzájuk megadott színekkel interpolál GL_FLAT: utolsó végpont színével rajzol (GL_POLYGON esetében az elsőével) Program (szakaszrajzoló) IV int APIENTRY WinMain (HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { glutinitdisplaymode(glut_single GLUT_RGB); glutinitwindowsize(200,200); glutinitwindowposition(100,100); glutcreatewindow("colors"); init(); glutdisplayfunc(display); glutkeyboardfunc(keyboard); glutmainloop(); return 0; x 0-tól R-ig növekszik, y = R² - x² Kör rajzolása x²+y² = R² R : egész 1. Elég egy kör-negyedet megrajzolni (a többi rész a szimmetria alapján transzformációkkal - pl. tükrözés - előáll) Drága eljárás (szorzás, gyökvonás) Nem egyenletes 02_algoritmusok 6

x = R cos Θ y = R sin Θ Θ 0 -tól 90 -ig növekszik Drága eljárás (sin, cos) Kör rajzolása 2. Polárkoordinátás alak Elég egy nyolcad kört kiszámítani: Program (polárkoordinátás alak) procedure Circlepoints(x,y,value: integer); WritePixel (x, y, value); WritePixel (y, x, value); WritePixel (y, -x, value); WritePixel (x, -y, value); WritePixel (-x, -y, value); WritePixel (-y, -x, value); WritePixel (-y, x, value); WritePixel (-x, y, value); ; {CirclePoints Kör rajzolása 3. x 0-tól R/ 2-ig (amíg x y) Elv: E és SE közül azt a pontot választjuk, amelyikhez a körív metszéspontja közelebb van F(x,y) = x²+y² R² > 0, ha (x,y) kívül van, = 0, ha (x,y) rajta van, < 0, ha (x,y) belül van. d = F(M) = >0 SE-t választani F(x p +1, y p ½) =0 SE vagy E <0 E-t választani F(x,y) = x²+y² R² A következő pontnál: ha E-t választottuk, akkor Δ E = d új d régi ½) F(x p ½) = = 2x p +3 ha SE-t választottuk, akkor Δ SE 3/2) F(x p ½) = = 2x p 2y p +5 Az iterációs lépések: 1. a döntési változó előjele alapján kiválasztjuk a következő képpontot 2. d = d + Δ SE vagy d + Δ E (a választástól függően). Figyeljük meg: d értéke egész számmal változik! Kezdés: kezdőpont: (0, R) felezőpont: (1, R 1/2) d = F(1, R 1/2) = 5/4 R 02_algoritmusok 7

procedure MidpointCircle (radius, value : integer); var x, y : integer; d: real; x := 0; y := radius; d := 5/4-radius; CirclePoints (x,y,value); while y>x do if d<0 then x := x+1; d := d+2*x+3; else x := x+1; y := y-1 d := d+2*(x-y)+5; ; CirclePoints (x,y,value) {while ; {MidpointCircle Nem egész aritmetika, ezért legyen h új döntési változó: h = d ¼ h+¼ = d < 0 Ekkor kezdéskor h = 1 R Kezdetben, és a későbbiek során is h egész szám! Igaz, hogy d < 0 helyett h < -¼ -et kellene vizsgálni, de ez h egész volta miatt ekvivalens h < 0 -val, tehát egész aritmetika használható. procedure MidpointCircle (radius, value : integer); var x,y,d : integer; x := 0; y := radius; h := 1-radius; CirclePoints (x,y,value); while y>x do if h<0 then x := x+1; h := h+2*x+3; else x := x+1; y := y-1 h := h+2*(x-y)+5; ; CirclePoints (x,y,value) {while ; {MidpointCircle Ellipszis rajzolása x²/a² + y²/b² = 1 Ellipszis rajzolása Da Silva algoritmusa (felezőpont módszer) Bontsuk a negyedet két tartományra: b²x² + a²y² a²b² = 0 a, b egész F(x,y) = b²x² + a²y² a²b² Szimmetria miatt: elég az első síknegyedben megrajzolni Az 1. tartományban a² (y p ½) > b² (x p +1) 02_algoritmusok 8

Da Silva algoritmusa F(x,y) = b²x² + a²y² a²b² Az 1. tartományban: 0 E-t választjuk d 1 ½) < 0 SE-t választjuk d új d régi ½) F(x p ½) d új d régi 3/2) F(x p ½) Δ E = b² (2x p +3) Da Silva algoritmusa F(x,y) = b²x² + a²y² a²b² Kezdés: kezdőpont: (0, b) felezőpont: (1, b ½) d = F(1, b ½) = b² + a² ( b + ¼) Házi feladat Az algoritmus a 2. tartományban Δ SE = b² (2x p +3) + a² ( 2y p +2) Da Silva algoritmusa procedure MidpointEllipse (a,b,value : integer); var x,y: integer; d1,d2: real; x := 0; y := b; a2:=a*a; b2:= b*b; d1 := b2-a2b+a2/4; EllipsePoints (x,y,value); while (a2(y-1/2) > b2(x+1)) do if d1<0 then OpenGL d1 := d1+b2(2x+3); x := x+1 else d1 := d1+b2(2x+3)+a2(-2y+2); x := x+1; y := y-1 EllipsePoints (x,y,value) ; {Region1 d2 := b2(x+1/2)2+a2(y-1)2-a2b2; while (y>0) do if d2<0 then d2 := d2+b2(2x+2)+a2(-2y+3); x := x+1; y := y-1 else d2 := d2+a2(-2y+3); y := y-1 Feladat: Kör rajzolása felezőpont algoritmussal ; EllipsePoints (x,y,value) {Region2 ; {MidpointEllipse 02_algoritmusok 9