Pravidelný šesťuholník: prečo je zaujímavý a ako ho postaviť. Vytváranie šesťuholníkových sietí Zostrojte pomocou kružidla a pravítka pravidelný šesťuholník

V niektorých hrách sa používajú šesťuholníkové mriežky (šesťuholníkové mriežky), ale nie sú také jednoduché alebo bežné ako obdĺžnikové mriežky. Už takmer 20 rokov zbieram zdroje o hexových sieťach a napísal som túto príručku najelegantnejších prístupov implementovaných v najjednoduchšom kóde. Tento článok vo veľkej miere využíva sprievodcov Charlesa Fu a Clarka Verbruggea. Popíšem rôzne spôsoby vytvárania šesťuholníkových sietí, ich vzťahy a najbežnejšie algoritmy. Mnohé časti tohto článku sú interaktívne: výber typu mriežky zmení príslušné diagramy, kód a texty. (Pozn. per.: týka sa to len originálu, odporúčam vám ho preštudovať. V preklade sú zachované všetky informácie originálu, ale bez interaktivity.).

Príklady kódu v článku sú napísané v pseudokóde, takže sú ľahšie čitateľné a zrozumiteľné, aby ste mohli napísať svoju vlastnú implementáciu.

Geometria

Šesťuholníky sú šesťstranné mnohouholníky. Pravidelné šesťuholníky majú všetky strany (hrany) rovnako dlhé. Budeme pracovať len s bežnými šesťuholníkmi. Šesťuholníkové siete zvyčajne používajú horizontálne (špicatý vrch) a vertikálne (plochý vrch) orientáciu.


Šesťuholníky s plochými (vľavo) a ostrými (vpravo) vrchmi

Šesťuholníky majú 6 plôch. Každá plocha je spoločná pre dva šesťuholníky. Šesťuholníky majú 6 rohových bodov. Každý rohový bod je spoločný pre tri šesťuholníky. Viac o stredoch, okrajoch a rohových bodoch si môžete prečítať v mojom článku o sieťových častiach (štvorce, šesťuholníky a trojuholníky).

Uhly

V pravidelnom šesťuholníku sú vnútorné uhly 120°. Existuje šesť "klinov", z ktorých každý je rovnostranný trojuholník s vnútornými uhlami 60°. Rohový bod i sa nachádza vo vzdialenosti (60° * i) + 30°, veľkostné jednotky od stredu stredu. V kóde:

Funkcia hex_corner(center, size, i): var angle_deg = 60 * i + 30 var angle_rad = PI / 180 * angle_deg return Point(center.x + size * cos(uhol_rad), center.y + size * sin(uhol_rad) )
Ak chcete vyplniť šesťuholník, musíte získať vrcholy mnohouholníka od hex_corner(…, 0) po hex_corner(…, 5) . Ak chcete nakresliť obrys šesťuholníka, musíte použiť tieto vrcholy a potom znova nakresliť čiaru v hex_corner(..., 0) .

Rozdiel medzi týmito dvoma orientáciami je v tom, že x a y sú zamenené, čo vedie k zmene uhlov: šesťuholníky s plochým vrchom majú uhly 0°, 60°, 120°, 180°, 240°, 300° a špičatý vrch. šesťuholníky majú uhly 30°, 90°, 150°, 210°, 270°, 330°.


Rohy šesťuholníkov s plochými a ostrými vrcholmi

Veľkosť a umiestnenie

Teraz chceme spojiť niekoľko šesťuholníkov. Pri horizontálnej orientácii je výška šesťuholníka výška = veľkosť * 2 . Vertikálna vzdialenosť medzi susednými šesťuholníkmi je vert = výška * 3/4 ​​​​.

Šírka šesťuholníka šírka = sqrt(3)/2 * výška . Horizontálna vzdialenosť medzi susednými šesťuholníkmi je horiz = šírka .

Niektoré hry používajú pixel art pre šesťuholníky, ktoré sa presne nezhodujú s bežnými šesťuholníkmi. Vzorce uhla a umiestnenia opísané v tejto časti nebudú zodpovedať rozmerom takýchto šesťuholníkov. Zvyšok článku popisujúci algoritmy šesťhrannej siete platí, aj keď sú šesťuholníky mierne natiahnuté alebo stlačené.



Súradnicové systémy

Začneme skladať šesťuholníky do mriežky. V prípade mriežok štvorcov existuje len jeden zrejmý spôsob montáže. Pre šesťuholníky existuje veľa prístupov. Odporúčam použiť kubické súradnice ako primárnu reprezentáciu. Osové súradnice alebo ofsetové súradnice by sa mali používať na ukladanie máp a zobrazovanie súradníc používateľovi.

Offsetové súradnice

Najbežnejším prístupom je odsadenie každého nasledujúceho stĺpca alebo riadka. Stĺpce sú označené ako col alebo q. Riadky sú označené riadkom alebo r . Môžete odsadiť nepárne alebo párne stĺpce/riadky, takže vodorovné a zvislé šesťuholníky majú dve možnosti.


Horizontálne usporiadanie "nepárne-r"


Horizontálne usporiadanie „párne-r“


Vertikálne usporiadanie "nepárne-q".


Vertikálne usporiadanie „párne-q“

Kubické súradnice

Ďalším spôsobom, ako sa pozrieť na šesťuholníkové mriežky, je vidieť ich ako tri hlavné osi, nie dva, ako v mriežkach štvorcov. Vyznačujú sa elegantnou symetriou.

Vezmeme si mriežku z kociek a vystrihneme to diagonálna rovina v bode x + y + z = 0. Je to zvláštny nápad, ale pomôže nám to zjednodušiť algoritmy šesťuholníkových sietí. Z karteziánskych súradníc budeme môcť využívať najmä štandardné operácie: sčítanie a odčítanie súradníc, násobenie a delenie skalárnou veličinou, ako aj vzdialenosti.

Všimnite si tri hlavné osi na mriežke kociek a ich vzťah k šiestim uhlopriečka smery šesťuholníkovej mriežky. Diagonálne osi mriežky zodpovedajú hlavnému smeru mriežky šesťuholníka.


Šesťuholníky


kocky

Keďže už máme algoritmy pre štvorcové a kockové siete, použitie kubických súradníc nám umožňuje prispôsobiť tieto algoritmy šesťuholníkovým sieťam. Tento systém použijem pre väčšinu algoritmov v článku. Ak chcete použiť algoritmy s iným súradnicovým systémom, skonvertujem kubické súradnice, spustím algoritmus a potom ich skonvertujem späť.

Zistite, ako fungujú kubické súradnice pre šesťuholníkovú sieť. Keď vyberiete šesťuholníky, zvýraznia sa kubické súradnice zodpovedajúce trom osám.

  1. Každý smer mriežky kocky zodpovedá linky na mriežke šesťuholníkov. Skúste vybrať šesťuholník so z rovným 0, 1, 2, 3, aby ste videli spojenie. Čiara je označená modrou farbou. Skúste to isté pre x (zelená) a y (fialová).
  2. Každý smer šesťuholníkovej mriežky je kombináciou dvoch smerov mriežky kocky. Napríklad "sever" šesťuholníkovej mriežky leží medzi +y a -z , takže každý krok "sever" zvyšuje y o 1 a znižuje z o 1.
Kubické súradnice sú rozumnou voľbou pre súradnicový systém šesťuholníkovej mriežky. Podmienka je x + y + z = 0, preto musí byť v algoritmoch zachovaná. Podmienka tiež zaisťuje, že pre každý šesťuholník bude vždy existovať kanonická súradnica.

Existuje mnoho rôznych súradnicových systémov pre kocky a šesťuholníky. V niektorých z nich je podmienka iná ako x + y + z = 0. Ukázal som len jeden z mnohých systémov. Môžete tiež vytvoriť kubické súradnice s x-y , y-z , z-x , ktoré majú svoj vlastný súbor zaujímavých vlastností, ale nebudem sa im tu venovať.

Ale môžete namietať, že nechcete uložiť 3 čísla pre súradnice, pretože neviete, ako uložiť mapu týmto spôsobom.

Osové súradnice

Osový súradnicový systém, niekedy nazývaný "lichobežníkový" súradnicový systém, je konštruovaný z dvoch alebo troch súradníc z kubického súradnicového systému. Keďže máme podmienku x + y + z = 0, tretia súradnica nie je potrebná. Osové súradnice sú užitočné na ukladanie máp a zobrazovanie súradníc používateľovi. Rovnako ako pri kubických súradniciach môžete použiť štandardné operácie sčítania, odčítania, násobenia a delenia karteziánskych súradníc.

Existuje veľa kubických súradnicových systémov a veľa axiálnych. Nebudem sa zaoberať každou kombináciou v tejto príručke. Vyberiem dve premenné, q (stĺpec) a r (riadok). V diagramoch v tomto článku q zodpovedá x a r zodpovedá z, ale táto zhoda je ľubovoľná, pretože diagramy môžete otáčať a otáčať, aby ste získali rôzne zhody.

Výhodou tohto systému oproti mriežkam posunutia je, že algoritmy sú zrozumiteľnejšie. Nevýhodou systému je, že ukladanie obdĺžnikovej karty je trochu divné; pozrite si časť o ukladaní máp. Niektoré algoritmy sú ešte prehľadnejšie v kubických súradniciach, ale keďže máme podmienku x + y + z = 0, môžeme vypočítať tretiu implikovanú súradnicu a použiť ju v týchto algoritmoch. Vo svojich projektoch nazývam osi q, r, s, takže podmienka vyzerá ako q + r + s = 0 a v prípade potreby môžem vypočítať s = -q - r.

Nápravy

Offsetové súradnice sú prvá vec, na ktorú väčšina ľudí myslí, pretože sú rovnaké ako štandardné karteziánske súradnice používané pre siete štvorcov. Žiaľ, jedna z dvoch osí musí ísť proti srsti a to všetko skomplikuje. Kockové a osové systémy idú ďaleko a majú jednoduchšie algoritmy, ale ukladanie kariet je o niečo zložitejšie. Existuje ďalší systém nazývaný „striedavý“ alebo „duálny“, ale nebudeme ho tu uvažovať; s niektorými sa pracuje ľahšie ako s kubickým alebo axiálnym.


Ofsetové súradnice, kubické a axiálne

Os je smer, v ktorom sa príslušná súradnica zvyšuje. Kolmá na os je čiara, na ktorej súradnice zostávajú konštantné. Vyššie uvedené mriežkové diagramy zobrazujú kolmé čiary.

Transformácia súradníc

Je pravdepodobné, že vo svojom návrhu použijete osové alebo ofsetové súradnice, ale mnohé algoritmy sa ľahšie vyjadria v kubických súradniciach. Preto musíme byť schopní previesť súradnice medzi systémami.

Osové súradnice úzko súvisia s kubickými súradnicami, takže prevod je jednoduchý:

# prevod kubických na osové súradnice q = x r = z # prevod osových na kubické súradnice x = q z = r y = -x-z
V kóde môžu byť tieto dve funkcie napísané takto:

Funkcia cube_to_hex(h): # axiálna var q = h.x var r = h.z return Hex(q, r) funkcia hex_to_cube(h): # cubic var x = h.q var z = h.r var y = -x-z return Cube(x, y , z)
Offsetové súradnice sú o niečo komplikovanejšie:

Susedné šesťuholníky

Vedľa ktorých šiestich šesťuholníkov je daný jeden šesťuholník? Ako sa dalo očakávať, odpoveď je najjednoduchšia v kubických súradniciach, celkom jednoduchá v osových súradniciach a trochu zložitejšia v súradniciach posunutia. Možno budete musieť vypočítať aj šesť „diagonálnych“ šesťuholníkov.

Kubické súradnice

Posun o jedno miesto v hexadecimálnych súradniciach spôsobí, že jedna z troch kubických súradníc sa zmení na +1 a druhá na -1 (súčet musí zostať 0). Pri +1 sa môžu zmeniť tri možné súradnice a pri -1 zvyšné dve. To nám dáva šesť možných zmien. Každý zodpovedá jednému zo smerov šesťuholníka. Najjednoduchším a najrýchlejším spôsobom je predpočítať zmeny a vložiť ich do kubickej tabuľky súradníc Cube(dx, dy, dz) v čase kompilácie:

Smery var = [ Kocka(+1, -1, 0), Kocka(+1, 0, -1), Kocka(0, +1, -1), Kocka(-1, +1, 0), Kocka( -1, 0, +1), Kocka(0, -1, +1) ] funkcia smer_kocky (smer): smer návratu funkcia sused_kocky (hex, smer): návrat pridať_kocky (hex, smer_kocky (smer))

Osové súradnice

Ako predtým, na začiatok používame kubický systém. Zoberme si tabuľku Cube(dx, dy, dz) a transformujme ju na tabuľku Hex(dq, dr):

Smery var = [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0, +1) ] funkcia hex_direction(smer): návratové smery funkcia hex_neighbor(hex, smer): var dir = hex_direction(smer) return Hex(hex.q + dir.q, hex.r + dir.r)

Offsetové súradnice

V osových súradniciach robíme zmeny v závislosti od toho, kde sa na mriežke nachádzame. Ak sme v odsadenom stĺpci/riadku, tak pravidlo je iné ako v prípade stĺpca/riadku bez odsadenia.

Rovnako ako predtým vytvoríme tabuľku čísel, ktoré je potrebné pridať do stĺpcov a riadkov. Tentoraz však budeme mať dve polia, jedno pre nepárne stĺpce/riadky a druhé pre párne. Pozrite sa na (1,1) na obrázku mriežkovej mapy vyššie a všimnite si, ako sa mení stĺpec a riadok, keď sa pohybujete v každom zo šiestich smerov. Teraz zopakujme postup pre (2,2) . Tabuľky a kód sa budú líšiť pre každý zo štyroch typov mriežok posunutia; tu je zodpovedajúci kód pre každý typ mriežky.

Nepárne-r
smery var = [ [ Hex(+1, 0), Hex(0, -1), Hex(-1, -1), Hex(-1, 0), Hex(-1, +1), Hex(0 , +1) ], [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(0, +1), Hex( +1, +1) ] ] funkcia offset_neighbor(hex, smer): var parita = hex.riadok & 1 var dir = smer návrat Hex(hex.col + dir.col, hex.riadok + dir.riadok)


Párne-r
smery var = [ [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(0, +1), Hex(+1 , +1) ], [ Hex (+1, 0), Hex(0, -1), Hex(-1, -1), Hex(-1, 0), Hex(-1, +1), Hex (0, +1) ] ] funkcia offset_neighbor(hex, smer): var parita = hex.riadok & 1 var dir = smer návrat Hex(hex.col + dir.col, hex.riadok + dir.riadok)


Mriežka pre párne (PÁRNE) a nepárne (PÁRNE) riadky

Nepárne-q
smery var = [ [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, -1), Hex(-1, 0), Hex(0 , +1) ], [ Hex (+1, +1), Hex(+1, 0), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex (0, +1) ] ] funkcia offset_neighbor(hex, direction): var parita = hex.col & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Even-q
smery var = [ [ Hex(+1, +1), Hex(+1, 0), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0 , +1) ], [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, -1), Hex(-1, 0), Hex (0, +1) ] ] funkcia offset_neighbor(hex, direction): var parita = hex.col & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Mriežka pre párne (PÁRNE) a nepárne (PÁRNE) stĺpce

Uhlopriečky

Pohyb v "diagonálnom" priestore v hexadecimálnych súradniciach zmení jednu z troch kubických súradníc o ±2 a ostatné dve o ∓1 (súčet musí zostať 0).

Var diagonály = [ Kocka(+2, -1, -1), Kocka (+1, +1, -2), Kocka (-1, +2, -1), Kocka (-2, +1, +1 ), Kocka(-1, -1, +2), Kocka(+1, -2, +1) ] funkcia cube_diagonal_neighbor(hex, direction): return cube_add(hex, diagonals)
Ako predtým, môžeme tieto súradnice previesť na axiálne súradnice vypustením jednej z troch súradníc alebo ich previesť na ofsetové súradnice tak, že najprv vypočítame výsledky.


Vzdialenosti

Kubické súradnice

V kubickom súradnicovom systéme je každý šesťuholník kockou v trojrozmernom priestore. Susedné šesťuholníky sú od seba vzdialené 1 v hexadecimálnej mriežke, ale 2 od seba v mriežke kocky. Vďaka tomu je výpočet vzdialeností jednoduchý. V sieti štvorcov sú vzdialenosti na Manhattane abs(dx) + abs(dy) . V mriežke kociek sú manhattanské vzdialenosti abs(dx) + abs(dy) + abs(dz) . Vzdialenosť v šesťhrannej mriežke sa rovná polovici z nich:

Funkcia cube_distance(a, b): return (abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) / 2
Ekvivalentom tohto zápisu by bolo povedať, že jedna z troch súradníc musí byť súčtom ostatných dvoch, a potom to brať ako vzdialenosť. Môžete si vybrať formu rozdelenia na polovicu alebo formu maximálnej hodnoty nižšie, ale výsledok bude rovnaký:

Funkcia cube_distance(a, b): return max(abs(a.x - b.x), abs(a.y - b.y), abs(a.z - b.z))
Na obrázku sú maximálne hodnoty farebne zvýraznené. Všimnite si tiež, že každá farba predstavuje jeden zo šiestich "diagonálnych" smerov.

GIF


Osové súradnice

V osovom systéme je tretia súradnica vyjadrená implicitne. Prepočítajme vzdialenosť z axiálnej na kubickú:

Funkcia hex_distance(a, b): var ac = hex_to_cube(a) var bc = hex_to_cube(b) return cube_distance(ac, bc)
Ak je kompilátor inline (inline) hex_to_cube a cube_distance vo vašom prípade, potom vygeneruje kód takto:

Funkcia hex_distance(a, b): return (abs(a.q - b.q) + abs(a.q + a.r - b.q - b.r) + abs(a.r - b.r)) / 2
Existuje mnoho rôznych spôsobov zápisu vzdialeností medzi šesťuholníkmi v axiálnych súradniciach, ale bez ohľadu na spôsob zápisu vzdialenosť medzi šesťuholníkmi v axiálnom systéme je extrahovaná zo vzdialenosti Manhattan v kubickom systéme. Napríklad opísaný "rozdiel rozdielov" sa získa tak, že a.q + a.r - b.q - b.r sa napíše ako a.q - b.q + a.r - b.r a namiesto tvaru polyca sa použije vzdialenosť_ kocky . Všetky sú podobné, ak vidíte súvislosť s kubickými súradnicami.

Offsetové súradnice

Rovnako ako pri osových súradniciach prevedieme súradnice posunu na kubické súradnice a potom použijeme kubickú vzdialenosť.

Funkcia offset_distance(a, b): var ac = offset_to_cube(a) var bc = offset_to_cube(b) return cube_distance(ac, bc)
Rovnaký vzor použijeme pre mnohé z algoritmov: konvertujte zo šesťuholníkov na kocky, spustite kubickú verziu algoritmu a konvertujte kubické výsledky na šesťuholníkové súradnice (axiálne alebo posunuté súradnice).

Kreslenie čiar

Ako nakresliť čiaru z jedného šesťuholníka do druhého? Na kreslenie čiar používam lineárnu interpoláciu. Čiara je rovnomerne vzorkovaná v N+1 bodoch a vypočíta sa, v ktorých šesťuholníkoch sa tieto vzorky nachádzajú.

GIF


  1. Najprv vypočítame N, čo bude vzdialenosť v šesťuholníkoch medzi koncovými bodmi.
  2. Potom rovnomerne vzorkujeme N+1 bodov medzi bodmi A a B. Pomocou lineárnej interpolácie určíme, že pre hodnoty i od 0 do N vrátane nich bude každý bod A + (B - A) * 1,0/N * ja Na obrázku sú tieto kontrolné body znázornené modrou farbou. Výsledkom sú súradnice s pohyblivou rádovou čiarkou.
  3. Skonvertujme každý riadiaci bod (float) späť na šesťuholníky (int). Algoritmus sa nazýva cube_round (pozri nižšie).
Dajte všetko dohromady a nakreslite čiaru od A do B:

Funkcia lerp(a, b, t): // pre float return a + (b - a) * t funkcia cube_lerp(a, b, t): // pre šesťuholníky return Cube(lerp(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)) funkcia cube_linedraw(a, b): var N = cube_distance(a, b) var results = pre každú 0 ≤ i ≤ N: results.append( cube_round(cube_lerp(a, b, 1.0/N * i))) vrátiť výsledky
Poznámky:

  • Existujú prípady, keď cube_lerp vráti bod, ktorý je presne na hrane medzi dvoma šesťuholníkmi. Potom ju cube_round posunie jedným alebo druhým smerom. Čiary vyzerajú lepšie, ak sú posunuté jedným smerom. Dá sa to urobiť pridaním "epsilon"-hexagonálnej kocky (1e-6, 1e-6, -2e-6) do jedného alebo oboch koncových bodov pred spustením slučky. Tým sa čiara "postrčí" jedným smerom, takže nenarazí na okraje.
  • Algoritmus čiary DDA v štvorcových mriežkach sa rovná N maximálnej vzdialenosti pozdĺž každej z osí. To isté robíme v kubickom priestore, ktorý je podobný vzdialenosti v šesťuholníkovej mriežke.
  • Funkcia cube_lerp by mala vrátiť kocku s pohyblivými súradnicami. Ak programujete v staticky typovanom jazyku, nebudete môcť použiť typ kocky. Namiesto toho môžete definovať typ FloatCube alebo vložiť funkciu do kódu perokresby, ak nechcete definovať iný typ.
  • Kód môžete optimalizovať pomocou inline cube_lerp a potom vypočítať B.x-A.x, B.x-A.y a 1.0/N mimo slučky. Násobenie je možné previesť na opakované sčítanie. Výsledkom bude niečo ako riadkový algoritmus DDA.
  • Na kreslenie čiar používam osové alebo kubické súradnice, ale ak chcete pracovať s ofsetovými súradnicami, pozrite si .
  • Existuje veľa možností na kreslenie čiar. Niekedy sa vyžaduje "prekrytie". Poslali mi kód na kreslenie super pokrytých čiar v šesťuholníkoch, ale ešte som sa na to nepozrel.

Pohyblivý rozsah

Rozsah súradníc

Ak je daný stred šesťuholníka a rozsah N, ktoré šesťuholníky sú v rámci N krokov od neho?

Môžeme urobiť inverziu zo vzorca vzdialenosti medzi šesťuholníkmi vzdialenosť = max(abs(dx), abs(dy), abs(dz)) . Na nájdenie všetkých šesťuholníkov v rámci N potrebujeme max(abs(dx), abs(dy), abs(dz)) ≤ N . To znamená, že sú potrebné všetky tri hodnoty: abs(dx) ≤ N a abs(dy) ≤ N a abs(dz) ≤ N . Po odstránení absolútnej hodnoty dostaneme -N ≤ dx ≤ N a -N ≤ dy ≤ N a -N ≤ dz ≤ N . V kóde to bude vnorená slučka:

Var výsledky = pre každú -N ≤ dx ≤ N: pre každú -N ≤ dy ≤ N: pre každú -N ≤ dz ≤ N: ak dx + dy + dz = 0: results.append(cube_add(center, Cube(dx) , dy, dz)))
Tento cyklus bude fungovať, ale bude dosť neúčinný. Zo všetkých hodnôt dz, cez ktoré prechádzame, iba jedna skutočne spĺňa podmienku kocky dx + dy + dz = 0. Namiesto toho priamo vypočítame hodnotu dz, ktorá spĺňa podmienku:

Var výsledky = pre každé -N ≤ dx ≤ N: pre každé max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy results.append(cube_add( stred, kocka (dx, dy, dz)))
Tento cyklus prechádza len pozdĺž požadovaných súradníc. Na obrázku je každý rozsah pár čiar. Každý riadok je nerovnosť. Berieme všetky šesťuholníky, ktoré spĺňajú šesť nerovností.

GIF


Prekrývajúce sa rozsahy

Ak potrebujete nájsť šesťuholníky, ktoré sú vo viacerých rozsahoch, pred vygenerovaním zoznamu šesťuholníkov môžete rozsahy preťať.

K tomuto problému môžete pristupovať z hľadiska algebry alebo geometrie. Algebraicky je každá oblasť vyjadrená ako podmienky nerovnosti v tvare -N ≤ dx ≤ N a musíme nájsť priesečník týchto podmienok. Geometricky je každá oblasť kockou v 3D priestore a pretíname dve kocky v 3D priestore, aby sme získali kváder v 3D priestore. Potom ho premietneme späť na rovinu x + y + z = 0, aby sme dostali šesťuholníky. Tento problém vyriešim algebraicky.

Najprv prepíšeme podmienku -N ≤ dx ≤ N do všeobecnejšieho tvaru x min ≤ x ≤ x max a vezmeme x min = stred.x - N a x max = stred.x + N . Urobme to isté pre y a z, výsledkom čoho je všeobecná forma kódu z predchádzajúcej časti:

Var výsledky = pre každé xmin ≤ x ≤ xmax: pre každé max(ymin, -x-zmax) ≤ y ≤ min(ymax, -x-zmin): var z = -x-y výsledky.append(Kocka(x, y, z))
Priesečník dvoch rozsahov a ≤ x ≤ b a c ≤ x ≤ d je max(a, c) ≤ x ≤ min(b, d) . Keďže oblasť šesťuholníkov je vyjadrená ako rozsahy cez x, y, z, môžeme pretínať každý z rozsahov x, y, z samostatne a potom pomocou vnorenej slučky vygenerovať zoznam šesťuholníkov v priesečníku. Pre jednu oblasť šesťuholníkov berieme x min = H.x - N a x max = H.x + N , podobne pre y a z . Pre priesečník dvoch šesťuholníkových oblastí vezmeme x min = max (H1.x - N, H2.x - N) a x max = min (H1.x + N, H2.x + N), podobne pre y a z . Rovnaký vzor funguje pre priesečník troch alebo viacerých oblastí.

GIF


Prekážky

Ak existujú prekážky, najjednoduchším spôsobom je vyplniť s obmedzením vzdialenosti (najskôr vyhľadávanie šírky). Na obrázku nižšie sa obmedzujeme na štyri ťahy. V kóde je fringes[k] pole všetkých šesťuholníkov, ktoré možno dosiahnuť v k krokoch. Zakaždým, keď prejdeme hlavnou slučkou, rozšírime úroveň k-1 o úroveň k.

Funkcia cube_reachable(štart, pohyb): var navštívený = set() pridať začiatok k navštíveným var fringes = fringes.append() pre každú 1< k ≤ movement: fringes.append() for each cube in fringes: for each 0 ≤ dir < 6: var neighbor = cube_neighbor(cube, dir) if neighbor not in visited, not blocked: add neighbor to visited fringes[k].append(neighbor) return visited

Zákruty

Vzhľadom na šesťuholníkový vektor (rozdiel medzi dvoma šesťuholníkmi) ho možno budeme musieť otočiť tak, aby ukazoval na iný šesťuholník. To sa dá ľahko urobiť s kubickými súradnicami, ak sa budete držať rotácie 1/6 kruhu.

Otočenie o 60° doprava posunie každú súradnicu o jednu pozíciu doprava:

[ x, y, z] až [-z, -x, -y]
Otočenie o 60° doľava posunie každú súradnicu o jednu pozíciu doľava:

[ x, y, z] až [-y, -z, -x]



„Po hraní“ [v pôvodnom článku] s diagramom môžete vidieť, že každé otočenie je 60° zmeny podpíše a fyzicky „otočí“ súradnice. Po otočení o 120° sa znamienka opäť stanú rovnakými. Otočenie o 180° zmení znamienka, ale súradnice sa vrátia do pôvodnej polohy.

Tu je úplná sekvencia rotácie polohy P okolo centrálnej polohy C, výsledkom čoho je nová poloha R:

  1. Preveďte pozície P a C na kubické súradnice.
  2. Výpočet vektora odčítaním stredu: P_from_C = P - C = Cube(P.x - C.x, P.y - C.y, P.z - C.z) .
  3. Otočte vektor P_from_C podľa popisu vyššie a priraďte konečnému vektoru označenie R_from_C .
  4. Prevod vektora späť na pozíciu pridaním stredu: R = R_from_C + C = Cube (R_from_C.x + C.x, R_from_C.y + C.y, R_from_C.z + C.z) .
  5. Prevedie kubickú polohu R späť na požadovaný súradnicový systém.
Existuje niekoľko fáz transformácie, ale každá z nich je celkom jednoduchá. Niektoré z týchto krokov je možné skrátiť definovaním rotácie priamo v axiálnych súradniciach, ale hexadecimálne vektory nepracujú s offsetovými súradnicami a neviem, ako skrátiť kroky pre offsetové súradnice. Ďalšie spôsoby výpočtu rotácie nájdete v diskusii o stackexchange.

Prstene

Jednoduchý prsteň

Ak chcete zistiť, či daný šesťuholník patrí do kruhu s daným polomerom polomeru, musíte vypočítať vzdialenosť od tohto šesťuholníka k stredu a zistiť, či sa rovná polomeru. Ak chcete získať zoznam všetkých takýchto šesťuholníkov, musíte urobiť kroky s polomerom od stredu a potom sledovať otočené vektory pozdĺž cesty pozdĺž prstenca.

Funkcia cube_ring(center, polomer): var results = # tento kód nefunguje pre polomer == 0; chápeš prečo? var cube = cube_add(center, cube_scale(cube_direction(4), polomer)) pre každú 0 ≤ i< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
V tomto kóde kocka začína na krúžku, ktorý je zobrazený veľkou šípkou od stredu k rohu diagramu. Na začiatok som si vybral uhol 4, pretože sa zhoduje s dráhou, v ktorej sa pohybujú čísla smeru. Možno budete potrebovať iný počiatočný uhol. V každej fáze vnútornej slučky sa kocka pohybuje o jeden šesťuholník okolo krúžku. Po 6 * polomere krokov skončí tam, kde začal.


Špirálové krúžky

Prechádzaním krúžkami v špirálovom vzore môžeme vyplniť vnútorné časti krúžkov:

Funkcia cube_spiral(center, polomer): var výsledky = pre každú 1 ≤ k ≤ polomer: results = results + cube_ring(center, k) return results



Plocha veľkého šesťuholníka je súčtom všetkých kruhov plus 1 pre stred. Na výpočet plochy použite tento vzorec.

Prechádzanie šesťuholníkov týmto spôsobom sa dá použiť aj na výpočet rozsahu pohybu (pozri vyššie).

Oblasť viditeľnosti

Čo je viditeľné z danej pozície v danej vzdialenosti a nie je blokované prekážkami? Najjednoduchším spôsobom, ako to určiť, je nakresliť čiaru ku každému šesťuholníku v danom rozsahu. Ak sa čiara nezhoduje so stenami, potom vidíte šesťuholník. Presuňte kurzor myši na šesťuholníky [na diagrame v pôvodnom článku], aby ste videli, ako sú k týmto šesťuholníkom a stenám, ktoré sa spájajú, nakreslené čiary.

Tento algoritmus môže byť pomalý na veľkých plochách, ale je ľahko implementovateľný, preto odporúčam začať s ním.

GIF



Existuje mnoho rôznych definícií viditeľnosti. Chcete vidieť stred iného šesťuholníka zo stredu pôvodného? Chcete vidieť akúkoľvek časť iného šesťuholníka zo stredu pôvodného? Možno akákoľvek časť iného šesťuholníka z ktoréhokoľvek bodu pôvodného? Prekážky, ktoré vám bránia vo výhľade, sú menšie ako celý šesťuholník? Rozsah je zložitejší a pestrejší pojem, ako sa na prvý pohľad zdá. Začnime s najjednoduchším algoritmom, ale počítajte s tým, že určite správne vypočíta odpoveď vo vašom projekte. Existujú dokonca prípady, keď jednoduchý algoritmus produkuje nelogické výsledky.

V budúcnosti chcem túto príručku rozšíriť. mám

Konštrukcia pravidelného šesťuholníka vpísaného do kruhu. Konštrukcia šesťuholníka je založená na skutočnosti, že jeho strana sa rovná polomeru opísanej kružnice. Preto na jeho zostrojenie stačí rozdeliť kruh na šesť rovnakých častí a nájdené body navzájom spojiť (obr. 60, a).

Pravidelný šesťuholník možno postaviť pomocou rovnej hrany a štvorca 30X60°. Na vykonanie tejto konštrukcie berieme vodorovný priemer kruhu ako os uhlov 1 a 4 (obr. 60, b), zostrojíme strany 1 -6, 4-3, 4-5 a 7-2, po ktorých nakreslíme strany 5-6 a 3-2.

Zostrojenie rovnostranného trojuholníka vpísaného do kruhu. Vrcholy takéhoto trojuholníka je možné zostrojiť pomocou kružidla a štvorca s uhlami 30 a 60° alebo len jedného kružidla.

Uvažujme dva spôsoby, ako zostrojiť rovnostranný trojuholník vpísaný do kruhu.

Prvý spôsob(Obr. 61,a) vychádza zo skutočnosti, že všetky tri uhly trojuholníka 7, 2, 3 obsahujú 60° a zvislá čiara vedená bodom 7 je výškou aj osou uhla 1. Keďže uhol je 0-1-2 sa rovná 30°, potom nájdite stranu

1-2 stačí zostrojiť z bodu 1 a zo strany 0-1 uhol 30°. Za týmto účelom nainštalujte priečku a štvorec, ako je znázornené na obrázku, nakreslite čiaru 1-2, ktorá bude jednou zo strán požadovaného trojuholníka. Ak chcete zostrojiť stranu 2-3, nastavte priečku do polohy znázornenej prerušovanými čiarami a nakreslite priamku cez bod 2, ktorá určí tretí vrchol trojuholníka.

Druhý spôsob je založený na tom, že ak postavíte pravidelný šesťuholník vpísaný do kruhu a potom jeho vrcholy jedným spojíte, dostanete rovnostranný trojuholník.

Ak chcete zostrojiť trojuholník (obr. 61, b), označte vrcholový bod 1 na priemere a nakreslite diametrálnu čiaru 1-4. Ďalej z bodu 4 s polomerom rovným D/2 opíšeme oblúk, kým sa nepretne s kružnicou v bodoch 3 a 2. Výsledné body budú ďalšie dva vrcholy požadovaného trojuholníka.

Zostrojenie štvorca vpísaného do kruhu. Túto konštrukciu je možné vykonať pomocou štvorca a kompasu.

Prvý spôsob je založený na skutočnosti, že uhlopriečky štvorca sa pretínajú v strede opísanej kružnice a sú naklonené k jej osám pod uhlom 45°. Na základe toho nainštalujeme priečnik a štvorec s uhlami 45 °, ako je znázornené na obr. 62, a a označte body 1 a 3. Ďalej cez tieto body nakreslíme vodorovné strany štvorca 4-1 a 3-2 pomocou priečnika. Potom pomocou rovnej hrany nakreslíme zvislé strany štvorca 1-2 a 4-3 pozdĺž nohy štvorca.

Druhá metóda je založená na skutočnosti, že vrcholy štvorca pretínajú oblúky kruhu uzavretého medzi koncami priemeru (obr. 62, b). Na koncoch dvoch na seba kolmých priemerov si označíme body A, B a C a z nich s polomerom y opisujeme oblúky, až kým sa navzájom nepretnú.

Ďalej cez priesečníky oblúkov nakreslíme pomocné priame čiary, označené na obrázku plnými čiarami. Body ich priesečníka s kružnicou určia vrcholy 1 a 3; 4 a 2. Takto získané vrcholy požadovaného štvorca spojíme do série.

Konštrukcia pravidelného päťuholníka vpísaného do kruhu.

Na osadenie pravidelného päťuholníka do kruhu (obr. 63) urobíme nasledujúce konštrukcie.

Na kružnici označíme bod 1 a berieme ho ako jeden z vrcholov päťuholníka. Segment AO rozdelíme na polovicu. Aby sme to urobili, opíšeme oblúk z bodu A s polomerom AO, až kým sa nepretne s kružnicou v bodoch M a B. Spojením týchto bodov priamkou dostaneme bod K, ktorý potom spojíme s bodom 1. S polomer rovný úsečke A7, opíšeme oblúk z bodu K, kým sa nepretne s diametrálnou čiarou AO ​​v bode H. Spojením bodu 1 s bodom H dostaneme stranu päťuholníka. Potom pomocou riešenia kompasu rovnajúceho sa segmentu 1H, opisujúceho oblúk od vrcholu 1 po priesečník s kružnicou, nájdeme vrcholy 2 a 5. Po vytvorení zárezov z vrcholov 2 a 5 rovnakým riešením kompasu získame zvyšné vrcholy 3 a 4. Nájdené body spájame postupne medzi sebou.

Zostrojenie pravidelného päťuholníka pozdĺž danej strany.

Na zostrojenie pravidelného päťuholníka pozdĺž danej strany (obr. 64) rozdelíme úsečku AB na šesť rovnakých častí. Z bodov A a B s polomerom AB opíšeme oblúky, ktorých priesečník bude dávať bod K. Cez tento bod a delenie 3 na priamku AB nakreslíme zvislú čiaru.

Dostaneme bod 1-vrchol päťuholníka. Potom s polomerom rovným AB opíšeme z bodu 1 oblúk, kým sa nepretne s oblúkmi predtým nakreslenými z bodov A a B. Priesečníky oblúkov určujú vrcholy päťuholníka 2 a 5. Nájdené vrcholy spojíme v série medzi sebou.

Konštrukcia pravidelného sedemuholníka vpísaného do kruhu.

Nech je daný kruh s priemerom D; je potrebné do nej osadiť bežný sedemuholník (obr. 65). Rozdeľte vertikálny priemer kruhu na sedem rovnakých častí. Z bodu 7 s polomerom rovným priemeru kružnice D opíšeme oblúk, kým sa nepretne s pokračovaním vodorovného priemeru v bode F. Bod F nazývame pól mnohouholníka. Ak vezmeme bod VII ako jeden z vrcholov sedemuholníka, nakreslíme lúče z pólu F cez párne dieliky zvislého priemeru, ktorých priesečník s kružnicou určí vrcholy VI, V a IV sedemuholníka. Ak chcete získať vrcholy / - // - /// z bodov IV, V a VI, nakreslite vodorovné čiary, kým sa nepretínajú s kružnicou. Nájdené vrcholy spájame postupne k sebe. Sedemuholník môže byť skonštruovaný nakreslením lúčov z pólu F a prostredníctvom nepárnych dielikov vertikálneho priemeru.

Vyššie uvedená metóda je vhodná na vytváranie pravidelných mnohouholníkov s ľubovoľným počtom strán.

Rozdelenie kruhu na ľubovoľný počet rovnakých častí je možné vykonať aj pomocou údajov v tabuľke. 2, ktorý poskytuje koeficienty, ktoré umožňujú určiť rozmery strán pravidelných vpísaných mnohouholníkov.

Obsah:

Pravidelný šesťuholník, nazývaný aj dokonalý šesťuholník, má šesť rovnakých strán a šesť rovnakých uhlov. Šesťuholník nakreslíte metrom a uhlomerom, hrubý šesťuholník okrúhlym predmetom a pravítkom alebo ešte hrubší šesťuholník len s ceruzkou a trochou intuície. Ak chcete vedieť, ako nakresliť šesťuholník rôznymi spôsobmi, čítajte ďalej.

Kroky

1 Pomocou kružidla nakreslite dokonalý šesťuholník

  1. 1 Pomocou kompasu nakreslite kruh. Vložte ceruzku do kompasu. Rozšírte kompas na požadovaný polomer šírky vášho kruhu. Polomer môže byť široký od niekoľkých do desiatich centimetrov. Potom položte kompas a ceruzku na papier a nakreslite kruh.
    • Niekedy je jednoduchšie nakresliť najprv polovicu kruhu a potom druhú polovicu.
  2. 2 Posuňte ihlu kompasu na okraj kruhu. Umiestnite ho na vrchol kruhu. Nemeňte uhol ani polohu kompasu.
  3. 3 Na okraji kruhu urobte malú značku ceruzkou. Urobte to zreteľné, ale nie príliš tmavé, pretože to neskôr vymažete. Nezabudnite zachovať uhol, ktorý ste nastavili pre kompas.
  4. 4 Posuňte strelku kompasu na značku, ktorú ste práve urobili. Umiestnite ihlu priamo na značku.
  5. 5 Na okraji kruhu urobte ďalšiu značku ceruzkou. Týmto spôsobom urobíte druhú značku v určitej vzdialenosti od prvej značky. Pokračujte v pohybe jedným smerom.
  6. 6 Rovnakým spôsobom vytvorte ďalšie štyri značky. Musíte sa vrátiť k pôvodnej značke. Ak nie, potom sa s najväčšou pravdepodobnosťou zmenil uhol, pod ktorým ste držali kompas a robili svoje značky. Mohlo sa to stať preto, že ste ho stlačili príliš silno alebo naopak trochu povolili.
  7. 7 Spojte značky pomocou pravítka.Šesť miest, kde sa vaše značky pretínajú s okrajom kruhu, je šesť vrcholov šesťuholníka. Pomocou pravítka a ceruzky nakreslite rovné čiary spájajúce susedné značky.
  8. 8 Vymažte kruh, značky na okrajoch kruhu a všetky ostatné značky, ktoré ste urobili. Po vymazaní všetkých konštrukčných čiar by mal byť váš dokonalý šesťuholník pripravený.

2 Nakreslite hrubý šesťuholník pomocou okrúhleho predmetu a pravítka

  1. 1 Ceruzkou obkreslite okraj pohára. Týmto spôsobom nakreslíte kruh. Je veľmi dôležité kresliť ceruzkou, pretože neskôr budete musieť vymazať všetky pomocné čiary. Môžete tiež obkresliť pohár, pohár alebo čokoľvek iné, čo má okrúhlu základňu.
  2. 2 Stredom kruhu nakreslite vodorovné čiary. Môžete použiť pravítko, knihu - čokoľvek s rovným okrajom. Ak máte pravítko, môžete označiť stred tak, že vypočítate zvislú dĺžku kruhu a rozdelíte ho na polovicu.
  3. 3 Nakreslite "X" cez polovicu kruhu a rozdeľte ho na šesť rovnakých častí. Keďže ste už nakreslili čiaru cez stred kruhu, X musí byť širšie ako vysoké, aby boli časti rovnaké. Predstavte si, že by ste pizzu rozdelili na šesť častí.
  4. 4 Z každej časti vytvorte trojuholníky. Ak to chcete urobiť, pomocou pravítka nakreslite rovnú čiaru pod zakrivenú časť každej časti a spojte ju s ďalšími dvoma čiarami a vytvorte trojuholník. Urobte to so zvyšnými piatimi časťami. Predstavte si to ako vytvorenie kôrky okolo plátkov pizze.
  5. 5 Vymažte všetky pomocné čiary. Vodiace čiary zahŕňajú váš kruh, tri čiary, ktoré rozdeľujú váš kruh na časti, a ďalšie značky, ktoré ste urobili na ceste.

3 Nakreslite hrubý šesťuholník pomocou jednej ceruzky

  1. 1 Nakreslite vodorovnú čiaru. Ak chcete nakresliť rovnú čiaru bez pravítka, jednoducho nakreslite začiatočný a koncový bod vodorovnej čiary. Potom umiestnite ceruzku na počiatočný bod a nakreslite čiaru až do konca. Dĺžka tejto čiary môže byť len niekoľko centimetrov.
  2. 2 Nakreslite dve diagonálne čiary z koncov vodorovnej čiary. Diagonálna čiara na ľavej strane by mala smerovať von rovnakým spôsobom ako diagonálna čiara na pravej strane. Môžete si predstaviť, že tieto čiary zvierajú s vodorovnou čiarou uhol 120 stupňov.
  3. 3 Nakreslite ďalšie dve vodorovné čiary vychádzajúce z prvých vodorovných čiar nakreslených dovnútra. Tým sa vytvorí zrkadlový obraz prvých dvoch diagonálnych čiar. Ľavá spodná čiara by mala byť odrazom ľavej hornej čiary a pravá spodná čiara by mala byť odrazom pravej hornej čiary. Zatiaľ čo horné vodorovné čiary by mali vyzerať smerom von, spodné by mali smerovať dovnútra k základni.
  4. 4 Nakreslite ďalšiu vodorovnú čiaru spájajúcu spodné dve diagonálne čiary. Týmto spôsobom nakreslíte základňu pre váš šesťuholník. V ideálnom prípade by táto čiara mala byť rovnobežná s hornou horizontálnou čiarou. Teraz ste dokončili svoj šesťuholník.
  • Ceruzka a kružidlo by mali byť ostré, aby sa minimalizovali chyby z príliš širokých značiek.
  • Ak použijete metódu kompasu, ak spojíte každú značku namiesto všetkých šiestich, dostanete rovnostranný trojuholník.

Varovania

  • Kompas je dosť ostrý predmet, buďte s ním veľmi opatrní.

Princíp činnosti

  • Každá metóda vám pomôže nakresliť šesťuholník tvorený šiestimi rovnostrannými trojuholníkmi s polomerom rovným dĺžke všetkých strán. Šesť nakreslených polomerov má rovnakú dĺžku a všetky čiary na vytvorenie šesťuholníka majú rovnakú dĺžku, pretože šírka kružidla sa nezmenila. Vzhľadom na to, že šesť trojuholníkov je rovnostranných, uhly medzi ich vrcholmi sú 60 stupňov.

Čo budete potrebovať

  • Papier
  • Ceruzka
  • Pravítko
  • Pár kompasov
  • Niečo, čo sa dá umiestniť pod papier, aby sa zabránilo skĺznutiu strelky kompasu.
  • Guma

Poďme sa naučiť, ako nakresliť šesťhranný hranol v rôznych polohách.

Študovať rôzne spôsoby konštrukcie pravidelného šesťuholníka, robiť kresby šesťuholníkov, kontrolovať správnosť ich konštrukcie. Zostrojte šesťhranné hranoly na základe šesťuholníkov.

Zoberme si šesťhranný hranol na obr. 3.52 a jeho kolmé priemety na obr. 3.53. Na základni šesťhranného hranolu (šesťuholníka) sú pravidelné šesťuholníky, bočné strany sú identické obdĺžniky. Aby ste správne zobrazili šesťuholník v perspektíve, musíte sa najskôr naučiť, ako správne zobraziť jeho základňu v perspektíve (obr. 3.54). V šesťuholníku na obr. 3,55 vrcholov je označených číslami od 1 do 6. Ak spojíte body 1 a 3, 4 a 6 zvislými priamkami, všimnete si, že tieto priamky spolu so stredovým bodom kružnice rozdeľujú priemer 5 - 2 na štyri rovnaké segmenty (tieto segmenty sú označené oblúkmi ). Protiľahlé strany šesťuholníka sú rovnobežné navzájom a s priamkou prechádzajúcou jeho stredom a spájajúcou dva vrcholy (napríklad strany 6 - 1 a 4 - 3 sú rovnobežné s priamkou 5 - 2). Tieto pozorovania vám pomôžu zostaviť šesťuholník v perspektíve, ako aj skontrolovať správnosť tejto konštrukcie. Sú dva spôsoby, ako zostrojiť pravidelný šesťuholník zo zobrazenia: na základe kružnice opísanej a na základe štvorca.

Na základe opísanej kružnice. Pozrite sa na Obr. 3.56. Všetky vrcholy pravidelného šesťuholníka patria do kružnice opísanej, ktorej polomer sa rovná strane šesťuholníka.


Horizontálny šesťuholník. Nakreslite vodorovnú elipsu ľubovoľného otvoru, t. j. opísanú kružnicu v perspektíve. Teraz na ňom musíte nájsť šesť bodov, ktoré sú vrcholmi šesťuholníka. Cez jej stred nakreslite ľubovoľný priemer danej kružnice (obr. 3.57). Krajné body priemeru - 5 a 2, ležiace na elipse, sú vrcholy šesťuholníka. Na nájdenie zostávajúcich vrcholov je potrebné rozdeliť tento priemer na štyri rovnaké segmenty. Priemer už bol rozdelený stredovým bodom kruhu na dva polomery, zostáva len rozdeliť každý polomer na polovicu. V perspektívnom výkrese sa všetky štyri segmenty sťahujú rovnomerne, keď sa vzďaľujú od diváka (obr. 3.58). Teraz nakreslite stredy polomerov - body A a B - priamky kolmé na priamku 5 - 2. Ich smer zistíte pomocou dotyčníc k elipse v bodoch 5 a 2 (obr. 3.59). Tieto dotyčnice budú kolmé na priemer 5 - 2 a priamky vedené bodmi A a B rovnobežnými s týmito dotyčnicami budú tiež kolmé na priamku 5 - 2. Označte body získané v priesečníku týchto priamok s elipsou ako 1, 3, 4, 6 (obr. 3.60). Spojte všetkých šesť vrcholov rovnými čiarami (obr. 3.61).

Skontrolujte správnosť svojej konštrukcie rôznymi spôsobmi. Ak je konštrukcia správna, potom sa čiary spájajúce protiľahlé vrcholy šesťuholníka pretínajú v strede kruhu (obr. 3.62) a protiľahlé strany šesťuholníka sú rovnobežné s príslušnými priemermi (obr. 3.63). Ďalší spôsob kontroly je znázornený na obr. 3.64.

Vertikálny šesťuholník. V takomto šesťuholníku majú priamky spájajúce body 7 a 3, b a 4, ako aj dotyčnice k opísanej kružnici v bodoch 5 a 2 zvislý smer a zachovávajú ho v perspektívnom výkrese. Nakreslením dvoch zvislých dotyčníc k elipse teda nájdeme body 5 a 2 (dotykové body). Spojte ich priamkou a potom rozdeľte výsledný priemer 5 - 2 na 4 rovnaké segmenty, berúc do úvahy ich perspektívne zmenšenia (obr. 3.65). Nakreslite zvislé čiary cez body A a B av ich priesečníku s elipsou nájdite body 1,3,6l4. Potom spojte body 1 - 6 postupne rovnými čiarami (obr. 3.66). Skontrolujte správnosť konštrukcie šesťuholníka rovnakým spôsobom ako v predchádzajúcom príklade.

Opísaný spôsob konštrukcie šesťuholníka nám umožňuje získať tento obrazec na základe kruhu, ktorý sa ľahšie zobrazuje v perspektíve ako štvorec daných rozmerov. Preto sa tento spôsob konštrukcie šesťuholníka javí ako najpresnejší a najuniverzálnejší. Metóda konštrukcie na základe štvorca uľahčuje zobrazenie šesťuholníka v prípade, keď už kocka na výkrese je, inými slovami, keď sú určené proporcie štvorca a smer jeho strán.

Na základe štvorca. Pozrite sa na Obr. 3.67. Šesťuholník vpísaný do štvorca sa rovná strane štvorca v horizontálnom smere 5 - 2 a je menší ako jeho dĺžka vo vertikálnom smere.

Vertikálny šesťuholník. Nakreslite zvislý štvorec v perspektíve. Nakreslite priamku cez priesečník uhlopriečok rovnobežných s jej vodorovnými stranami. Výsledný segment 5 - 2 rozdeľte na štyri rovnaké časti a nakreslite zvislé čiary cez body A a B (obr. 3.68). Čiary ohraničujúce šesťuholník v hornej a dolnej časti sa nezhodujú so stranami štvorca. Nakreslite ich v určitej vzdialenosti (1114 a) od vodorovných strán štvorca a rovnobežne s nimi. Spojením takto nájdených bodov 1 a 3 s bodom 2 a bodov 6 a 4 s bodom 5 získame šesťuholník (obr. 3.69).

Horizontálny šesťuholník sa zostaví v rovnakom poradí (obr. 3.70 a 3.71).

Tento spôsob konštrukcie je vhodný len pre šesťuholníky s dostatočným otvorom. Ak je otvor šesťuholníka nevýznamný, je lepšie použiť metódu založenú na opísanom kruhu. Na kontrolu šesťuholníka vytvoreného cez štvorec môžete použiť metódy, ktoré už poznáte.

Okrem toho existuje ďalší spôsob - opísať kruh okolo výsledného šesťuholníka (vo vašej kresbe - elipsu). Všetky vrcholy šesťuholníka musia patriť do tejto elipsy.

Keď si osvojíte zručnosti kreslenia šesťuholníka, budete môcť prejsť na kreslenie šesťhranného hranolu. Pozorne si pozrite schému na obr. 3.72, ako aj schémy konštrukcie šesťhranných hranolov na základe kružnice opísanej (obr. 3.73; 3.74 a 3.75) a na základe štvorca (obr. 3.76; 3.77 a 3.78). Nakreslite vertikálne a horizontálne šesťuholníky rôznymi spôsobmi. Na výkrese zvislého šesťuholníka budú dlhé strany bočných plôch zvislé rovné čiary navzájom rovnobežné a šesťuholník základne bude tým otvorenejší, čím ďalej bude od čiary horizontu. Na výkrese vodorovného šesťuholníka sa dlhé strany bočných plôch zbiehajú v úbežníckom bode na horizonte a otvor základného šesťuholníka bude tým väčší, čím ďalej od diváka je. Pri zobrazovaní šesťuholníka dbajte aj na to, aby sa rovnobežné hrany oboch podstav perspektívne zbiehali (obr. 3.79; 3.80).

Geometrické vzory sú v poslednej dobe veľmi populárne. V dnešnej lekcii sa naučíme, ako vytvoriť jeden z týchto vzorov. Pomocou prechodu, typografie a trendových farieb vytvoríme vzor, ​​ktorý využijete vo webovom a printovom dizajne.

Výsledok

Krok 2
Nakreslite ďalší šesťuholník, tentokrát menší - vyberte polomer 20pt.

2. Prechod medzi šesťuholníkmi

Krok 1
Vyberte oba šesťuholníky a zarovnajte ich na stred (vertikálne a horizontálne). Pomocou nástroja Zmiešanie/prechod (W), vyberte oba šesťuholníky a dajte im prechod do 6 krokov. Aby bolo lepšie vidieť, zmeňte farbu tvarov pred pohybom.

3. Rozdeľte na časti

Krok 1
Nástroj Segment čiary (\) nakreslite čiaru pretínajúcu šesťuholníky v strede od krajného ľavého do pravého rohu. Nakreslite ďalšie dve čiary pretínajúce šesťuholníky v strede z protiľahlých rohov.

4. Natrite časti

Krok 1
Než začneme maľovať sekcie, rozhodneme sa pre paletu. Tu je paleta z príkladu:

  • Modrá: C 65 M 23 Y 35 K 0
  • Béžová: C 13 M 13 Y 30 K 0
  • Broskyňa: C 0 M 32 Y 54 K 0
  • Svetlo ružová: C 0 M 64 Y 42 K 0
  • Tmavo ružová: C 30 M 79 Y 36 K 4

V príklade bol okamžite použitý režim CMYK, aby bolo možné vzor vytlačiť bez zmien.

5. Dokončovacie úpravy a vzor

Krok 1
Skupina (Control-G) všetky sekcie a šesťuholníky po ich vyfarbení. Kopírovať (Control-C) A Prilepiť (Control-V) skupina šesťuholníkov. Pomenujme pôvodnú skupinu šesťuholník A, a jej kópiu Šesťuholník B. Zarovnajte skupiny.


Krok 2
Použiť Lineárny gradient do skupiny Šesťuholník B. V palete Gradient nastavte výplň na fialovú ( C60 M86 Y45 K42) do krémovej farby ( C0 M13 Y57 K0).