Poligon vonallánc és zárt poligon

A Pascal vonalak előző oldalán a MoveTo és a LineTo eljárásokkal az egymást követő egyenes vonalak létrehozását tekintettük. De ismerjük a vonallánc csúcsainak koordinátáit (zárt vagy nem), ugyanez a PolyLine és Polygon eljárásokkal is el lehet érni. Hogyan, és mi a különbség ezek között a szubrutinok között?

Polyline rajzolási eljárás egy vonalláncra

✎ PolyLine - eljárás. Megszegő vonalat húz azon pontokon, amelyek koordinátái a pontsorban szerepelnek. A PascalABC és a PascalABC.Net esetében ez az eljárás némileg eltérő.

Először a PolyLine-t definiáljuk PascalABC és PascalABC.Net alatt, és alább mutatunk be néhány példát.

PolyLine a PascalABC-ben:

PolyLine eljárás (var pontok: tömb [1..n] pont; n: egész szám);

- Épít egy vonalláncot olyan n pontokon, amelyeknek a koordinátái a pont típusú elemek a mezőjében vannak megadva, amelyet a rekord határoz meg:

PolyLine a PascalABC.Net-ben:

PolyLine eljárás (pontok: Pont tömb);

- Megszegő vonalat rajzol olyan pontokra, amelyek koordinátái a pontsorban szerepelnek. Ez a pont egy dinamikus tömb. amelyre előzetesen meg kell határoznia a méretet, és nem írható le a Point (ez a beépített PascalABC.Net típus).

Itt azt látjuk, hogy a PascalABC.Net vonallánc eljárást csak az egyik lehetőség - az aktuális pontok a tömb pont (ellentétben az egyszerű PascalABC, ahol a második paraméter - a méret a tömb vagy a pixelek száma). Azt is meg kell jegyezned, hogy a dinamikus tömbökben a számozás 0-nál kezdődik.

Vegyünk egy példát a PascalABC PolyLine pontjaiból álló tömbsorról:

MoveTo (x, y) és LineTo (x, y) használatakor ugyanazt fogjuk elérni:

PascalABC kód, PascalABC.Net

Mindkét esetben ugyanazt az eredményt kapjuk:

Poligon vonallánc és zárt poligon

Íme egy példa ugyanarra a programra, de a PascalABC.Net-ben:

A négyzetgyök diagramja

A PascalABC.Net környezetben a négyzetgyök-függvény funkciójának ábrázolásának eredményét az alábbi ábra mutatja:

Poligon vonallánc és zárt poligon

Sokszög poligon rajzolási eljárás

✎ Sokszög - eljárás. egy PascalABC zárt vonalláncot és egy töltött poligont húz a PascalABC.Net-ben olyan pontoknál, amelyeknek koordinátái a pontsorban vannak megadva.

Poligon a PascalABC-ban:

eljárás Sokszög (var A: tömb [1..n] pont; n: egész szám);

- Zárt törött vonalat épít fel olyan n pontokkal, amelyek koordinátái a Point típusú elemek egy tömbjében vannak megadva. Itt a PascalABC pont típusa.

Poligon a PascalABC.Net-ben:

eljárás Sokszög (pontok: Pont tömb);

- Töltött sokszöget rajzol. melynek csúcspontjainak koordinátái a pontsorban szerepelnek. Itt pontok dinamikus tömbje a Point típusú pontoknak, amelyek X, Y mezőket tartalmaznak (a grafikus ablakban lévő pont koordinátái). Pont a PascalABC.Net egy beépített adattípus (primitív, alap), vagyis nem kell leírni.

Mi a különbség a Polygon és a PolyLine között? Az egyetlen különbség az, hogy a Polygon esetében az első pont bezáródik az utolsóhoz, és ennek eredményeképpen nemcsak egy törött vonalat kapunk, hanem egy zárt törött vonalat - sokszöget. Ezután példákat adunk arra, hogy Polygon eljárást használjunk a PascalABC és a PascalABC.Net számára a poligonok rajzolásához.

A doboz a PascalABC-ban

Rajzolj egy háromszöget a PascalABC-ban:

A program így működik: amikor a grafikus ablakban elkezdsz, minden 2 másodpercenként megjelenik a polírozott sokszögek, amelyeknek véletlenszerű száma 3 és 30 között van. Ezután határozzuk meg a rendszeres sokszög csúcspontjainak koordinátáit, majd keressük meg a szükséges sokszög csúcsait 15 képpontos véletlenszerű eltérésként (20-28 vonalak). Ezután rajzoljon egy sokszöget (32 sor), és mentse a képet (35. sor).

Felhívjuk figyelmét, hogy ez a folyamat fut beksonechnom ciklus (hamis állapot kimenetén repeat-until ciklus mindig hamis, így soha nem áll), így abba, egyszerűen zárja be az ablakot. És még fontosabb: minden második másodpercben egy új képfájl lesz a "Maped quadrilateral-1.jpg" típusú programfájlban. "A festett négyszög-2.jpg". "Festett négyszög-3.jpg" stb. és ha nem kell ezeknek a rajzoknak, akkor törölni kell őket. Az alábbi példák az ilyen sokszögekről (a kép felett mozogva, és előre-hátra görgetés):

  • Poligon vonallánc és zárt poligon

Végezetül szeretnék egy fontos pontot megemlíteni a Poligon eljárásról. A PascalABC ő húz egy üres sokszög, és PascalABC.Net - tele. Ez azt jelenti, hogy ahhoz, hogy festeni a sokszög PascalABC FloodFill kell használni az eljárás az (x, y, Szín: integer) kitöltésével zárt területek színét kiindulási ponttól (x, y) és PascalABC.Net - csak a szín SetBrushColor kefe (C: szín).