10 éve az Unióban

eu_minta

Magyarország 10 éve az Európai Unió tagja. Többek között a LibreLogo is ennek köszönhető. Az uniós csatlakozás május 1-jei évfordulójához kötődik az e heti Wikipédia-illusztráció is, pontosabban több illusztráció: az uniós zászló és változatai.

A közösségi zászló vektorgrafikus képe már része volt a Wikipédiának, de egyéb hivatalos változatai, mint a kék monokróm (1), illetve fekete monokróm (2), illetve mindhárom zászló szegélyes változata (3, 4, 5) csak most került be a Wikipédiába a LibreLogo segítségével.

Ha színes háttérre helyezzük el a zászlókat, 1/25-öd oldalmagasságnyi fehér szegély az előírás. A következő program ezzel rajzolja meg az uniós zászlót, és menti el SVG vektorgrafikus formátumban:

; csúcsba lépés a koordináta tárolásával
EZ csúcs pontok n
    ELŐRE n
    hol = HELY
    pontok += [hol]
    HÁTRA n
VÉGE

EZ csillag n
    aranymetszés = (1 + GYÖK 5)/2
    pontok = []
    IRÁNY 0
    ISMÉTLÉS 5 [
        csúcs pontok n
        JOBBRA 360/10
        csúcs pontok n - n / aranymetszés
        JOBBRA 360/10
    ]
    ; a pontok összekötése (a második ponttól)
    FUT i pontok-BAN  [ HELY i TOLLATLE ]
    TÖLT TOLLATFEL
VÉGE

KÉP „EU_zászló_szegéllyel.svg” [
    ELREJT
    TÖLTŐSZÍN „FEHÉR”
    TOLLSZÍN „LÁTHATATLAN”
    TÉGLALAP [15cm+2*10cm/25, 10cm+2*10cm/25]
    TÖLTŐSZÍN 0x003399
    TÉGLALAP [15cm, 10cm]
    TÖLTŐSZÍN 0xffcc00
    ISMÉTLÉS 12 [
        TOLLATFEL 
        IRÁNY 360/12 * (HÁNYADIK - 1)
        ELŐRE 10cm*2/6
        csillag 10cm/18
        HAZA
    ]
]

Csillagot sokféleképpen lehet rajzolni. A fenti programban a csillag középpontjából minden csúcsba belép a teknőc, ezek koordinátáját elmenti, majd a végén összeköti, sárga színnel kitöltve az így kapott csillag alakzatot. A következő kép szemlélteti a teknőc útját:
eu_flag_path

A szabályos csillag csúcsain, azaz konvex csúcspontjain átmenő kör (a későbbekben külső kör) sugara a zászló magasságának 18-ad része. Ez a sugár (r) a csillagrajzoló eljárás bemenő paramétere, és ez alapján lép a teknőc a csillag távolabbi csúcspontjaiba, vagyis a csillag csúcsaiba. A csillag közeli, konvex csúcspontjaira egy kisebb sugarú =r₂) kör rajzolható, ennek hosszát az aranymetszés segítségével számítjuk ki. A külső kör sugara ugyanis úgy aránylik a külső kör és a belső kör sugarának különbségéhez, ahogy ez a különbség aránylik a belső kör sugarához: ez az arány az aranymetszés: r/(rr₂) = (rr₂)/r₂ = (1 + √5)/2 (≈ 1.618).
star

Megjegyzés: A programban a

pontok += [hol]

sor most nem cserélhető fel a

pontok = pontok + [hol]

sorral, mivel nem egyenértékű: az első a cím szerint átadott Python listát bővíti (a „+=” művelet a lista append() (hozzáfűzés) metódusa meghívásának felel meg), a második sor viszont felülírja egy új listával a lokális „pontok” változót, így a csillag eljárásban szereplő „pontok” lista nem fog változni, üres marad.
2. megjegyzés: A csillag csúcspontjait összekötő ciklus egy kis trükkel megspórol egy feltételvizsgálatot: a lista első elemébe lépésnél még nem szabad vonalat húznia a teknőcnek, ezért szerepel a TOLLATLE utasítás a HELY után, és a TOLLATLE ismételt, letett toll melletti végrehajtása nem jelent hibát.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.