Să învățăm cum să desenăm o prismă hexagonală în diferite poziții.

Învață diferite moduri de a construi un hexagon obișnuit, de a face desene de hexagoane, de a verifica corectitudinea construcției lor. Pe baza hexagoanelor, construiți prisme hexagonale.

Luați în considerare prisma hexagonală din fig. 3.52 și proiecțiile sale ortogonale din fig. 3,53. La baza unei prisme hexagonale (hexaedru) sunt hexagoane regulate, fețele laterale sunt dreptunghiuri identice. Pentru a reprezenta corect un hexagon în perspectivă, trebuie mai întâi să învățați cum să descrieți corect baza lui în perspectivă (Fig. 3.54). În hexagonul din fig. 3.55 vârfurile sunt numerotate de la unu la șase. Dacă legați punctele 1 și 3, 4 și 6 cu linii verticale, veți observa că aceste linii, împreună cu punctul centrului cercului, împart diametrul 5 - 2 în patru segmente egale (aceste segmente sunt indicate prin arce). ). Laturile opuse ale unui hexagon sunt paralele între ele și cu o linie care trece prin centrul său și leagă două vârfuri (de exemplu, laturile 6 - 1 și 4 - 3 sunt paralele cu linia 5 - 2). Aceste observații vă vor ajuta să construiți un hexagon în perspectivă și, de asemenea, să verificați corectitudinea acestei construcții. Există două moduri de a construi un hexagon regulat dintr-o reprezentare: pe baza cercului circumscris și pe baza pătratului.

Pe baza cercului circumscris. Luați în considerare fig. 3,56. Toate vârfurile unui hexagon regulat aparțin cercului circumscris, a cărui rază este egală cu latura hexagonului.


Hexagon orizontal. Desenați o elipsă orizontală cu deschidere arbitrară, adică un cerc circumscris în perspectivă. Acum trebuie să găsiți șase puncte pe el, care sunt vârfurile hexagonului. Desenați orice diametru al cercului dat prin centrul său (Fig. 3.57). Punctele extreme ale diametrului - 5 și 2, situate pe elipsă, sunt vârfurile hexagonului. Pentru a găsi vârfurile rămase, este necesar să împărțiți acest diametru în patru segmente identice. Diametrul este deja împărțit de punctul central al cercului în două raze, rămâne să împărțiți fiecare rază la jumătate. Într-un desen în perspectivă, toate cele patru segmente se contractă uniform pe măsură ce se îndepărtează de privitor (Fig. 3.58). Acum trageți prin punctele medii ale razelor - punctele A și B - drepte perpendiculare pe dreapta 5 - 2. Puteți găsi direcția lor folosind tangentele la elipsă în punctele 5 și 2 (Fig. 3.59). Aceste tangente vor fi perpendiculare pe diametrul 5 - 2, iar liniile trasate prin punctele A și B paralele cu aceste tangente vor fi și ele perpendiculare pe dreapta 5 - 2. Desemnați punctele obținute la intersecția acestor drepte cu elipsa ca fiind 1, 3, 4, 6 (Fig. 3.60). Conectați toate cele șase vârfuri cu linii drepte (Fig. 3.61).

Verificați corectitudinea construcției dvs. în diferite moduri. Dacă construcția este corectă, atunci liniile care leagă vârfurile opuse ale hexagonului se intersectează în centrul cercului (Fig. 3.62), iar laturile opuse ale hexagonului sunt paralele cu diametrele corespunzătoare (Fig. 3.63). O altă metodă de verificare este prezentată în fig. 3,64.

Hexagon vertical. Într-un astfel de hexagon, liniile care leagă punctele 7 și 3, b și 4, precum și tangentele la cercul circumscris în punctele 5 și 2, au o direcție verticală și o rețin în desenul în perspectivă. Astfel, trasând două tangente verticale la elipsă, găsim punctele 5 și 2 (punctele de atingere). Conectați-le cu o linie dreaptă și apoi împărțiți diametrul rezultat 5 - 2 în 4 segmente egale, ținând cont de tăieturile lor în perspectivă (Fig. 3.65). Desenați drepte verticale prin punctele A și B, iar la intersecția lor cu elipsa găsiți punctele 1,3,6l4. Apoi conectați secvențial punctele 1 - 6 cu linii drepte (Fig. 3.66). Verificați corectitudinea construcției hexagonului în același mod ca în exemplul anterior.

Metoda descrisă de construire a unui hexagon vă permite să obțineți această cifră pe baza unui cerc, care este mai ușor de reprezentat în perspectivă decât un pătrat de proporții date. Prin urmare, această metodă de construire a unui hexagon pare a fi cea mai precisă și universală. Metoda de construcție bazată pe un pătrat facilitează reprezentarea unui hexagon în cazul în care există deja un cub în figură, cu alte cuvinte, când sunt determinate proporțiile pătratului și direcția laturilor sale.

Pe bază de pătrat. Luați în considerare fig. 3,67. Un hexagon înscris într-un pătrat pe direcția orizontală 5 - 2 este egal cu latura pătratului și vertical mai mic decât lungimea acestuia.

Hexagon vertical. Desenați un pătrat vertical în perspectivă. Desenați o linie dreaptă prin intersecția diagonalelor, paralelă cu laturile sale orizontale. Împărțiți segmentul rezultat 5 - 2 în patru părți egale și trasați linii verticale prin punctele A și B (Fig. 3.68). Liniile care delimitează hexagonul de sus și de jos nu coincid cu laturile pătratului. Desenați-le la o oarecare distanță (1114 a) de laturile orizontale ale pătratului și paralele cu acestea. Conectând punctele 1 și 3 găsite în acest fel cu punctul 2, și punctele 6 și 4 cu punctul 5, obținem un hexagon (Fig. 3.69).

Hexagonul orizontal este construit în aceeași succesiune (Fig. 3.70 și 3.71).

Această metodă de construcție este adecvată numai pentru hexagoane cu deschidere suficientă. Dacă deschiderea hexagonului este nesemnificativă, este mai bine să utilizați metoda bazată pe cercul circumscris. Pentru a verifica un hexagon construit printr-un pătrat, poți folosi metodele deja cunoscute de tine.

În plus, mai există unul - pentru a descrie un cerc în jurul hexagonului rezultat (în figura ta - o elipsă). Toate vârfurile hexagonului trebuie să aparțină acestei elipse.

După ce ați stăpânit abilitățile de a desena un hexagon, veți trece liber la desenarea unei prisme hexagonale. Priviți cu atenție diagrama din fig. 3.72, precum și schemele de construire a prismelor hexagonale pe baza cercului circumferitor (Fig. 3.73; 3.74 și 3.75) și pe baza unui pătrat (Fig. 3.76; 3.77 și 3.78). Desenați hexagoane verticale și orizontale în moduri diferite. În desenul unui hexagon vertical, laturile lungi ale fețelor laterale vor fi linii verticale paralele între ele, iar hexagonul de bază va fi mai deschis cu cât este mai departe de linia orizontului. În desenul unui hexagon orizontal, laturile lungi ale fețelor laterale vor converge în punctul de fuga de pe orizont, iar deschiderea hexagonului de bază va fi cu atât mai mare, cu cât este mai departe de privitor. Când descrieți un hexagon, asigurați-vă de asemenea că fețele paralele ale ambelor baze converg în perspectivă (Fig. 3.79; 3.80).

Construcția unui hexagon regulat înscris într-un cerc. Construcția unui pentagon regulat având în vedere latura sa. Mutați acul busolei în punctul de intersecție al arcului tocmai desenat cu cercul. Această construcție se poate face folosind un pătrat și o busolă. Un hexagon obișnuit poate fi construit folosind un pătrat în T și un pătrat de 30X60°. Construiți punctele de vârf ale colțurilor unui hexagon obișnuit.


Construcția unui triunghi echilateral înscris într-un cerc. Vârfurile unui astfel de triunghi pot fi construite folosind un compas și un pătrat cu unghiuri de 30 și 60 °, sau doar un compas. Pentru a construi latura 2-3, setați pătratul T în poziția indicată de liniile întrerupte și trageți o linie dreaptă prin punctul 2, care va defini al treilea vârf al triunghiului.

Metoda 1 din 3: Desenați un hexagon perfect cu o busolă

Marcam punctul 1 pe cerc și îl luăm ca unul dintre vârfurile pentagonului. Să fie dat un cerc cu diametrul D; trebuie să înscrieți în el un heptagon obișnuit (Fig. 65). Împărțiți diametrul vertical al cercului în șapte părți egale. Din punctul 7 cu raza egală cu diametrul cercului D, descriem arcul până când acesta se intersectează cu continuarea diametrului orizontal în punctul F. Punctul F se numește polul poligonului.

Tehnica de construire a poligoanelor regulate se bazează pe capacitatea de a construi bisectoare și bisectoare perpendiculare ale segmentelor.

Prima coloană a acestui tabel conține numărul de laturi ale unui poligon obișnuit înscris, iar a doua coloană conține coeficienții. Lungimea unei laturi a unui poligon dat se obține prin înmulțirea razei unui cerc dat cu un factor corespunzător numărului de laturi ale acestui poligon.

Subiectul acestui tutorial video este „Clădire poligoane regulate". De asemenea, vom da din nou definiția unui poligon regulat, o vom reprezenta grafic, după care ne vom asigura încă o dată că centrele cercurilor înscrise și circumscrise din jurul unei astfel de figuri vor coincide. Un cerc poate fi întotdeauna înscris în acest poligon, iar un cerc poate fi întotdeauna circumscris în jurul lui. În cursul lecțiilor anterioare, am aflat că rolul de bază pentru descrierea proprietăților poligoanelor este jucat de bisectoarele unghiurilor sale și bisectoarele perpendiculare pe laturile sale.

4. Am obținut triunghiul regulat dorit ABC. Problema rezolvata. 3. După ce am plasat un picior al busolei într-un punct arbitrar A1 al cercului, cu ajutorul celui de-al doilea picior marcam punctul A2 pe același cerc și îl conectăm cu punctul A1. Obținem prima latură a hexagonului. 3. Folosind bisectoarele perpendiculare pe laturile poligonului, coborâte din punctul O, împărțim în jumătate toate laturile acestuia și toate arcele de cerc cuprinse între vârfurile sale adiacente.

Construcțiile geometrice sunt una dintre părțile importante ale învățării. Acul ar trebui să străpungă linia trasă. Cu cât busola este setată mai precis, cu atât construcția va fi mai precisă. Desenați un alt arc care intersectează cercul. Conectați în mod constant toate cele șase puncte de intersecție ale arcelor cu cercul desenat inițial. În acest caz, hexagonul se poate dovedi a fi greșit.

Pentru a obține vârfuri / - // - /// din punctele IV, V și VI, trasăm linii orizontale până la intersecția cu cercul

Conectăm vârfurile găsite în serie între ele. Heptagonul poate fi construit prin trasarea razelor de la polul F și prin diviziuni impare ale diametrului vertical. Centrele ambelor cercuri coincid (punctul O din Fig. 1). Figura arată, de asemenea, razele cercurilor circumscrise (R) și înscrise (r).

Construcția unui hexagon se bazează pe faptul că latura lui este egală cu raza cercului circumscris. În această lecție, vom analiza modalități de a construi poligoane regulate folosind o busolă și o riglă. A doua metodă se bazează pe faptul că, dacă construiești un hexagon obișnuit înscris într-un cerc și apoi leagă vârfurile acestuia printr-unul, obții un triunghi echilateral. Metoda de mai sus este potrivită pentru construirea de poligoane regulate cu orice număr de laturi.

Grile de hexagoane (grile hexagonale) sunt folosite în unele jocuri, dar nu sunt la fel de simple și comune ca și grile de dreptunghiuri. Colectez resurse despre grile hexadecimale de aproape 20 de ani și am scris acest ghid pentru cele mai elegante abordări implementate în cel mai simplu cod. Articolul folosește frecvent manualele lui Charles Fu și Clark Verbrugge. Voi descrie diferitele moduri de a crea grile hexagonale, relația lor, precum și cei mai comuni algoritmi. Multe părți ale acestui articol sunt interactive: selectarea unui tip de grilă modifică diagramele, codul și textele corespunzătoare. (Notă pentru .: acest lucru se aplică doar originalului, vă sfătuiesc să-l studiați. În traducere, toate informațiile originalului sunt păstrate, dar fără interactivitate.).

Exemplele de cod din articol sunt scrise în pseudocod, astfel încât sunt mai ușor de citit și de înțeles pentru a vă scrie propria implementare.

Geometrie

Hexagoanele sunt poligoane hexagonale. Hexagoanele obișnuite au toate laturile (fețele) de aceeași lungime. Vom lucra doar cu hexagoane obișnuite. În mod obișnuit, grilele hexagonale utilizează orientări orizontale (sus ascuțit) și verticale (sus plat).


Hexagoane plate (stânga) și ascuțite (dreapta).

Hexagoanele au 6 fețe. Fiecare față este împărțită de două hexagoane. Hexagoanele au 6 colțuri. Fiecare punct de colț este împărțit de trei hexagoane. Puteți citi mai multe despre centre, margini și puncte de colț în articolul meu despre părțile ochiurilor (pătrate, hexagoane și triunghiuri).

colțuri

Într-un hexagon obișnuit, unghiurile interioare sunt de 120°. Există șase „pene”, fiecare dintre acestea fiind un triunghi echilateral cu unghiuri interioare de 60°. punct de colt i este (60° * i) + 30° , unități de dimensiune din centru . În cod:

Funcția hex_corner(center, size, i): var angle_deg = 60 * i + 30 var angle_rad = PI / 180 * angle_deg return Point(center.x + size * cos(angle_rad), center.y + size * sin(angle_rad) )
Pentru a umple un hexagon, trebuie să obțineți vârfurile poligonului de la hex_corner(…, 0) la hex_corner(…, 5) . Pentru a desena conturul hexagonului, trebuie să utilizați aceste vârfuri, apoi să desenați din nou linia în hex_corner(…, 0) .

Diferența dintre cele două orientări este că x și y sunt schimbate, ceea ce face ca unghiurile să se schimbe: hexagoanele superioare plate au unghiuri de 0°, 60°, 120°, 180°, 240°, 300°, iar hexagoanele superioare ascuțite au 30°, 90°, 150°, 210°, 270°, 330°.


Colțuri hexagonale cu vârf plat și ascuțit

Dimensiunea si locatia

Acum vrem să aranjam mai multe hexagoane împreună. În orientare peisaj, înălțimea hexagonului este înălțime = dimensiune * 2 . Distanța verticală dintre hexagoanele adiacente este vert = înălțime * 3/4 ​​​​.

Lățimea hexagonului este lățime = sqrt(3)/2 * înălțime . Distanța orizontală dintre hexagoane adiacente horiz = lățime.

Unele jocuri folosesc pixel art pentru hexagoane, care nu se potrivește exact cu hexagoane corecte. Formulele de unghi și poziție descrise în această secțiune nu se vor potrivi cu dimensiunile unor astfel de hexagoane. Restul articolului care descrie algoritmii grilei hexagonale se aplică chiar dacă hexagoanele sunt ușor întinse sau comprimate.



Sisteme de coordonate

Să începem asamblarea hexagoanelor într-o grilă. În cazul grilelor de pătrate, există o singură modalitate evidentă de asamblare. Pentru hexagoane, există multe abordări. Recomand să folosiți coordonatele cubice ca reprezentare primară. Coordonatele axiale sau coordonatele offset trebuie utilizate pentru a stoca hărți și pentru a afișa coordonatele utilizatorului.

Coordonate offset

Cea mai comună abordare este de a compensa fiecare coloană sau rând succesiv. Coloanele sunt notate cu col sau q . Rândurile sunt notate cu rând sau r . Puteți compensa coloanele/rândurile impare sau pare, astfel încât hexagoanele orizontale și verticale au două opțiuni fiecare.


Aranjament orizontal „odd-r”


Aranjament orizontal „even-r”


Aranjament vertical „impar-q”


Aranjament vertical „even-q”

Coordonatele cubice

Un alt mod de a privi grilele de hexagoane este să vezi în ele Trei axele principale, nu Două, ca în grile de pătrate. Ele arată o simetrie elegantă.

Luați o grilă de cuburi și elimina planul diagonal la x + y + z = 0 . Aceasta este o idee ciudată, dar ne va ajuta să simplificăm algoritmii grilei hexagonale. În special, vom putea folosi operații standard din coordonatele carteziene: însumarea și scăderea coordonatelor, înmulțirea și împărțirea cu o valoare scalară, precum și distanțe.

Observați cele trei axe principale de pe grila de cuburi și relația lor cu cele șase diagonală direcțiile rețelei de hexagoane. Axele diagonale ale rețelei corespund direcției principale a rețelei de hexagoane.


Hexagoane


Cuba

Deoarece avem deja algoritmi pentru grile de pătrate și cuburi, utilizarea coordonatelor cubice ne permite să adaptăm acești algoritmi la grile de hexagoane. Voi folosi acest sistem pentru majoritatea algoritmilor din articol. Pentru a folosi algoritmi cu un sistem de coordonate diferit, voi transforma coordonatele cubice, voi rula algoritmul și apoi le voi transforma înapoi.

Aflați cum funcționează coordonatele cubice pentru o rețea de hexagoane. La selectarea hexagoanelor, sunt evidențiate coordonatele cubice corespunzătoare celor trei axe.

  1. Fiecare direcție a rețelei de cuburi îi corespunde linii pe o grilă de hexagoane. Încercați să selectați un hexagon cu z egal cu 0, 1, 2, 3 pentru a vedea conexiunea. Linia este marcată cu albastru. Încercați același lucru pentru x (verde) și y (violet).
  2. Fiecare direcție a grilei hexagonale este o combinație a două direcții a grilei cuburilor. De exemplu, „nordul” rețelei hexagonale se află între +y și -z, astfel încât fiecare pas către „nord” crește y cu 1 și scade z cu 1.
Coordonatele cubice sunt o alegere rezonabilă pentru sistemul de coordonate al grilei hexagonale. Condiția este x + y + z = 0 , deci trebuie păstrată în algoritmi. Condiția asigură, de asemenea, că va exista întotdeauna o coordonată canonică pentru fiecare hexagon.

Există multe sisteme de coordonate diferite pentru cuburi și hexagoane. În unele dintre ele, condiția diferă de x + y + z = 0 . Am arătat doar unul dintre multele sisteme. De asemenea, puteți crea coordonate cubice cu x-y , y-z , z-x , care vor avea propriul set de proprietăți interesante, dar nu le voi acoperi aici.

Dar ați putea argumenta că nu doriți să stocați 3 numere pentru coordonate pentru că nu știți cum să stocați o astfel de hartă.

Coordonate axiale

Sistemul de coordonate axial, numit uneori „trapezoidal”, este construit pe baza a două sau trei coordonate din sistemul de coordonate cubice. Deoarece avem condiția x + y + z = 0 , a treia coordonată nu este necesară. Coordonatele axiale sunt utile pentru stocarea hărților și afișarea coordonatelor pentru utilizator. Ca și în cazul coordonatelor cubice, puteți utiliza operațiile standard de însumare, scădere, înmulțire și împărțire a coordonatelor carteziene cu acestea.

Există multe sisteme de coordonate cubice și multe axiale. În acest ghid, nu voi acoperi toate combinațiile. Voi alege două variabile, q (coloană) și r (rând). În circuitele din acest articol, q corespunde lui x și r corespunde z , dar această mapare este arbitrară, deoarece puteți roti și roti circuitele pentru a obține mapări diferite.

Avantajul acestui sistem față de grilele de deplasare este claritatea mai mare a algoritmilor. Dezavantajul sistemului este că stocarea unei hărți dreptunghiulare este puțin ciudată; consultați secțiunea despre salvarea hărților. Unii algoritmi sunt și mai clari în coordonatele cubice, dar întrucât avem condiția x + y + z = 0 , putem calcula a treia coordonată implicită și o putem folosi în acești algoritmi. În proiectele mele, numesc axele q , r , s , deci condiția arată ca q + r + s = 0 și pot calcula s = -q - r atunci când este necesar.

topoare

Coordonatele offset sunt primul lucru la care se gândesc majoritatea oamenilor, deoarece sunt aceleași cu coordonatele carteziene standard utilizate pentru grilele pătrate. Din nefericire, una dintre cele două axe trebuie să meargă împotriva curentului, iar acest lucru complică lucrurile ca urmare. Sistemele cubice și axiale merg mai departe și au algoritmi mai simpli, dar stocarea hărților este puțin mai complexă. Există un alt sistem numit „intercalat” sau „dublu”, dar nu îl vom lua în considerare aici; pentru unii le este mai ușor să lucreze decât cubic sau axial.


Coordonate offset, cubice și axiale

Axă este direcția în care este incrementată coordonatele corespunzătoare. Perpendiculara pe axa este dreapta pe care coordonata ramane constanta. Diagramele grilă de mai sus arată linii perpendiculare.

Transformarea coordonatelor

Este probabil să utilizați coordonate axiale sau decalate în proiectul dvs., dar mulți algoritmi sunt mai ușor exprimați în coordonate cubice. Prin urmare, trebuie să fim capabili să convertim coordonatele între sisteme.

Coordonatele axiale sunt strâns legate de coordonatele cubice, deci conversia este simplă:

# convertiți coordonatele cubice în axiale q = x r = z # convertiți coordonatele axiale în cubice x = q z = r y = -x-z
În cod, aceste două funcții pot fi scrise după cum urmează:

Funcția cub_to_hex(h): # axial var q = hx var r = hz return Hex(q, r) function hex_to_cube(h): # cube var x = hq var z = hr var y = -xz return Cube(x, y ,z)
Coordonatele offset sunt ceva mai complicate:

Hexagoane învecinate

Având în vedere un hexagon, ce șase hexagoane sunt lângă el? După cum vă puteți aștepta, răspunsul este cel mai ușor în coordonatele cubice, destul de simplu în coordonatele axiale și puțin complicat în coordonatele offset. De asemenea, poate fi necesar să calculați șase hexagoane „diagonale”.

Coordonatele cubice

Mutarea unui spațiu în coordonate hexadecimale schimbă una dintre cele trei coordonate cubice cu +1 și cealaltă cu -1 (suma trebuie să rămână 0). Trei coordonate posibile se pot schimba cu +1, iar celelalte două se pot schimba cu -1. Acest lucru ne oferă șase modificări posibile. Fiecare corespunde uneia dintre direcțiile hexagonului. Cel mai simplu și cel mai rapid mod- precalculați modificările și puneți-le în tabelul de coordonate cubice Cube(dx, dy, dz) la momentul compilării:

Direcții Var = [ Cub(+1, -1, 0), Cub(+1, 0, -1), Cub(0, +1, -1), Cub(-1, +1, 0), Cub( -1, 0, +1), Cube(0, -1, +1) ] function cube_direction(directie): intoarce directii function cube_neighbor(hex, direction): return cube_add(hex, cube_direction(directie))

Coordonate axiale

Ca și înainte, folosim sistemul cubic pentru început. Să luăm tabelul Cube(dx, dy, dz) și să îl transformăm în tabelul Hex(dq, dr):

Direcții Var = [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0, +1) ] function hex_direction(directie): return directions function hex_neighbor(hex, direction): var dir = hex_direction(direction) return Hex(hex.q + dir.q, hex.r + dir.r)

Coordonate offset

În coordonatele axiale, facem modificări în funcție de locul în care ne aflăm pe grilă. Dacă ne aflăm într-o coloană/rând offset, atunci regula este diferită de cazul unei coloane/rând fără decalaj.

Ca și înainte, creăm un tabel de numere pentru a le adăuga la col și la rând. Cu toate acestea, de data aceasta vom avea două matrice, una pentru coloanele/rândurile impare și una pentru cele pare. Priviți (1,1) din harta grilă de mai sus și observați cum se schimbă colul și rândul pe măsură ce vă deplasați în fiecare dintre cele șase direcții. Acum să repetăm ​​procesul pentru (2,2) . Tabelele și codul vor fi diferite pentru fiecare dintre ele patru tipuri grile de deplasare, oferim codul corespunzător pentru fiecare tip de grilă.

ciudat-r
direcții 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) ] ] funcția offset_neighbor(hex, direcție): var paritate = hex.row & 1 var dir = direcții return Hex(hex.col + dir.col, hex.row + dir.row)


Chiar și-r
direcții 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) ] ] funcția offset_neighbor(hex, direcție): var paritate = hex.row & 1 var dir = direcții return Hex(hex.col + dir.col, hex.row + dir.row)


Grilă pentru rânduri pare (PAR) și impare (IMPARE).

impar-q
direcții 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) ] ] function offset_neighbor(hex, direction): var parity = hex.col & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Chiar-q
direcții 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) ] ] function offset_neighbor(hex, direction): var parity = hex.col & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Grilă pentru coloanele pare (PAR) și impare (IMPARE).

Diagonale

Deplasarea în spațiu „diagonal” în coordonate hexagonale modifică una dintre cele trei coordonate cubice cu ±2 și celelalte două cu ∓1 (suma trebuie să rămână 0).

Diagonale var = [ Cub(+2, -1, -1), Cub(+1, +1, -2), Cub(-1, +2, -1), Cub(-2, +1, +1 ), Cub(-1, -1, +2), Cub(+1, -2, +1) ] function cube_diagonal_neighbor(hex, direction): return cube_add(hex, diagonale)
Ca și înainte, putem converti aceste coordonate în coordonate axiale prin eliminarea uneia dintre cele trei coordonate, sau convertirea în coordonate decalate prin precalcularea rezultatelor.


distante

Coordonatele cubice

În sistemul de coordonate cubice, fiecare hexagon este un cub în spațiul 3D. Hexagoanele învecinate sunt la 1 în grila de hexagoane, dar la 2 în grila cuburilor. Astfel, calcularea distanțelor este simplă. Într-o grilă de pătrate, distanțele Manhattan sunt abs(dx) + abs(dy) . Într-o grilă de cuburi, distanțele Manhattan sunt abs(dx) + abs(dy) + abs(dz) . Distanța în grila de hexagoane este egală cu jumătate dintre ele:

Funcția distanță_cub(a, b): return (abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) / 2
Echivalentul acestei notații ar fi să spunem că una dintre cele trei coordonate trebuie să fie suma celorlalte două, apoi obțineți-o ca distanță. Puteți alege forma bisecției sau forma valorii maxime de mai jos, dar dau același rezultat:

Funcția cube_distance(a, b): return max(abs(a.x - b.x), abs(a.y - b.y), abs(a.z - b.z))
În figură, valorile maxime sunt evidențiate în culoare. Observați, de asemenea, că fiecare culoare reprezintă una dintre cele șase direcții „diagonale”.

gif


Coordonate axiale

În sistemul axial, a treia coordonată este exprimată implicit. Să facem conversia de la axial la cubic pentru a calcula distanța:

Funcția hex_distance(a, b): var ac = hex_to_cube(a) var bc = hex_to_cube(b) return cube_distance(ac, bc)
Dacă compilatorul în cazul dvs. încorporează (inline) hex_to_cube și cube_distance , atunci va genera cod astfel:

Funcția 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
Există multe moduri diferite de a scrie distanțele dintre hexagoane în coordonate axiale, dar indiferent de modul în care scrieți distanța dintre hexagoane în sistemul axial este derivată din distanța Manhattan în sistemul cubic. De exemplu, „diferența de diferențe” descrisă se obține prin scrierea a.q + a.r - b.q - b.r ca a.q - b.q + a.r - b.r și folosind forma valorii maxime în loc de forma bisecției cube_distance . Toate sunt similare dacă vedeți legătura cu coordonatele cubice.

Coordonate offset

Ca și în cazul coordonatelor axiale, convertim coordonatele offset în coordonate cubice și apoi folosim distanța cubică.

Funcția offset_distance(a, b): var ac = offset_to_cube(a) var bc = offset_to_cube(b) return cube_distance(ac, bc)
Vom folosi același model pentru mulți algoritmi: convertiți din hexagoane în cuburi, rulați versiunea cubică a algoritmului și convertiți rezultatele cuburilor în coordonate hexagonale (coordonate axiale sau offset).

Desen în linie

Cum să tragi o linie de la un hexagon la altul? Folosesc interpolarea liniară pentru a desena linii. Linia este eșantionată uniform la N+1 puncte și se calculează în ce hexagoane sunt situate aceste probe.

gif


  1. Mai întâi calculăm N , care va fi distanța în hexagoane dintre punctele finale.
  2. Apoi eșantionăm uniform N+1 puncte între punctele A și B. Utilizând interpolarea liniară, determinăm că pentru valorile i de la 0 la N, inclusiv acestea, fiecare punct va fi A + (B - A) * 1,0/N * eu . În figură, aceste puncte de control sunt afișate cu albastru. Rezultatul sunt coordonatele în virgulă mobilă.
  3. Convertiți fiecare punct de control (float) înapoi în hexagoane (int). Algoritmul se numește cube_round (vezi mai jos).
Conectând totul împreună pentru a trage o linie de la A la B:

Funcția lerp(a, b, t): // pentru flotatori returnează a + (b - a) * funcția t cube_lerp(a, b, t): // pentru hexagoane returnează Cube(lerp(ax, bx, t), lerp(ay, by, t), lerp(az, bz, t)) function cube_linedraw(a, b): var N = cube_distance(a, b) var rezultate = pentru fiecare 0 ≤ i ≤ N: results.append( cube_round(cube_lerp(a, b, 1.0/N * i))) returnează rezultate
Note:

  • Există momente când cube_lerp returnează un punct exact pe marginea dintre două hexagoane. Apoi cube_round îl mută într-o parte sau cealaltă. Liniile arată mai bine dacă sunt deplasate într-o direcție. Acest lucru se poate face prin adăugarea unui cub hexagonal „epsilon” (1e-6, 1e-6, -2e-6) la unul sau ambele puncte finale înainte de a începe bucla. Acest lucru va „împinge” linia într-o direcție, astfel încât să nu lovească limitele marginilor.
  • Algoritmul DDA-line în grile de pătrate echivalează cu N cu distanța maximă de-a lungul fiecărei axe. Facem același lucru în spațiul cubic, care este analog cu distanța dintr-o rețea de hexagoane.
  • Funcția cube_lerp ar trebui să returneze un cub cu coordonate flotante. Dacă programați într-un limbaj tip static, nu veți putea folosi tipul Cube. În schimb, puteți defini un tip FloatCube sau puteți introduce funcția (inline) în codul de desen de linie dacă nu doriți să definiți încă un alt tip.
  • Puteți optimiza codul introducând (inline) cube_lerp și apoi calculând B.x-A.x , B.x-A.y și 1.0/N în afara buclei. Înmulțirea poate fi convertită în însumare repetată. Rezultatul este ceva ca un algoritm de linie DDA.
  • Folosesc coordonatele axiale sau cube pentru a trasa linii, dar dacă doriți să lucrați cu coordonate offset, consultați .
  • Există multe opțiuni pentru trasarea liniilor. Uneori este necesară „supracoperirea”. Mi s-a trimis codul pentru a desena linii supraacoperite în hexagoane, dar nu l-am analizat încă.

raza de călătorie

Interval de coordonate

Având în vedere un centru hexagon și un interval N, care hexagoane se află în N trepte de acesta?

Putem lucra înapoi de la hexagonul distanță formula distanță = max(abs(dx), abs(dy), abs(dz)) . Pentru a găsi toate hexagoane din N , avem nevoie de max(abs(dx), abs(dy), abs(dz)) ≤ N . Aceasta înseamnă că sunt necesare toate cele trei valori: abs(dx) ≤ N și abs(dy) ≤ N și abs(dz) ≤ N . Eliminarea valorii absolute dă -N ≤ dx ≤ N și -N ≤ dy ≤ N și -N ≤ dz ≤ N . În cod, aceasta va fi o buclă imbricată:

Var rezultate = pentru fiecare -N ≤ dx ≤ N: pentru fiecare -N ≤ dy ≤ N: pentru fiecare -N ≤ dz ≤ N: dacă dx + dy + dz = 0: rezultate.append(cube_add(center, Cube(dx) , dy, dz)))
Această buclă va funcționa, dar va fi destul de ineficientă. Dintre toate valorile lui dz pe care le repetăm ​​în buclă, doar una îndeplinește de fapt condiția cuburilor dx + dy + dz = 0 . În schimb, vom calcula direct valoarea lui dz care satisface condiția:

var rezultate = pentru fiecare -N ≤ dx ≤ N: pentru fiecare max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy rezultate.append(cube_add( centru, cub (dx, dy, dz)))
Această buclă trece doar prin coordonatele necesare. În figură, fiecare interval este o pereche de linii. Fiecare linie este o inegalitate. Luăm toate hexagoanele care satisfac șase inegalități.

gif


Intervalele suprapuse

Dacă trebuie să găsiți hexagoane care se află în mai multe intervale, puteți parcurge intervalele înainte de a genera o listă de hexagoane.

Se poate aborda această problemă din punct de vedere al algebrei sau al geometriei. Algebric, fiecare zonă este exprimată ca condiții de inegalitate de forma -N ≤ dx ≤ N , și trebuie să găsim intersecția acestor condiții. Geometric, fiecare zonă este un cub în spațiul 3D și vom intersecta două cuburi în spațiul 3D pentru a obține un cuboid în spațiul 3D. Apoi îl proiectăm înapoi pe planul x + y + z = 0 pentru a obține hexagoanele. Voi rezolva această problemă algebric.

Mai întâi, rescriem condiția -N ≤ dx ≤ N în mai multe forma generala x min ≤ x ≤ x max , iar x min = centru.x - N și x max = centru.x + N . Să facem același lucru pentru y și z , rezultând o vedere generală a codului din secțiunea anterioară:

Var rezultate = pentru fiecare xmin ≤ x ≤ xmax: pentru fiecare max(ymin, -x-zmax) ≤ y ≤ min(ymax, -x-zmin): var z = -xy rezultate. append(Cube(x, y, z))
Intersecția a două intervale a ≤ x ≤ b și c ≤ x ≤ d este max(a, c) ≤ x ≤ min(b, d) . Deoarece aria hexagoanelor este exprimată ca intervale peste x , y , z , putem intersecta individual fiecare dintre intervalele x , y , z și apoi folosim o buclă imbricată pentru a genera o listă de hexagoane la intersecție. Pentru o zonă de hexagoane, luăm x min = H.x - N și x max = H.x + N , în mod similar pentru y și z . Pentru intersecția a două zone hexagonale, luăm x min = max(H1.x - N, H2.x - N) și x max = min(H1.x + N, H2.x + N), în mod similar pentru y și z . Același model funcționează pentru intersecția a trei sau mai multe regiuni.

gif


Obstacole

În prezența obstacolelor, este cel mai ușor de completat cu o constrângere de distanță (căutare pe lățimea întâi). În figura de mai jos, ne limităm la patru mișcări. În cod, franjuri[k] este o matrice de toate hexagoane la care se poate ajunge în k pași. La fiecare trecere prin bucla principală, extindem nivelul k-1 cu nivelul k .

Funcția cube_reachable(start, movement): var vizitat = set() add start la vizitat var franjuri = franjuri.append() pentru fiecare 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

se întoarce

Pentru un vector hexagon dat (diferența dintre două hexagoane), poate fi necesar să-l rotim pentru a indica un alt hexagon. Acest lucru este ușor de făcut cu coordonatele cubice dacă rămâneți la 1/6-a rotație.

Rotirea cu 60° la dreapta deplasează fiecare coordonată cu o poziție la dreapta:

[x, y, z] la [-z, -x, -y]
Rotirea cu 60° la stânga deplasează fiecare coordonată cu o poziție spre stânga:

[x, y, z] la [-y, -z, -x]



„Jucând” [în articolul original] cu diagrama, puteți vedea că fiecare întoarcere cu 60 ° schimbări semnează și „rotește” fizic coordonatele. După o rotație de 120°, semnele sunt din nou aceleași. O rotație de 180° inversează semnele, dar coordonatele sunt rotite în poziția inițială.

Iată secvența completă a poziției de rotație P în jurul poziției centrale C, rezultând o nouă poziție R:

  1. Convertiți pozițiile P și C în coordonate cubice.
  2. Calcularea unui vector prin scăderea centrului: P_din_C = P - C = Cub(P.x - C.x, P.y - C.y, P.z - C.z) .
  3. Rotirea vectorului P_from_C așa cum este descris mai sus și atribuirea vectorului rezultat denumirea R_from_C .
  4. Convertirea unui vector înapoi în poziție prin adăugarea unui centru: 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. Convertirea poziției cubice R înapoi la sistemul de coordonate dorit.
Există mai multe etape de transformări, dar fiecare dintre ele este destul de simplă. Este posibil să scurtați unii dintre acești pași prin definirea rotației direct în coordonate axiale, dar vectorii hexagonal nu funcționează cu coordonate offset și nu știu cum să scurtez pașii pentru coordonatele offset. Vezi și discuția despre alte moduri de a calcula rotația pe stackexchange.

Inele

inel simplu

Pentru a afla dacă un anumit hexagon aparține unui inel cu o rază dată, trebuie să calculați distanța de la acest hexagon până la centru și să aflați dacă este egal cu raza. Pentru a obține o listă cu toate astfel de hexagoane, trebuie să faceți pași de rază din centru și apoi să urmați vectorii rotiți de-a lungul traseului de-a lungul inelului.

Funcția cube_ring(center, radius): var rezultate = # acest cod nu funcționează pentru rază == 0; intelegi de ce? var cub = cube_add(centru, cub_scale(cube_direction(4), raza)) pentru fiecare 0 ≤ i< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
În acest cod, cubul începe de la inel, arătat ca o săgeată mare de la centru până la colțul diagramei. Am ales unghiul 4 pentru a începe, deoarece corespunde traseului pe care îl parcurg numerele de direcție. Este posibil să aveți nevoie de un unghi de pornire diferit. La fiecare etapă a buclei interioare, cubul mișcă un hexagon în jurul inelului. După pași de 6 * rază, ajunge de unde a început.


inele spiralate

Mergând prin inele într-un model în spirală, putem completa interiorul inelelor:

Funcția cube_spiral(centru, rază): var rezultate = pentru fiecare 1 ≤ k ≤ rază: rezultate = rezultate + cube_ring(centru, k) returnează rezultate



Aria hexagonului mare este egală cu suma tuturor cercurilor plus 1 pentru centru. Utilizați această formulă pentru a calcula suprafața.

Traversarea hexagoanelor în acest fel poate fi folosită și pentru a calcula intervalul de mișcare (vezi mai sus).

Zona de vizibilitate

Ce este vizibil dintr-o poziție dată la o anumită distanță și nu este blocat de obstacole? Cel mai simplu mod definiți-l - trageți o linie la fiecare hexagon din intervalul dat. Dacă linia nu se întâlnește cu pereții, atunci vedeți un hexagon. Deplasați mouse-ul peste hexagoane [pe diagrama din articolul original] pentru a vedea liniile care sunt desenate către acele hexagoane și pereții pe care liniile se întâlnesc.

Acest algoritm poate fi lent pe suprafețe mari, dar este ușor de implementat, așa că recomand să începeți cu el.

gif



Sunt multi definiții diferite vizibilitate. Vrei să vezi centrul altui hexagon din centrul celui inițial? Vrei să vezi vreo parte dintr-un alt hexagon din centrul celui inițial? Poate vreo parte a altui hexagon din orice punct de plecare? Obstacolele sunt mai mici decât un hexagon complet? Scope este un concept mai complicat și mai variat decât se vede. Să începem cu cel mai simplu algoritm, dar așteaptă-te să calculeze corect răspunsul în proiectul tău. Există chiar și cazuri în care un algoritm simplu dă rezultate ilogice.

Vreau să extind acest ghid în continuare. eu am

Există un creion lângă tine? Aruncă o privire la secțiunea sa - este un hexagon obișnuit sau, așa cum se mai numește, un hexagon. Secțiunea transversală a unei nuci, un câmp de șah hexagonal, unele molecule complexe de carbon (de exemplu, grafit), un fulg de zăpadă, un fagure și alte obiecte au, de asemenea, această formă. Un hexagon regulat gigantic a fost descoperit recent în interiorul. Nu vi se pare ciudat că natura folosește atât de des structuri cu această formă specială pentru creațiile sale? Să aruncăm o privire mai atentă.

Un hexagon obișnuit este un poligon cu șase laturi și unghiuri egale. Din cursul școlii, știm că are următoarele proprietăți:

  • Lungimea laturilor sale corespunde razei cercului circumscris. Dintre toate, doar un hexagon obișnuit are această proprietate.
  • Unghiurile sunt egale între ele, iar mărimea fiecăruia este de 120 °.
  • Perimetrul unui hexagon poate fi găsit folosind formula Р=6*R dacă se cunoaște raza cercului circumscris în jurul lui, sau Р=4*√(3)*r dacă cercul este înscris în el. R și r sunt razele cercurilor circumscrise și înscrise.
  • Aria ocupată de un hexagon regulat se determină astfel: S=(3*√(3)*R 2)/2. Dacă raza este necunoscută, înlocuim lungimea uneia dintre laturi în loc de ea - după cum știți, aceasta corespunde cu lungimea razei cercului circumscris.

Hexagonul obișnuit are o caracteristică interesantă datorită căreia a devenit atât de răspândit în natură - este capabil să umple orice suprafață a planului fără suprapuneri și goluri. Există chiar și așa-numita lemă Pal, conform căreia un hexagon regulat a cărui latură este egală cu 1/√(3) este o anvelopă universală, adică poate acoperi orice set cu un diametru de o unitate.

Acum luați în considerare construcția unui hexagon obișnuit. Există mai multe moduri, dintre care cea mai ușoară implică utilizarea unui compas, creion și riglă. Mai întâi, desenăm un cerc arbitrar cu o busolă, apoi facem un punct într-un loc arbitrar pe acest cerc. Fără a schimba soluția busolei, punem vârful în acest punct, marcam următoarea crestătură pe cerc, continuăm așa până obținem toate cele 6 puncte. Acum rămâne doar să le conectați între ele cu segmente drepte, iar figura dorită se va dovedi.

În practică, există momente când trebuie să desenați un hexagon mare. De exemplu, pe un tavan din gips-carton cu două niveluri, în jurul punctului de atașare al candelabrului central, trebuie să instalați șase lămpi mici la nivelul inferior. Va fi foarte, foarte greu să găsești o busolă de această dimensiune. Cum se procedează în acest caz? Cum desenezi un cerc mare? Foarte simplu. Trebuie să luați un fir puternic de lungimea dorită și să legați unul dintre capete opus creionului. Acum rămâne doar să găsim un asistent care să apese al doilea capăt al firului de tavan în punctul potrivit. Desigur, în acest caz, sunt posibile erori minore, dar este puțin probabil să fie vizibile pentru un străin.

Conţinut:

Un hexagon regulat, numit și hexagon perfect, are șase laturi egale și șase unghiuri egale. Puteți desena un hexagon cu o bandă de măsurare și un raportor, un hexagon brut cu un obiect rotund și o riglă sau un hexagon și mai gros cu doar un creion și puțină intuiție. Dacă doriți să știți cum să desenați un hexagon în moduri diferite, citiți mai departe.

Pași

1 Desenați un hexagon perfect cu o busolă

  1. 1 Desenați un cerc folosind o busolă. Introdu creionul în busolă. Extindeți busola la lățimea dorită a razei cercului dvs. Raza poate fi de la câteva până la zeci de centimetri lățime. Apoi, puneți o busolă cu un creion pe hârtie și desenați un cerc.
    • Uneori este mai ușor să desenezi mai întâi jumătatea cercului și apoi cealaltă jumătate.
  2. 2 Mutați acul busolei la marginea cercului. Pune-l deasupra cercului. Nu schimbați unghiul și poziția busolei.
  3. 3 Faceți un mic semn de creion pe marginea cercului. Faceți-l distinct, dar nu prea întunecat, deoarece îl veți șterge mai târziu. Nu uitați să salvați unghiul pe care l-ați setat pentru busolă.
  4. 4 Mutați acul busolei la semnul pe care tocmai l-ați făcut. Puneți acul drept pe semn.
  5. 5 Faceți un alt semn cu un creion pe marginea cercului. Astfel, vei face un al doilea marcaj la o anumită distanță de primul semn. Continuați să vă mișcați într-o direcție.
  6. 6 Faceți încă patru semne în același mod. Trebuie să reveniți la marca inițială. Dacă nu, atunci cel mai probabil unghiul la care ați ținut busola și ați făcut semnele sa schimbat. Poate că asta s-a întâmplat din cauza faptului că l-ai strâns prea tare sau, dimpotrivă, l-ai slăbit puțin.
  7. 7 Conectați semnele cu o riglă. Cele șase locuri în care semnele tale se intersectează cu marginea cercului sunt cele șase vârfuri ale hexagonului. Folosind o riglă și un creion, trageți linii drepte care leagă semnele adiacente.
  8. 8 Ștergeți atât cercul, cât și semnele de pe marginile cercului și orice alte semne pe care le-ați făcut. După ce ați șters toate liniile de ghidare, hexagonul perfect ar trebui să fie gata.

2 Desenați un hexagon brut cu un obiect rotund și o riglă

  1. 1 Încercuiește marginea paharului cu un creion. Astfel vei desena un cerc. Este foarte important să desenați cu un creion, deoarece mai târziu va trebui să ștergeți toate liniile auxiliare. Puteți, de asemenea, să încercuiți un pahar, un borcan sau orice altceva care are o bază rotundă.
  2. 2 Desenați linii orizontale în centrul cercului dvs. Puteți folosi o riglă, o carte, orice cu o margine dreaptă. Dacă aveți o riglă, puteți marca mijlocul calculând lungimea verticală a cercului și împărțind-o la jumătate.
  3. 3 Desenați un „X” peste semicerc, împărțindu-l în șase secțiuni egale. Deoarece ați trasat deja o linie prin mijlocul cercului, X-ul trebuie să fie mai lat decât înalt pentru ca părțile să fie egale. Imaginați-vă că împărțiți o pizza în șase bucăți.
  4. 4 Faceți triunghiuri din fiecare secțiune. Pentru a face acest lucru, folosiți rigla pentru a trage o linie dreaptă sub porțiunea curbată a fiecărei secțiuni, conectând-o cu celelalte două linii pentru a forma un triunghi. Faceți acest lucru cu celelalte cinci secțiuni. Gândiți-vă la asta ca și cum ați face crusta în jurul feliilor de pizza.
  5. 5 Ștergeți toate liniile auxiliare. Liniile de ghidare includ cercul dvs., cele trei linii care v-au împărțit cercul în secțiuni și orice alte semne pe care le-ați făcut pe parcurs.

3 Desenați un hexagon brut cu un creion

  1. 1 Desenați o linie orizontală. Pentru a desena o linie dreaptă fără riglă, pur și simplu trageți punctul de început și de sfârșit al liniei orizontale. Apoi puneți creionul la punctul de pornire și extindeți linia până la sfârșit. Lungimea acestei linii poate fi de doar câțiva centimetri.
  2. 2 Desenați două linii diagonale de la capetele celei orizontale. Linia diagonală din partea stângă ar trebui să fie îndreptată spre exterior, în același mod ca și linia diagonală din dreapta. Vă puteți imagina că aceste linii formează un unghi de 120 de grade în raport cu linia orizontală.
  3. 3 Desenați încă două linii orizontale care vin de la primele linii orizontale desenate spre interior. Aceasta va crea o imagine în oglindă a primelor două linii diagonale. Linia din stânga jos ar trebui să fie o reflectare a liniei din stânga sus, iar linia din dreapta jos ar trebui să fie o reflectare a liniei din dreapta sus. În timp ce liniile orizontale de sus ar trebui să fie orientate spre exterior, liniile de jos ar trebui să privească în interior la bază.
  4. 4 Desenați o altă linie orizontală, conectând cele două linii diagonale de jos.În acest fel, vei desena baza pentru hexagonul tău. În mod ideal, această linie ar trebui să fie paralelă cu linia orizontală de sus. Aici ți-ai completat hexagonul.
  • Creionul și busola trebuie să fie ascuțite pentru a minimiza erorile de la semnele prea largi.
  • Când utilizați metoda busolei, dacă ați conectat fiecare semn în loc de toate șase, obțineți un triunghi echilateral.

Avertizări

  • Busola este un obiect destul de ascuțit, fii foarte atent cu el.

Principiul de funcționare

  • Fiecare metodă va ajuta la desenarea unui hexagon format din șase triunghiuri echilaterale cu o rază egală cu lungimea tuturor laturilor. Cele șase raze desenate au aceeași lungime și toate liniile pentru a crea hexagonul au, de asemenea, aceeași lungime, deoarece lățimea busolei nu s-a schimbat. Datorită faptului că cele șase triunghiuri sunt echilaterale, unghiurile dintre vârfurile lor sunt de 60 de grade.

De ce vei avea nevoie

  • Hârtie
  • Creion
  • Rigla
  • Pereche de busole
  • Ceva care poate fi plasat sub hârtie pentru a nu aluneca acul busolei.
  • Radieră

închide