Házi feladat:
1. Az előző órán tanult grafikus könyvtárral divide et impera módszert használva, rajzoljunk Koch gürbét! A Koch görbe lényege
(bővebben itt: wiki),
hogy rekurzívan mindig három részre bontjuk az adott szakaszt, s a középső harmadban levő szakaszt helyettesítjük két szakasszal,
amelyek 60 fokos szöget zárnak be egymással, s hosszúságuk megegyezik az eredeti szakasz hosszal.
Beküldési határidő
2020 február 1, 23:59, az ezután
küldött házik 4 esek lesznek, ha tökéletesek, 1 ha nem.
A házi elnevezése: H02_Pelda_Bela.cpp,
Pelda Bela helyett az aktuális
vezeték és keresztnévvel.
Ne legyenek benne ékezetek, üres
helyek, vagy egyéb írásjelek, stb.!
Azoknál a háziknál, amelyek kísértetiesen hasonlítanak (másolás, ugyanonnan inspirálódtak, stb,)
mindkettőnek 1 es jár.
Így kell
átnevezni
Segítség: ennél a feladatnál a fő kihívást a közbenső pontok koordinátáinak kiszámolása fogja jelenteni, ugyanis ha ezekkel megvagyunk, csak ki kell rajzoljunk a line paranccsal
a szakaszokat (ezt csak a leállásí feltételnél).
Ezekhez a következő képleteket használhatjuk: (x1, y1 a kezdeti pont, xn, yn a végső pont koordinátái, az x2,y2 a második pont koordinátái, stb...)
x2=x1+cos(alfa)*d;ahol d a szakasz hossza, alfa az aktuális forgatási szög (ez csak kezdetben lesz 60).
y2=y1+sin(alfa)*d;
x3=x2+cos(alfa+pi/3)*d;Ajánlott paraméterezése a függvénynek:
y3=y2+sin(alfa+pi/3)*d;
x4 = x2 + d*cos(alfa);
y4 = y2 + d*sin(alfa);
x5 = xn;
y5 = yn;
void Koch(int x1, int y1, float alfa, int xn, int yn, int n);ahol n azt adja meg, hogy hányszor szeretnénk még meghívni rekurzívan. Ajánlott main ből való hívás:
Koch(0,200, 0, 600, 200, 3);