Sekskantgitter (sekskantede rutenett) brukes i noen spill, men de er ikke så enkle eller vanlige som rektangelnett. Jeg har samlet ressurser på hex-masker i nesten 20 år, og jeg skrev denne guiden til de mest elegante tilnærmingene, implementert i den enkleste koden. Denne artikkelen bruker mye guidene til Charles Fu og Clark Verbrugge. Jeg vil beskrive de forskjellige måtene å lage sekskantmasker på, deres relasjoner og de vanligste algoritmene. Mange deler av denne artikkelen er interaktive: ved å velge en rutenetttype endres de tilsvarende diagrammene, koden og tekstene. (Merk pr.: dette gjelder kun originalen, jeg råder deg til å studere den. I oversettelsen er all informasjon om originalen bevart, men uten interaktivitet.).
Kodeeksemplene i artikkelen er skrevet i pseudokode, slik at de er lettere å lese og forstå for å kunne skrive din egen implementering.
Sekskanter med flate (venstre) og skarpe (høyre) topper
Sekskanter har 6 ansikter. Hvert ansikt er felles for to sekskanter. Sekskanter har 6 hjørnepunkter. Hvert hjørnepunkt er felles for tre sekskanter. Du kan lese mer om sentre, kanter og hjørnepunkter i artikkelen min om maskedeler (firkanter, sekskanter og trekanter).
Funksjon hex_corner(center, size, i): var angle_deg = 60 * i + 30 var angle_rad = PI / 180 * angle_deg returpunkt(center.x + size * cos(angle_rad), center.y + size * sin(angle_rad) )
For å fylle en sekskant, må du få toppunktene til polygonen fra hex_corner(…, 0) til hex_corner(…, 5) . For å tegne omrisset av sekskanten, må du bruke disse toppunktene og deretter tegne linjen igjen i hex_corner(..., 0) .
Forskjellen mellom de to orienteringene er at x og y byttes, noe som resulterer i en endring i vinkler: flattoppsekskanter har vinkler på 0°, 60°, 120°, 180°, 240°, 300° og spiss-topp sekskanter har vinkler på 30°, 90°, 150°, 210°, 270°, 330°.
Hjørner av sekskanter med flate og skarpe topper
Heksagon bredde bredde = sqrt(3)/2 * høyde . Den horisontale avstanden mellom tilstøtende sekskanter er horiz = bredde.
Noen spill bruker pikselkunst for sekskanter, som ikke akkurat matcher de vanlige sekskantene. Vinkel- og plasseringsformlene beskrevet i denne delen vil ikke samsvare med dimensjonene til slike sekskanter. Resten av artikkelen som beskriver hexagon mesh-algoritmene gjelder selv om hexagonene er litt strukket eller klemt.
Horisontalt arrangement "odd-r"
Horisontalt arrangement "jevn-r"
Vertikal "odd-q"-arrangement
Vertikalt arrangement "even-q"
La oss ta et rutenett av kuber og la oss kutte det ut diagonalplan ved x + y + z = 0. Dette er en merkelig idé, men det vil hjelpe oss med å forenkle hexagon mesh-algoritmene. Spesielt vil vi kunne bruke standardoperasjoner fra kartesiske koordinater: summere og subtrahere koordinater, multiplisere og dividere med en skalar mengde, samt avstander.
Legg merke til de tre hovedaksene på rutenettet av kuber og deres forhold til de seks diagonal retningene til det sekskantede rutenettet. De diagonale aksene til rutenettet tilsvarer hovedretningen til det sekskantede rutenettet.
Siden vi allerede har algoritmer for kvadrat- og kubemasker, lar bruk av kubiske koordinater oss tilpasse disse algoritmene til sekskantmasker. Jeg vil bruke dette systemet for de fleste av artikkelens algoritmer. For å bruke algoritmene med et annet koordinatsystem, konverterer jeg de kubiske koordinatene, kjører algoritmen og konverterer dem deretter tilbake.
Lær hvordan kubiske koordinater fungerer for et sekskantnett. Når du velger sekskanter, utheves kubiske koordinater som tilsvarer de tre aksene.
Det finnes mange forskjellige koordinatsystemer for kuber og sekskanter. I noen av dem er tilstanden forskjellig fra x + y + z = 0. Jeg viste bare ett av mange systemer. Du kan også lage kubiske koordinater med x-y , y-z , z-x , som har sitt eget sett med interessante egenskaper, men jeg skal ikke gå inn på dem her.
Men du kan argumentere for at du ikke vil lagre 3 tall for koordinatene fordi du ikke vet hvordan du skal lagre kartet på den måten.
Det er mange kubiske koordinatsystemer og mange aksiale. Jeg vil ikke dekke hver kombinasjon i denne veiledningen. Jeg velger to variabler, q (kolonne) og r (rad). I diagrammene i denne artikkelen tilsvarer q x og r tilsvarer z, men denne korrespondansen er vilkårlig fordi du kan rotere og rotere diagrammene for å få forskjellige samsvar.
Fordelen med dette systemet fremfor forskyvningsnett er at algoritmene er mer forståelige. Ulempen med systemet er at det er litt rart å lagre et rektangulært kort; se avsnittet om lagring av kart. Noen algoritmer er enda tydeligere i kubiske koordinater, men siden vi har betingelsen x + y + z = 0, kan vi beregne den tredje implisitte koordinaten og bruke den i disse algoritmene. I mine prosjekter kaller jeg aksene q, r, s, så betingelsen ser ut som q + r + s = 0, og jeg kan beregne s = -q - r når det trengs.
Akser er retningen som den tilsvarende koordinaten øker i. Vinkelrett på en akse er linjen der koordinaten forblir konstant. Rutenettdiagrammene ovenfor viser vinkelrette linjer.
Aksiale koordinater er nært knyttet til kubiske koordinater, så konverteringen er enkel:
# konverter kubiske til aksiale koordinater q = x r = z # konverter aksiale til kubiske koordinater x = q z = r y = -x-z
I kode kan disse to funksjonene skrives som følger:
Funksjon cube_to_hex(h): # aksial var q = h.x var r = h.z return Hex(q, r) funksjon hex_to_cube(h): # cubic var x = h.q var z = h.r var y = -x-z return Cube(x, y , z)
Offsetkoordinater er litt mer kompliserte:
Var retninger = [ Cube(+1, -1, 0), Cube(+1, 0, -1), Cube(0, +1, -1), Cube(-1, +1, 0), Cube( -1, 0, +1), Cube(0, -1, +1) ] funksjon kube_retning(retning): returretningsfunksjon kube_neighbor(hex, retning): return cube_add(hex, cube_direction(retning))
Var-retninger = [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0, +1) ] funksjon hex_direction(retning): returretningsfunksjon hex_neighbor(hex, retning): var dir = hex_direction(retning) return Hex(hex.q + dir.q, hex.r + dir.r)
Som før lager vi en tabell med tall som må legges til col og rad . Denne gangen vil vi imidlertid ha to matriser, en for de odde kolonnene/radene og den andre for partallene. Se på (1,1) i rutenettkartbildet ovenfor og legg merke til hvordan farge og rad endres når du beveger deg i hver av de seks retningene. La oss nå gjenta prosessen for (2,2) . Tabellene og koden vil være forskjellig for hver av de fire typene forskyvningsgitter her er den tilsvarende koden for hver rutenetttype.
Odd-r
var retninger = [ [ 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) ] ] funksjon offset_neighbor(hex, retning): var paritet = hex.rad & 1 var dir = retninger retur Hex(hex.col + dir.col, hex.row + dir.row)
Even-r
var retninger = [ [ 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) ] ] funksjon offset_neighbor(hex, retning): var paritet = hex.rad & 1 var dir = retninger retur Hex(hex.col + dir.col, hex.row + dir.row)
Rutenett for partall (ELN) og oddetall (ODD) rader
Odd-q
var retninger = [ [ 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) ] ] funksjon offset_neighbor(hex, retning): var paritet = hex.col & 1 var dir = retninger retur Hex(hex.col + dir.col, hex.row + dir.row)
Even-q
var retninger = [ [ 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) ] ] funksjon offset_neighbor(hex, retning): var paritet = hex.col & 1 var dir = retninger retur Hex(hex.col + dir.col, hex.row + dir.row)
Rutenett for partall (ELN) og oddetall (ODD) kolonner
Var diagonaler = [ Cube(+2, -1, -1), Cube(+1, +1, -2), Cube(-1, +2, -1), Cube(-2, +1, +1) ), Cube(-1, -1, +2), Cube(+1, -2, +1) ] funksjon cube_diagonal_neighbor(hex, direction): return cube_add(hex, diagonals)
Som før kan vi konvertere disse koordinatene til aksiale koordinater ved å slippe en av de tre koordinatene, eller konvertere dem til offsetkoordinater ved først å beregne resultatene.
Funksjon cube_distance(a, b): retur (abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) / 2
Ekvivalenten til denne notasjonen vil være å si at en av de tre koordinatene må være summen av de to andre, og så ta det som avstanden. Du kan velge halveringsskjemaet eller maksimumsverdiskjemaet nedenfor, men de gir samme resultat:
Funksjon cube_distance(a, b): return max(abs(a.x - b.x), abs(a.y - b.y), abs(a.z - b.z))
På figuren er maksimalverdiene uthevet i farger. Merk også at hver farge representerer en av de seks "diagonale" retningene.
GIF
Funksjon hex_distance(a, b): var ac = hex_to_cube(a) var bc = hex_to_cube(b) return cube_distance(ac, bc)
Hvis kompilatoren inline (inline) hex_to_cube og cube_distance i ditt tilfelle, vil den generere kode som dette:
Funksjon hex_distance(a, b): retur (abs(a.q - b.q) + abs(a.q + a.r - b.q - b.r) + abs(a.r - b.r)) / 2
Det er mange forskjellige måter å skrive avstandene mellom sekskanter i aksiale koordinater, men uansett hvordan du skriver avstanden mellom sekskanter i det aksiale systemet trekkes ut fra Manhattan-avstanden i det kubiske systemet. For eksempel oppnås den beskrevne "forskjellen av forskjeller" ved å skrive a.q + a.r - b.q - b.r som a.q - b.q + a.r - b.r og bruke maksimalverdiformen i stedet for halveringsformen cube_distance . De er alle like hvis du ser sammenhengen med kubiske koordinater.
Funksjon offset_distance(a, b): var ac = offset_to_cube(a) var bc = offset_to_cube(b) return cube_distance(ac, bc)
Vi vil bruke det samme mønsteret for mange av algoritmene: konverter fra sekskanter til kuber, kjør den kubiske versjonen av algoritmen og konverter de kubiske resultatene til sekskantkoordinater (aksiale eller forskyvne koordinater).
GIF
Funksjon lerp(a, b, t): // for float return a + (b - a) * t funksjon cube_lerp(a, b, t): // for hexagons return Cube(lerp(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)) funksjon cube_linedraw(a, b): var N = cube_distance(a, b) var results = for hver 0 ≤ i ≤ N: results.append( cube_round(cube_lerp(a, b, 1.0/N * i))) returnerer resultater
Merknader:
Vi kan gjøre det inverse fra formelen for avstanden mellom sekskanter avstand = max(abs(dx), abs(dy), abs(dz)) . For å finne alle sekskanter innenfor N trenger vi max(abs(dx), abs(dy), abs(dz)) ≤ N . Dette betyr at alle tre verdiene er nødvendige: abs(dx) ≤ N og abs(dy) ≤ N og abs(dz) ≤ N . Fjerner vi den absolutte verdien, får vi -N ≤ dx ≤ N og -N ≤ dy ≤ N og -N ≤ dz ≤ N . I kode vil dette være en nestet løkke:
Var resultater = for hver -N ≤ dx ≤ N: for hver -N ≤ dy ≤ N: for hver -N ≤ dz ≤ N: hvis dx + dy + dz = 0: resultater.append(cube_add(center, Cube(dx) , dy, dz)))
Denne syklusen vil fungere, men den vil være ganske ineffektiv. Av alle dz-verdiene som vi går gjennom, er det bare én som faktisk tilfredsstiller kubebetingelsen dx + dy + dz = 0. I stedet vil vi direkte beregne verdien av dz som tilfredsstiller betingelsen:
Var resultater = for hver -N ≤ dx ≤ N: for hver maks(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy results.append(cube_add( center, Cube(dx, dy, dz)))
Denne syklusen går bare langs de nødvendige koordinatene. På figuren er hvert område et par linjer. Hver linje er en ulikhet. Vi tar alle sekskanter som tilfredsstiller de seks ulikhetene.
GIF
Du kan nærme deg dette problemet fra et synspunkt av algebra eller geometri. Algebraisk uttrykkes hver region som ulikhetsbetingelser av formen -N ≤ dx ≤ N, og vi må finne skjæringspunktet mellom disse forholdene. Geometrisk er hver region en kube i 3D-rom, og vi vil skjære to kuber i 3D-rom for å få en kuboid i 3D-rom. Vi projiserer det så tilbake på x + y + z = 0-planet for å få sekskanter. Jeg vil løse dette problemet algebraisk.
Først omskriver vi betingelsen -N ≤ dx ≤ N i den mer generelle formen x min ≤ x ≤ x max , og tar x min = center.x - N og x max = center.x + N . La oss gjøre det samme for y og z, noe som resulterer i den generelle formen for koden fra forrige seksjon:
Var-resultater = for hver xmin ≤ x ≤ xmaks: for hver maks(ymin, -x-zmaks) ≤ y ≤ min(ymaks, -x-zmin): var z = -x-y resultater.append(Cube(x, y, z))
Skjæringspunktet mellom to områder a ≤ x ≤ b og c ≤ x ≤ d er max(a, c) ≤ x ≤ min(b, d) . Siden arealet av sekskanter er uttrykt som områder over x, y, z, kan vi skjære hvert av områdene x, y, z separat og deretter bruke en nestet sløyfe for å generere en liste over sekskanter i skjæringspunktet. For ett område med sekskanter tar vi x min = H.x - N og x max = H.x + N , på samme måte for y og z . For skjæringspunktet mellom to sekskantede områder tar vi x min = maks(H1.x - N, H2.x - N) og x max = min(H1.x + N, H2.x + N), på samme måte for y og z . Det samme mønsteret fungerer for skjæringspunktet mellom tre eller flere områder.
GIF
Funksjon cube_reachable(start, movement): var visited = set() legg til start til besøkt var fringes = fringes.append() for hver 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
En 60° rotasjon til høyre flytter hver koordinat én posisjon til høyre:
[ x, y, z] til [-z, -x, -y]
En 60° rotasjon til venstre flytter hver koordinat én posisjon til venstre:
[ x, y, z] til [-y, -z, -x]
Her er den komplette sekvensen av rotasjon av posisjon P rundt den sentrale posisjonen C, noe som resulterer i en ny posisjon R:
Funksjon cube_ring(center, radius): var results = # denne koden fungerer ikke for radius == 0; forstår du hvorfor?< 6:
for each 0 ≤ j < radius:
results.append(cube)
cube = cube_neighbor(cube, i)
return results
var cube = cube_add(center, cube_scale(cube_direction(4), radius)) for hver 0 ≤ i
Ved å gå gjennom ringene i et spiralmønster kan vi fylle ut de indre delene av ringene:
Arealet til en stor sekskant er summen av alle sirklene pluss 1 for sentrum. Bruk denne formelen til å beregne arealet.
Hva er synlig fra en gitt posisjon i en gitt avstand, og er ikke blokkert av hindringer? Den enkleste måten å bestemme dette på er å tegne en linje til hver sekskant i et gitt område. Hvis linjen ikke møter veggene, ser du en sekskant. Beveg musen over sekskantene [på diagrammet i den originale artikkelen] for å se hvordan linjene er tegnet til disse sekskantene og veggene som linjene møter.
GIF
Det er mange forskjellige definisjoner av synlighet. Vil du se midten av en annen sekskant fra midten av den originale? Vil du se en del av en annen sekskant fra midten av den originale? Kanskje en del av en annen sekskant fra et hvilket som helst punkt av den første? Hindringer som hindrer sikten din er mindre enn en hel sekskant? Scope er et vanskeligere og mer variert konsept enn det ser ut ved første øyekast. La oss starte med den enkleste algoritmen, men forvent at den definitivt vil beregne svaret riktig i prosjektet ditt. Det er til og med tilfeller når en enkel algoritme gir ulogiske resultater.
Jeg ønsker å utvide denne veiledningen i fremtiden. jeg har Konstruksjonen av en sekskant er basert på det faktum at siden er lik radiusen til den omskrevne sirkelen. Derfor, for å konstruere den, er det nok å dele sirkelen i seks like deler og koble de funnet punktene til hverandre (fig. 60, a).
En vanlig sekskant kan bygges med en rett kant og en 30X60° firkant. For å utføre denne konstruksjonen tar vi den horisontale diameteren til sirkelen som halveringslinjen for vinkel 1 og 4 (fig. 60, b), konstruerer sidene 1 -6, 4-3, 4-5 og 7-2, hvoretter vi tegner side 5-6 og 3-2.
Konstruere en likesidet trekant innskrevet i en sirkel. Toppene til en slik trekant kan konstrueres ved hjelp av et kompass og en firkant med vinkler på 30 og 60° eller bare ett kompass.
La oss vurdere to måter å konstruere en likesidet trekant innskrevet i en sirkel.
Første vei(Fig. 61,a) er basert på det faktum at alle tre vinklene i trekanten 7, 2, 3 inneholder 60°, og den vertikale linjen trukket gjennom punkt 7 er både høyden og halveringslinjen til vinkel 1. Siden vinkelen er 0-1- 2 er lik 30°, så for å finne siden
1-2, er det nok å konstruere en vinkel på 30° fra punkt 1 og side 0-1. For å gjøre dette, installer tverrstangen og firkanten som vist på figuren, tegn linje 1-2, som vil være en av sidene av ønsket trekant. For å konstruere side 2-3, sett tverrstangen i posisjonen vist med de stiplede linjene, og tegn en rett linje gjennom punkt 2, som vil bestemme trekantens tredje toppunkt.
Andre vei er basert på det faktum at hvis du bygger en regulær sekskant innskrevet i en sirkel og deretter kobler dens toppunkter gjennom en, vil du få en likesidet trekant.
For å konstruere en trekant (fig. 61, b), merk toppunktet 1 på diameteren og tegn en diametral linje 1-4. Deretter, fra punkt 4 med en radius lik D/2, beskriver vi en bue til den skjærer sirkelen i punktene 3 og 2. De resulterende punktene vil være de to andre toppunktene i den ønskede trekanten.
Konstruere en firkant innskrevet i en sirkel. Denne konstruksjonen kan gjøres ved hjelp av en firkant og et kompass.
Den første metoden er basert på det faktum at diagonalene til firkanten skjærer i midten av den omskrevne sirkelen og skråner til dens akser i en vinkel på 45°. Basert på dette installerer vi tverrstangen og firkanten med vinkler på 45° som vist i fig. 62, a, og merk punktene 1 og 3. Deretter trekker vi gjennom disse punktene de horisontale sidene av firkanten 4-1 og 3-2 ved hjelp av en tverrstang. Deretter, ved hjelp av en rett kant, tegner vi de vertikale sidene av firkanten 1-2 og 4-3 langs benet på firkanten.
Den andre metoden er basert på det faktum at hjørnene til kvadratet halverer sirkelbuene som er innelukket mellom endene av diameteren (fig. 62, b). Vi markerer punktene A, B og C ved endene av to innbyrdes vinkelrette diametre og fra dem med en radius y beskriver vi buer til de skjærer hverandre.
Deretter tegner vi gjennom skjæringspunktene til buene hjelpelinjer, merket på figuren med heltrukne linjer. Punktene i deres skjæringspunkt med sirkelen vil bestemme hjørnene 1 og 3; 4 og 2. Vi kobler toppunktene til ønsket firkant oppnådd på denne måten i serie med hverandre.
Konstruksjon av en vanlig femkant innskrevet i en sirkel.
For å passe en vanlig femkant inn i en sirkel (fig. 63), lager vi følgende konstruksjoner.
Vi markerer punkt 1 på sirkelen og tar den som en av toppunktene i femkanten. Vi deler segmentet AO i to. For å gjøre dette beskriver vi en bue fra punkt A med radius AO til den skjærer sirkelen i punktene M og B. Ved å koble disse punktene med en rett linje får vi punkt K, som vi så kobler til punkt 1. Med en radius lik segmentet A7, beskriver vi en bue fra punkt K til den skjærer den diametrale linjen AO i punkt H. Ved å koble punkt 1 med punkt H får vi siden av femkanten. Deretter, ved å bruke en kompassløsning lik segmentet 1H, som beskriver en bue fra toppunkt 1 til skjæringspunktet med sirkelen, finner vi toppunkt 2 og 5. Etter å ha laget hakk fra toppunkt 2 og 5 med samme kompassløsning, får vi de resterende toppunkt 3 og 4. Vi kobler de funnet punktene sekvensielt med hverandre.
Konstruere en vanlig femkant langs en gitt side.
For å konstruere en regulær femkant langs en gitt side (fig. 64), deler vi segmentet AB i seks like deler. Fra punktene A og B med radius AB beskriver vi buer, hvis skjæringspunkt vil gi punktet K. Gjennom dette punktet og divisjon 3 på linje AB tegner vi en vertikal linje.
Vi får punkt 1-toppunktet til femkanten. Deretter, med en radius lik AB, fra punkt 1 beskriver vi en bue til den skjærer med buene som tidligere er tegnet fra punktene A og B. Skjæringspunktene til buene bestemmer femkantpunktene 2 og 5. Vi kobler de funnet toppunktene i serier med hverandre.
Konstruksjon av en vanlig sjukant innskrevet i en sirkel.
La en sirkel med diameter D gis; du må passe en vanlig sekskant inn i den (fig. 65). Del den vertikale diameteren til sirkelen i syv like deler. Fra punkt 7 med en radius lik diameteren til sirkel D beskriver vi en bue til den skjærer fortsettelsen av den horisontale diameteren i punktet F. Vi kaller punktet F polygonens pol. Ved å ta punkt VII som en av toppunktene til heptagonen, trekker vi stråler fra polen F gjennom jevne inndelinger av den vertikale diameteren, hvis skjæringspunkt med sirkelen vil bestemme toppunktene VI, V og IV til heptagonen. For å få toppunkter / - // - /// fra punktene IV, V og VI, tegn horisontale linjer til de krysser sirkelen. Vi kobler de funnet toppunktene sekvensielt til hverandre. En heptagon kan konstrueres ved å trekke stråler fra F-polen og gjennom odde inndelinger av den vertikale diameteren.
Metoden ovenfor er egnet for å konstruere vanlige polygoner med et hvilket som helst antall sider.
Delingen av en sirkel i et hvilket som helst antall like deler kan også gjøres ved å bruke dataene i tabellen. 2, som gir koeffisienter som gjør det mulig å bestemme dimensjonene til sidene til vanlige innskrevne polygoner.
La oss lære å tegne et sekskantet prisme i forskjellige posisjoner.
Studer forskjellige måter å konstruere en vanlig sekskant på, lag tegninger av sekskanter, kontroller riktigheten av konstruksjonen deres. Konstruer sekskantede prismer basert på sekskantene.
Tenk på det sekskantede prismet i fig. 3.52 og dens ortogonale projeksjoner i fig. 3,53. Ved bunnen av et sekskantet prisme (sekskant) er vanlige sekskanter, sideflatene er identiske rektangler. For å kunne avbilde en sekskant korrekt i perspektiv, må du først lære hvordan du kan avbilde basen riktig i perspektiv (fig. 3.54). I sekskanten i fig. 3,55 hjørner er angitt med tall fra én til seks. Hvis du kobler punktene 1 og 3, 4 og 6 med vertikale rette linjer, vil du legge merke til at disse rette linjene, sammen med midtpunktet i sirkelen, deler diameteren 5 - 2 i fire like segmenter (disse segmentene er indikert med buer ). De motsatte sidene av en sekskant er parallelle med hverandre og til en linje som går gjennom midten og forbinder to toppunkter (for eksempel er sidene 6 - 1 og 4 - 3 parallelle med linje 5 - 2). Disse observasjonene vil hjelpe deg med å konstruere en sekskant i perspektiv, samt kontrollere riktigheten av denne konstruksjonen. Det er to måter å konstruere en regulær sekskant fra en representasjon: basert på en omkrets og basert på en firkant.
Basert på en omskrevet sirkel. Se på fig. 3,56. Alle toppunktene til en regulær sekskant tilhører en omskreven sirkel hvis radius er lik siden av sekskanten.
Horisontal sekskant. Tegn en horisontal ellipse med vilkårlig åpning, dvs. en omskrevet sirkel i perspektiv. Nå må du finne seks punkter på den, som er hjørnene til sekskanten. Tegn en hvilken som helst diameter av en gitt sirkel gjennom midten (fig. 3.57). Ytterpunktene til diameteren - 5 og 2, som ligger på ellipsen, er hjørnene til sekskanten. For å finne de gjenværende toppunktene, er det nødvendig å dele denne diameteren i fire like segmenter. Diameteren er allerede delt av sirkelens midtpunkt i to radier, det gjenstår bare å dele hver radius i to. I en perspektivtegning trekker alle fire segmentene seg jevnt sammen når de beveger seg bort fra betrakteren (fig. 3.58). Tegn nå gjennom midtpunktene til radiene - punktene A og B - rette linjer vinkelrett på rett linje 5 - 2. Du kan finne retningen deres ved å bruke tangenter til ellipsen i punktene 5 og 2 (fig. 3.59). Disse tangentene vil være vinkelrett på diameteren 5 - 2, og linjene trukket gjennom punktene A og B parallelt med disse tangentene vil også være vinkelrett på linjen 5 - 2. Beregn punktene oppnådd ved skjæringspunktet mellom disse linjene og ellipsen som 1, 3, 4, 6 (fig. 3.60). Koble alle seks toppunktene med rette linjer (fig. 3.61).
Sjekk riktigheten av konstruksjonen din på forskjellige måter. Hvis konstruksjonen er riktig, så krysser linjene som forbinder de motsatte toppunktene til sekskanten i midten av sirkelen (fig. 3.62), og de motsatte sidene av sekskanten er parallelle med de tilsvarende diametrene (fig. 3.63). En annen kontrollmetode er vist i fig. 3,64.
Vertikal sekskant. I en slik sekskant har de rette linjene som forbinder punktene 7 og 3, b og 4, samt tangenter til den omskrevne sirkelen ved punktene 5 og 2, en vertikal retning og beholder den i perspektivtegningen. Ved å tegne to vertikale tangenter til ellipsen finner vi altså punktene 5 og 2 (tangenspunkter). Koble dem med en rett linje, og del deretter den resulterende diameteren 5 - 2 i 4 like segmenter, ta hensyn til deres perspektivreduksjoner (fig. 3.65). Tegn vertikale linjer gjennom punktene A og B, og finn punktene 1,3,6l4 i deres skjæringspunkt med ellipsen. Koble deretter punktene 1 - 6 sekvensielt med rette linjer (fig. 3.66). Kontroller riktigheten av sekskantkonstruksjonen på samme måte som i forrige eksempel.
Den beskrevne metoden for å konstruere en sekskant lar oss få denne figuren basert på en sirkel, som er lettere å skildre i perspektiv enn en firkant med gitte proporsjoner. Derfor ser denne metoden for å konstruere en sekskant ut til å være den mest nøyaktige og universelle. Den firkantbaserte konstruksjonsmetoden gjør det enkelt å avbilde en sekskant i tilfellet når det allerede er en kube på tegningen, med andre ord når proporsjonene til kvadratet og retningen på sidene bestemmes.
Basert på en firkant. Se på fig. 3,67. En sekskant innskrevet i en firkant er lik siden av firkanten i horisontal retning 5 - 2, og mindre enn lengden i vertikal retning.
Vertikal sekskant. Tegn en vertikal firkant i perspektiv. Tegn en rett linje gjennom skjæringspunktet mellom diagonalene parallelt med de horisontale sidene. Del det resulterende segmentet 5 - 2 i fire like deler og tegn vertikale linjer gjennom punktene A og B (fig. 3.68). Linjene som avgrenser sekskanten øverst og nederst, faller ikke sammen med sidene av firkanten. Tegn dem i en viss avstand (1114 a) fra de horisontale sidene av firkanten og parallelt med dem. Ved å koble punkt 1 og 3 funnet på denne måten med punkt 2, og punkt 6 og 4 med punkt 5, får vi en sekskant (fig. 3.69).
En horisontal sekskant bygges i samme rekkefølge (fig. 3.70 og 3.71).
Denne konstruksjonsmetoden er kun egnet for sekskanter med tilstrekkelig åpning. Hvis åpningen av sekskanten er ubetydelig, er det bedre å bruke metoden basert på den omskrevne sirkelen. For å sjekke en sekskant konstruert gjennom en firkant, kan du bruke metoder som allerede er kjent for deg.
I tillegg er det en annen måte - å beskrive en sirkel rundt den resulterende sekskanten (i tegningen din - en ellipse). Alle hjørner av sekskanten må tilhøre denne ellipsen.
Når du har mestret ferdighetene til å tegne en sekskant, vil du være fri til å gå videre til å tegne et sekskantet prisme. Se nøye på diagrammet i fig. 3.72, samt diagrammer for å konstruere sekskantede prismer basert på en omskreven sirkel (Fig. 3.73; 3.74 og 3.75) og basert på en firkant (Fig. 3.76; 3.77 og 3.78). Tegn vertikale og horisontale sekskanter på forskjellige måter. I tegningen av en vertikal sekskant vil langsidene av sideflatene være vertikale rette linjer parallelle med hverandre, og sekskanten til basen vil være mer åpen jo lenger den er fra horisontlinjen. I en tegning av en horisontal sekskant vil langsidene av sideflatene konvergere ved forsvinningspunktet i horisonten, og åpningen til basissekskanten vil være større jo lenger den er fra betrakteren. Når du avbilder en sekskant, sørg også for at de parallelle kantene på begge basene konvergerer i perspektiv (fig. 3.79; 3.80).
Innhold:
En vanlig sekskant, også kalt en perfekt sekskant, har seks like sider og seks like vinkler. Du kan tegne en sekskant med et målebånd og en gradskive, en grov sekskant med en rund gjenstand og en linjal, eller en enda grovere sekskant med bare en blyant og litt intuisjon. Hvis du vil vite hvordan du tegner en sekskant på forskjellige måter, er det bare å lese videre.
Temaet polygoner er dekket i skolens læreplan, men det blir ikke viet nok oppmerksomhet til det. I mellomtiden er det interessant, og dette gjelder spesielt for en vanlig sekskant eller sekskant - tross alt har mange naturlige gjenstander denne formen. Disse inkluderer honningkaker og mye mer. Denne formen fungerer veldig bra i praksis.
En vanlig sekskant er en plan figur som har seks like lange sider og like mange like vinkler.
Hvis vi husker formelen for summen av vinklene til en polygon
det viser seg at i denne figuren er det lik 720°. Vel, siden alle vinklene på figuren er like, er det lett å beregne at hver av dem er lik 120°.
Å tegne en sekskant er veldig enkelt; alt du trenger er et kompass og en linjal.
Trinn-for-trinn-instruksjonene vil se slik ut:
Hvis du ønsker, kan du klare deg uten en linje ved å tegne fem sirkler med lik radius.
Figuren som oppnås på denne måten vil være en vanlig sekskant, og dette kan bevises nedenfor.
For å forstå egenskapene til en vanlig sekskant, er det fornuftig å dele den inn i seks trekanter:
Dette vil hjelpe i fremtiden til å tydeligere vise egenskapene, hvorav de viktigste er:
En sirkel kan beskrives rundt en sekskant, og bare en. Siden denne figuren er vanlig, kan du gjøre det ganske enkelt: tegne en halveringslinje fra to tilstøtende hjørner inni. De skjærer hverandre i punkt O, og danner sammen med siden mellom dem en trekant.
Vinklene mellom sekskantsiden og halveringslinjen vil være 60°, så vi kan definitivt si at en trekant, for eksempel AOB, er likebenet. Og siden den tredje vinkelen også vil være lik 60°, er den også likesidet. Det følger at segmentene OA og OB er like, noe som betyr at de kan tjene som radius til en sirkel.
Etter dette kan du flytte til neste side, og også tegne en halveringslinje fra vinkelen ved punkt C. Du vil få en annen likesidet trekant, og siden AB vil være felles for begge, og OS vil være neste radius som den samme sirkelen går gjennom. Det vil være seks slike trekanter totalt, og de vil ha et felles toppunkt i punktet O. Det viser seg at det vil være mulig å beskrive en sirkel, og det er bare én av den, og dens radius er lik siden av sekskanten:
Derfor er det mulig å konstruere denne figuren ved hjelp av et kompass og linjal.
Vel, området til denne sirkelen vil være standard:
Sentrum av den omskrevne sirkelen vil falle sammen med midten av den innskrevne sirkelen. For å bekrefte dette kan du tegne perpendikulære fra punkt O til sidene av sekskanten. De vil være høydene til trekantene som utgjør sekskanten. Og i en likebenet trekant er høyden medianen i forhold til siden den hviler på. Dermed er denne høyden ikke mer enn den vinkelrette halveringslinjen, som er radiusen til den innskrevne sirkelen.
Høyden til en likesidet trekant beregnes ganske enkelt:
h²=а²-(а/2)²= а²3/4, h=а(√3)/2
Og siden R=a og r=h, viser det seg at
r=R(√3)/2.
Dermed passerer insirkelen gjennom sentrene på sidene til en vanlig sekskant.
Området vil være:
S=3πa²/4,
altså tre fjerdedeler av det som er beskrevet.
Alt er klart med omkretsen, det er summen av lengdene på sidene:
P=6a, eller P=6R
Men arealet vil være lik summen av alle seks trekantene som sekskanten kan deles inn i. Siden arealet av en trekant beregnes som halvparten av produktet av basen og høyden, så:
S=6(а/2)(а(√3)/2)= 6а²(√3)/4=3а²(√3)/2 eller
S=3R²(√3)/2
De som ønsker å beregne dette arealet gjennom radiusen til den innskrevne sirkelen kan gjøre dette:
S=3(2r/√3)²(√3)/2=r²(2√3)
Du kan passe en trekant inn i en sekskant, sidene som vil forbinde toppunktene gjennom en:
Det vil være to av dem totalt, og deres overlapping vil gi Davidsstjernen. Hver av disse trekantene er likesidede. Dette er ikke vanskelig å verifisere. Hvis du ser på AC-siden, tilhører den to trekanter samtidig - BAC og AEC. Hvis i den første av dem AB = BC, og vinkelen mellom dem er 120°, vil hver av de gjenværende være 30°. Fra dette kan vi trekke logiske konklusjoner:
Trekantene krysser hverandre og danner en ny sekskant, og den er også regelmessig. Dette er bevist enkelt:
Dermed oppfyller figuren egenskapene til en vanlig sekskant - den har seks like sider og vinkler. Fra likheten mellom trekantene ved toppunktene er det lett å utlede lengden på siden til den nye sekskanten:
d=a(√3)/3
Det vil også være radiusen til sirkelen som er beskrevet rundt den. Den innskrevne radiusen vil være halvparten av siden til en stor sekskant, noe som ble bevist når man vurderte trekant ABC. Høyden er nøyaktig halvparten av siden, derfor er den andre halvdelen radiusen til sirkelen innskrevet i den lille sekskanten:
r2=a/2
S=(3(√3)/2)(а(√3)/3)²=а(√3)/2
Det viser seg at arealet av sekskanten inne i Davidsstjernen er tre ganger mindre enn området til den store der stjernen er innskrevet.
Egenskapene til sekskanten brukes veldig aktivt både i naturen og i ulike felt av menneskelig aktivitet. Først og fremst gjelder dette bolter og muttere - hodene til den første og andre er ikke noe mer enn en vanlig sekskant, hvis du ikke tar hensyn til avfasningene. Størrelsen på skiftenøkkelen tilsvarer diameteren til den innskrevne sirkelen - det vil si avstanden mellom motsatte kanter.
Sekskantede fliser har også funnet sin anvendelse. Det er mye mindre vanlig enn den firkantede, men det er mer praktisk å legge den: tre fliser møtes på ett punkt, i stedet for fire. Komposisjonene kan vise seg å være veldig interessante:
Det produseres også betongfliser for asfaltering.
Utbredelsen av sekskanter i naturen er enkelt forklart. Dermed er det lettest å passe sirkler og kuler tett på et plan hvis de har samme diameter. På grunn av dette har honningkaker denne formen.
kayabaparts.ru - Gang, kjøkken, stue. Hage. Stoler. Soverom