Konstruksyon ng isang heksagono. Gumuhit ng hexagonal geometric pattern sa Adobe Illustrator. Sukat at lokasyon

Ang mga geometric na pattern ay medyo sikat kamakailan. Sa aralin ngayon matututunan natin kung paano lumikha ng isa sa mga pattern na ito. Gamit ang transition, typography at mga naka-istilong kulay gagawa kami ng pattern na magagamit mo sa web at print na disenyo.

Resulta

Hakbang 2
Gumuhit ng isa pang hexagon, mas maliit sa oras na ito - pumili ng radius ng 20pt.

2. Transition sa pagitan ng hexagons

Hakbang 1
Piliin ang parehong hexagons at ihanay ang mga ito sa gitna (patayo at pahalang). Gamit ang tool Blend/Transition (W), piliin ang parehong hexagons at bigyan sila ng paglipat sa 6 Hakbang. Upang gawing mas madaling makita, baguhin ang kulay ng mga hugis bago ilipat.

3. Hatiin sa mga seksyon

Hakbang 1
Tool Segment ng Linya (\) gumuhit ng isang linya na tumatawid sa mga hexagon sa gitna mula sa pinakakaliwa hanggang sa pinakakanang sulok. Gumuhit ng dalawa pang linya na tumatawid sa mga hexagon sa gitna mula sa magkabilang sulok.

4. Kulayan ang mga seksyon

Hakbang 1
Bago natin simulan ang pagpipinta ng mga seksyon, magpasya tayo sa isang palette. Narito ang palette mula sa halimbawa:

  • Asul: C 65 M 23 Y 35 K 0
  • Beige: C 13 M 13 Y 30 K 0
  • Peach: C 0 M 32 Y 54 K 0
  • Light pink: C 0 M 64 Y 42 K 0
  • Madilim na rosas: C 30 M 79 Y 36 K 4

Sa halimbawa, ang CMYK mode ay agad na ginamit upang ang pattern ay mai-print nang walang pagbabago.

5. Finishing touch at pattern

Hakbang 1
Pangkat (Control-G) lahat ng mga seksyon at hexagons pagkatapos mong makulayan ang mga ito. Kopyahin (Control-C) At Idikit (Control-V) isang pangkat ng mga hexagons. Pangalanan natin ang orihinal na grupo Hexagon A, at isang kopya nito Hexagon B. Ihanay ang mga pangkat.


Hakbang 2
Mag-apply Linear Gradient sa grupo Hexagon B. Sa palette Gradient itakda ang fill sa purple ( C60 M86 Y45 K42) sa kulay cream ( C0 M13 Y57 K0).

Mayroon bang lapis na malapit sa iyo? Tingnan ang cross-section nito - ito ay isang regular na hexagon o, bilang tinatawag din itong, isang hexagon. Ang cross-section ng nut, field ng hexagonal chess, ilang kumplikadong carbon molecule (halimbawa, graphite), snowflake, honeycomb at iba pang mga bagay ay mayroon ding ganitong hugis. Ang isang higanteng regular na hexagon ay natuklasan kamakailan sa Hindi ba tila kakaiba na ang kalikasan ay madalas na gumagamit ng mga istraktura ng partikular na hugis para sa mga nilikha nito? Tingnan natin nang maigi.

Ang isang regular na hexagon ay isang polygon na may anim na pantay na gilid at pantay na anggulo. Mula sa kurso ng paaralan alam natin na mayroon itong mga sumusunod na katangian:

  • Ang haba ng mga gilid nito ay tumutugma sa radius ng circumscribed na bilog. Sa lahat, tanging ang regular na hexagon ang may ganitong katangian.
  • Ang mga anggulo ay pantay sa bawat isa, at ang bawat sukat ay 120°.
  • Ang perimeter ng isang hexagon ay matatagpuan gamit ang formula na P=6*R, kung ang radius ng bilog na inilarawan sa paligid nito ay kilala, o P=4*√(3)*r, kung ang bilog ay nakasulat dito. Ang R at r ay ang radii ng circumscribed at inscribed na bilog.
  • Ang lugar na inookupahan ng isang regular na hexagon ay tinutukoy bilang mga sumusunod: S=(3*√(3)*R 2)/2. Kung ang radius ay hindi alam, palitan ang haba ng isa sa mga gilid - tulad ng alam, ito ay tumutugma sa haba ng radius ng circumscribed na bilog.

Ang isang regular na hexagon ay may isang kawili-wiling tampok, salamat sa kung saan ito ay naging napakalawak sa kalikasan - nagagawa nitong punan ang anumang ibabaw ng isang eroplano nang walang mga overlap o gaps. Mayroong kahit na tinatawag na Pal lemma, ayon sa kung saan ang isang regular na heksagono, na ang gilid nito ay katumbas ng 1/√(3), ay isang unibersal na takip, iyon ay, maaari itong sumaklaw sa anumang hanay na may diameter na isang yunit. .

Ngayon tingnan natin ang pagbuo ng isang regular na hexagon. Mayroong ilang mga pamamaraan, ang pinakasimpleng kung saan ay nagsasangkot ng paggamit ng compass, lapis at ruler. Una, gumuhit kami ng isang arbitrary na bilog na may compass, pagkatapos ay gumawa kami ng isang punto sa isang arbitrary na lugar sa bilog na ito. Nang hindi binabago ang anggulo ng compass, inilalagay namin ang tip sa puntong ito, markahan ang susunod na bingaw sa bilog, at ipagpatuloy ito hanggang sa makuha namin ang lahat ng 6 na puntos. Ngayon ang lahat na natitira ay upang ikonekta ang mga ito kasama ng mga tuwid na segment, at makakakuha ka ng nais na figure.

Sa pagsasagawa, may mga kaso kung kailan kailangan mong gumuhit ng isang malaking heksagono. Halimbawa, sa isang dalawang antas na kisame ng plasterboard, sa paligid ng lokasyon ng pag-mount ng gitnang chandelier, kailangan mong mag-install ng anim na maliliit na lampara sa mas mababang antas. Ang mga kumpas na ganito ang laki ay magiging napakahirap hanapin. Ano ang gagawin sa kasong ito? Paano ka gumuhit ng malaking bilog? Napakasimple. Kailangan mong kumuha ng isang malakas na thread ng kinakailangang haba at itali ang isa sa mga dulo nito sa tapat ng lapis. Ngayon ang lahat na natitira ay upang makahanap ng isang katulong na pinindot ang pangalawang dulo ng thread sa kisame sa nais na punto. Siyempre, sa kasong ito, posible ang mga maliliit na pagkakamali, ngunit malamang na hindi sila mapapansin ng isang tagalabas.

Ang mga hexagonal grids (hexagonal grids) ay ginagamit sa ilang mga laro, ngunit ang mga ito ay hindi kasing simple o karaniwan gaya ng mga rectangle grid. Halos 20 taon na akong nangongolekta ng mga mapagkukunan sa hex meshes, at isinulat ko ang gabay na ito sa mga pinaka-eleganteng diskarte, na ipinatupad sa pinakasimpleng code. Malawakang ginagamit ng artikulong ito ang mga gabay nina Charles Fu at Clark Verbrugge. Ilalarawan ko ang iba't ibang paraan upang lumikha ng hexagon meshes, ang kanilang mga relasyon, at ang pinakakaraniwang mga algorithm. Maraming bahagi ng artikulong ito ang interactive: ang pagpili ng uri ng grid ay nagbabago sa kaukulang mga diagram, code, at mga teksto. (Note per.: ito ay nalalapat lamang sa orihinal, ipinapayo ko sa iyo na pag-aralan ito. Sa pagsasalin, ang lahat ng impormasyon ng orihinal ay pinapanatili, ngunit walang interaktibidad.).

Ang mga halimbawa ng code sa artikulo ay nakasulat sa pseudocode, kaya mas madaling basahin at maunawaan ang mga ito upang maisulat ang iyong sariling pagpapatupad.

Geometry

Ang mga hexagon ay anim na panig na polygon. Ang mga regular na hexagon ay may parehong haba ng lahat ng panig (mga gilid). Magtatrabaho lang kami sa mga regular na hexagons. Karaniwan, ang hexagon meshes ay gumagamit ng pahalang (pointy top) at vertical (flat top) na oryentasyon.


Mga hexagon na may patag (kaliwa) at matalim (kanan) na tuktok

Ang mga hexagon ay may 6 na mukha. Ang bawat mukha ay karaniwan sa dalawang hexagons. Ang mga hexagon ay may 6 na sulok na puntos. Ang bawat sulok na punto ay karaniwan sa tatlong hexagons. Maaari kang magbasa nang higit pa tungkol sa mga sentro, gilid, at mga punto ng sulok sa aking artikulo sa mga bahagi ng mesh (mga parisukat, hexagon, at tatsulok).

Mga anggulo

Sa isang regular na hexagon, ang mga panloob na anggulo ay 120°. Mayroong anim na "wedges", bawat isa ay isang equilateral triangle na may panloob na mga anggulo na 60°. Sulok na punto i ay matatagpuan sa layo na (60° * i) + 30°, laki ng mga yunit mula sa gitnang sentro. Sa code:

Function 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) )
Upang punan ang isang hexagon, kailangan mong makuha ang mga vertices ng polygon mula hex_corner(…, 0) hanggang hex_corner(…, 5) . Upang iguhit ang outline ng hexagon, kailangan mong gamitin ang mga vertex na ito at pagkatapos ay iguhit muli ang linya sa hex_corner(..., 0) .

Ang pagkakaiba sa pagitan ng dalawang oryentasyon ay ang x at y ay pinagpalit, na nagreresulta sa pagbabago sa mga anggulo: ang mga flat-top hexagons ay may mga anggulo na 0°, 60°, 120°, 180°, 240°, 300°, at pointed-top. ang mga hexagon ay may mga anggulo na 30 °, 90°, 150°, 210°, 270°, 330°.


Mga anggulo ng mga hexagon na may patag at matalim na tuktok

Sukat at lokasyon

Ngayon gusto naming maglagay ng ilang hexagons na magkasama. Sa pahalang na oryentasyon, ang taas ng hexagon ay taas = laki * 2 . Ang patayong distansya sa pagitan ng mga katabing hexagon ay vert = taas * 3/4 ​​​​.

Hexagon width width = sqrt(3)/2 * taas . Ang pahalang na distansya sa pagitan ng mga katabing hexagon ay horiz = lapad .

Ang ilang mga laro ay gumagamit ng pixel art para sa mga hexagons, na hindi eksaktong tumutugma sa mga regular na hexagons. Ang mga formula ng anggulo at placement na inilalarawan sa seksyong ito ay hindi tutugma sa mga sukat ng naturang mga hexagon. Nalalapat ang natitirang bahagi ng artikulong naglalarawan sa mga algorithm ng hex mesh kahit na bahagyang nakaunat o napipiga ang mga hexagon.



Mga sistema ng coordinate

Simulan natin ang pag-assemble ng mga hexagons sa isang grid. Sa kaso ng mga grids ng mga parisukat, mayroon lamang isang malinaw na paraan upang mag-ipon. Para sa mga hexagons, maraming mga diskarte. Inirerekomenda ko ang paggamit ng mga cubic coordinate bilang iyong pangunahing representasyon. Dapat gamitin ang mga axial coordinate o offset coordinates upang mag-imbak ng mga mapa at magpakita ng mga coordinate sa user.

Offset na mga coordinate

Ang pinakakaraniwang diskarte ay upang i-offset ang bawat kasunod na column o row. Ang mga column ay itinalagang col o q. Ang mga row ay tinutukoy ng row o r . Maaari mong i-offset ang kakaiba o kahit na mga column/row, kaya ang mga pahalang at patayong hexagon ay may dalawang opsyon.


Pahalang na pagkakaayos "odd-r"


Pahalang na pagkakaayos "even-r"


Patayong "odd-q" na pagkakaayos


Vertical arrangement "even-q"

Mga coordinate ng kubiko

Ang isa pang paraan upang tingnan ang mga hexagon grid ay ang makita ang mga ito bilang tatlo pangunahing palakol, hindi dalawa, tulad ng sa mga grids ng mga parisukat. Nagpapakita sila ng eleganteng simetrya.

Kumuha tayo ng isang grid ng mga cube at putulin na natin diagonal na eroplano sa x + y + z = 0. Ito ay isang kakaibang ideya, ngunit makakatulong ito sa amin na pasimplehin ang mga algorithm ng hexagon mesh. Sa partikular, magagamit namin ang mga karaniwang operasyon mula sa mga coordinate ng Cartesian: pagbubuo at pagbabawas ng mga coordinate, pagpaparami at paghahati sa isang scalar na dami, pati na rin ang mga distansya.

Pansinin ang tatlong pangunahing axes sa grid ng mga cube at ang kanilang kaugnayan sa anim dayagonal mga direksyon ng hexagon grid. Ang diagonal axes ng grid ay tumutugma sa pangunahing direksyon ng hexagon grid.


Mga heksagono


mga cube

Dahil mayroon na kaming mga algorithm para sa square at cube meshes, ang paggamit ng cubic coordinates ay nagbibigay-daan sa amin na iakma ang mga algorithm na ito sa hexagon meshes. Gagamitin ko ang sistemang ito para sa karamihan ng mga algorithm ng artikulo. Upang magamit ang mga algorithm na may ibang sistema ng coordinate, kino-convert ko ang mga cubic coordinates, patakbuhin ang algorithm, at pagkatapos ay i-convert ang mga ito pabalik.

Alamin kung paano gumagana ang cubic coordinate para sa isang hexagon mesh. Kapag pinili mo ang mga hexagons, ang mga cubic coordinates na tumutugma sa tatlong axes ay naka-highlight.

  1. Ang bawat direksyon ng cube grid ay tumutugma sa mga linya sa isang grid ng mga hexagons. Subukang pumili ng hexagon na may z katumbas ng 0, 1, 2, 3 upang makita ang koneksyon. Ang linya ay minarkahan ng asul. Subukan ang parehong para sa x (berde) at y (purple).
  2. Ang bawat direksyon ng hexagon grid ay isang kumbinasyon ng dalawang direksyon ng cube grid. Halimbawa, ang "hilaga" ng isang hexagon grid ay nasa pagitan ng +y at -z , kaya ang bawat hakbang ng "hilaga" ay tumataas ng y ng 1 at bumababa ng z ng 1.
Ang mga cubic coordinate ay isang makatwirang pagpipilian para sa isang hexagon grid coordinate system. Ang kundisyon ay x + y + z = 0, kaya dapat itong mapanatili sa mga algorithm. Tinitiyak din ng kundisyon na palaging magkakaroon ng canonical coordinate para sa bawat hexagon.

Mayroong maraming iba't ibang mga sistema ng coordinate para sa mga cube at hexagons. Sa ilan sa kanila ang kundisyon ay iba sa x + y + z = 0. Ipinakita ko lamang ang isa sa maraming mga sistema. Maaari ka ring lumikha ng mga kubiko na coordinate na may x-y , y-z , z-x , na may sariling hanay ng mga kawili-wiling katangian, ngunit hindi ko ito isasaalang-alang dito.

Ngunit maaari kang magtaltalan na hindi mo gustong mag-imbak ng 3 numero para sa mga coordinate dahil hindi mo alam kung paano iimbak ang mapa sa ganoong paraan.

Axial coordinate

Ang isang axial coordinate system, kung minsan ay tinatawag na "trapezoidal" coordinate system, ay binuo mula sa dalawa o tatlong coordinate mula sa isang cubic coordinate system. Dahil mayroon tayong kundisyon x + y + z = 0, hindi kailangan ang ikatlong coordinate. Ang mga axial coordinate ay kapaki-pakinabang para sa pag-iimbak ng mga mapa at pagpapakita ng mga coordinate sa user. Tulad ng mga cubic coordinate, maaari mong gamitin ang mga karaniwang operasyon ng pagdaragdag, pagbabawas, pagpaparami, at paghahati ng mga coordinate ng Cartesian.

Mayroong maraming mga cubic coordinate system at maraming mga axial. Hindi ko sasaklawin ang bawat kumbinasyon sa gabay na ito. Pipili ako ng dalawang variable, q (column) at r (row). Sa mga diagram sa artikulong ito, ang q ay tumutugma sa x at ang r ay tumutugma sa z, ngunit ang sulat na ito ay arbitrary dahil maaari mong paikutin at paikutin ang mga diagram upang makakuha ng iba't ibang mga sulat.

Ang bentahe ng system na ito sa mga displacement grids ay ang mga algorithm ay mas nauunawaan. Ang downside sa system ay ang pag-iimbak ng isang hugis-parihaba na card ay medyo kakaiba; tingnan ang seksyon sa pag-save ng mga mapa. Ang ilang mga algorithm ay mas malinaw pa sa mga cubic na coordinate, ngunit dahil mayroon tayong kundisyon x + y + z = 0, maaari nating kalkulahin ang ikatlong ipinahiwatig na coordinate at gamitin ito sa mga algorithm na ito. Sa aking mga proyekto ay tinatawag ko ang mga axes q, r, s, kaya ang kondisyon ay mukhang q + r + s = 0, at maaari kong kalkulahin ang s = -q - r kapag kinakailangan.

Mga ehe

Ang mga offset na coordinate ang unang iniisip ng karamihan sa mga tao dahil pareho ang mga ito sa karaniwang mga coordinate ng Cartesian na ginagamit para sa mga grid ng mga parisukat. Sa kasamaang palad, ang isa sa dalawang palakol ay dapat tumakbo laban sa butil, at ito ay nagtatapos sa kumplikadong mga bagay. Ang mga sistema ng cube at axis ay lumalayo at may mas simpleng mga algorithm, ngunit ang imbakan ng card ay medyo mas kumplikado. May isa pang sistema na tinatawag na "alternating" o "dual", ngunit hindi namin ito isasaalang-alang dito; ang ilan ay mas madaling magtrabaho kaysa sa kubiko o axial.


Offset na mga coordinate, kubiko at axial

Aksis ay ang direksyon kung saan tumataas ang kaukulang coordinate. Ang patayo sa isang axis ay ang linya kung saan ang coordinate ay nananatiling pare-pareho. Ang mga grid diagram sa itaas ay nagpapakita ng mga perpendikular na linya.

Pagbabago ng coordinate

Malamang na gagamit ka ng axial o offset na mga coordinate sa iyong disenyo, ngunit maraming mga algorithm ang mas madaling ipahayag sa mga cubic coordinates. Samakatuwid, kailangan nating ma-convert ang mga coordinate sa pagitan ng mga system.

Ang mga axial coordinate ay malapit na nauugnay sa mga cubic coordinate, kaya ang conversion ay simple:

# convert cubic to axial coordinates q = x r = z # convert axial to cubic coordinates x = q z = r y = -x-z
Sa code, ang dalawang function na ito ay maaaring isulat bilang mga sumusunod:

Function na cube_to_hex(h): # axial var q = h.x var r = h.z return Hex(q, r) function hex_to_cube(h): # cubic var x = h.q var z = h.r var y = -x-z return Cube(x, y , z)
Ang mga offset na coordinate ay medyo mas kumplikado:

Mga katabing hexagons

Dahil sa isang heksagono, anong anim na heksagono ang katabi nito? Gaya ng inaasahan mo, ang sagot ay pinakamadali sa cubic coordinates, medyo madali sa axial coordinates, at medyo mas mahirap sa displacement coordinates. Maaaring kailanganin mo ring kalkulahin ang anim na "diagonal" na hexagons.

Mga coordinate ng kubiko

Ang paglipat ng isang puwang sa mga hex na coordinate ay nagiging sanhi ng isa sa tatlong cubic na coordinate na maging +1 at ang isa pa sa -1 (ang kabuuan ay dapat manatiling 0). Sa +1, tatlong posibleng coordinate ang maaaring magbago, at sa -1, ang natitirang dalawa. Nagbibigay ito sa amin ng anim na posibleng pagbabago. Ang bawat isa ay tumutugma sa isa sa mga direksyon ng hexagon. Ang pinakasimple at pinakamabilis na paraan ay ang pag-precompute ng mga pagbabago at ilagay ang mga ito sa isang cubic coordinate table Cube(dx, dy, dz) sa oras ng pag-compile:

Mga direksyon ng Var = [ Cube(+1, -1, 0), Cube(+1, 0, -1), Cube(0, +1, -1), Cube(-1, +1, 0), Cube( -1, 0, +1), Cube(0, -1, +1) ] function na cube_direction(direksyon): function na ibalik ang mga direksyon cube_neghbor(hex, direksyon): return cube_add(hex, cube_direction(direksyon))

Axial coordinate

Tulad ng dati, ginagamit namin ang cubic system para magsimula. Kunin natin ang talahanayan ng Cube(dx, dy, dz) at ibahin ito sa talahanayang Hex(dq, dr):

Mga direksyon ng Var = [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0, +1) ] function hex_direction(direksyon): return directions function hex_neighbor(hex, direksyon): var dir = hex_direction(direksyon) return Hex(hex.q + dir.q, hex.r + dir.r)

Offset na mga coordinate

Sa axial coordinates, gumagawa kami ng mga pagbabago depende sa kung nasaan kami sa grid. Kung nasa offset na column/row tayo, iba ang panuntunan sa kaso ng column/row na walang offset.

Tulad ng dati, gumawa kami ng talahanayan ng mga numero na kailangang idagdag sa col at row . Gayunpaman, sa pagkakataong ito magkakaroon tayo ng dalawang array, isa para sa mga kakaibang column/row at ang isa para sa even. Tingnan ang (1,1) sa larawan ng grid map sa itaas at pansinin kung paano nagbabago ang col at row habang lumilipat ka sa bawat isa sa anim na direksyon. Ngayon ulitin natin ang proseso para sa (2,2) . Magiiba ang mga talahanayan at code para sa bawat isa sa apat na uri ng displacement grids narito ang kaukulang code para sa bawat uri ng grid.

Odd-r
var direksyon = [ [ 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) ] ] function na offset_neghbor(hex, direksyon): var parity = hex.row & 1 var dir = mga direksyon na bumalik Hex(hex.col + dir.col, hex.row + dir.row)


Kahit-r
var direksyon = [ [ 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) ] ] function na offset_neghbor(hex, direksyon): var parity = hex.row & 1 var dir = direksyon bumalik Hex(hex.col + dir.col, hex.row + dir.row)


Grid para sa kahit na (EVEN) at odd (ODD) row

Kakaiba-q
var direksyon = [ [ 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 na offset_neghbor(hex, direksyon): var parity = hex.col & 1 var dir = direksyon bumalik Hex(hex.col + dir.col, hex.row + dir.row)


Kahit-q
var direksyon = [ [ 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 na offset_neghbor(hex, direksyon): var parity = hex.col & 1 var dir = direksyon bumalik Hex(hex.col + dir.col, hex.row + dir.row)


Grid para sa mga column na kahit (EVEN) at odd (ODD).

Mga dayagonal

Ang paglipat sa "diagonal" na espasyo sa hex na mga coordinate ay nagbabago sa isa sa tatlong kubiko na coordinate ng ±2 at ang dalawa pa sa pamamagitan ng ∓1 (ang kabuuan ay dapat manatiling 0).

Var diagonals = [ Cube(+2, -1, -1), Cube(+1, +1, -2), Cube(-1, +2, -1), Cube(-2, +1, +1 ), Cube(-1, -1, +2), Cube(+1, -2, +1) ] function na cube_diagonal_neghbor(hex, direksyon): return cube_add(hex, diagonals)
Tulad ng dati, maaari nating i-convert ang mga coordinate na ito sa axial coordinates sa pamamagitan ng pag-discard ng isa sa tatlong coordinate, o i-convert ang mga ito upang i-offset ang mga coordinate sa pamamagitan ng unang pagkalkula ng mga resulta.


Mga distansya

Mga coordinate ng kubiko

Sa cubic coordinate system, ang bawat hexagon ay isang cube sa three-dimensional na espasyo. Ang mga katabing hexagon ay may pagitan ng 1 sa hex grid, ngunit may pagitan ng 2 sa cube grid. Ginagawa nitong simple ang pagkalkula ng mga distansya. Sa isang grid ng mga parisukat, ang mga distansya ng Manhattan ay abs(dx) + abs(dy) . Sa isang grid ng mga cube, ang mga distansya ng Manhattan ay abs(dx) + abs(dy) + abs(dz) . Ang distansya sa hexagon grid ay katumbas ng kalahati ng mga ito:

Function na cube_distance(a, b): return (abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) / 2
Ang katumbas ng notasyong ito ay ang pagsasabi na ang isa sa tatlong mga coordinate ay dapat ang kabuuan ng iba pang dalawa, at pagkatapos ay kunin iyon bilang distansya. Maaari mong piliin ang form ng paghahati o ang form ng maximum na halaga sa ibaba, ngunit nagbibigay sila ng parehong resulta:

Function na cube_distance(a, b): return max(abs(a.x - b.x), abs(a.y - b.y), abs(a.z - b.z))
Sa figure, ang maximum na mga halaga ay naka-highlight sa kulay. Tandaan din na ang bawat kulay ay kumakatawan sa isa sa anim na "diagonal" na direksyon.

GIF


Axial coordinate

Sa sistema ng axial, ang ikatlong coordinate ay ipinahayag nang tahasan. I-convert natin mula sa axial hanggang kubiko upang kalkulahin ang distansya:

Function hex_distance(a, b): var ac = hex_to_cube(a) var bc = hex_to_cube(b) return cube_distance(ac, bc)
Kung ang compiler inline (inline) hex_to_cube at cube_distance sa iyong kaso, bubuo ito ng code na tulad nito:

Function 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
Mayroong maraming iba't ibang mga paraan upang isulat ang mga distansya sa pagitan ng mga hexagon sa axial coordinates, ngunit anuman ang paraan ng pagsulat ang distansya sa pagitan ng hexagons sa axial system ay nakuha mula sa Manhattan distance sa cubic system. Halimbawa, ang inilarawang "pagkakaiba ng mga pagkakaiba" ay nakuha sa pamamagitan ng pagsulat ng a.q + a.r - b.q - b.r bilang a.q - b.q + a.r - b.r at gamit ang maximum na form ng halaga sa halip na ang bisection form na cube_distance . Magkapareho silang lahat kung nakikita mo ang koneksyon sa mga cubic coordinates.

Offset na mga coordinate

Tulad ng sa axial coordinates, kino-convert namin ang offset coordinates sa cubic coordinates at pagkatapos ay ginagamit ang cubic distance.

Function na offset_distance(a, b): var ac = offset_to_cube(a) var bc = offset_to_cube(b) return cube_distance(ac, bc)
Gagamitin namin ang parehong pattern para sa marami sa mga algorithm: i-convert mula sa hexagons sa mga cube, patakbuhin ang kubiko na bersyon ng algorithm, at i-convert ang mga cubic na resulta sa hexagon coordinates (axial o offset coordinates).

Pagguhit ng mga linya

Paano gumuhit ng isang linya mula sa isang heksagono patungo sa isa pa? Gumagamit ako ng linear interpolation upang gumuhit ng mga linya. Ang linya ay pare-parehong na-sample sa N+1 na mga puntos at kinakalkula kung aling mga hexagon ang mga sample na ito.

GIF


  1. Una naming kinakalkula ang N, na magiging distansya sa mga hexagons sa pagitan ng mga endpoint.
  2. Pagkatapos ay pantay-pantay kaming nagsa-sample ng N+1 na puntos sa pagitan ng mga punto A at B. Gamit ang linear interpolation, tinutukoy namin na para sa mga halaga ng i mula 0 hanggang N kasama ang mga ito, ang bawat punto ay magiging A + (B - A) * 1.0/N * ako. Sa figure, ang mga control point na ito ay ipinapakita sa asul. Ang resulta ay floating point coordinates.
  3. I-convert natin ang bawat control point (float) pabalik sa hexagons (int). Ang algorithm ay tinatawag na cube_round (tingnan sa ibaba).
Pagsama-samahin ang lahat upang gumuhit ng linya mula A hanggang B:

Function lerp(a, b, t): // para sa float return a + (b - a) * t function cube_lerp(a, b, t): // para sa hexagons return Cube(lerp(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)) function cube_linedraw(a, b): var N = cube_distance(a, b) var resulta = para sa bawat 0 ≤ i ≤ N: results.append( cube_round(cube_lerp(a, b, 1.0/N * i))) ay nagbabalik ng mga resulta
Mga Tala:

  • May mga kaso kung saan ang cube_lerp ay nagbabalik ng isang punto na eksaktong nasa gilid sa pagitan ng dalawang hexagons. Pagkatapos ay ginagalaw ito ng cube_round sa isang direksyon o iba pa. Mas maganda ang hitsura ng mga linya kung sila ay inilipat sa isang direksyon. Magagawa ito sa pamamagitan ng pagdaragdag ng "epsilon"-hexagonal Cube(1e-6, 1e-6, -2e-6) sa isa o parehong endpoint bago simulan ang loop. Ito ay "i-nudge" ang linya sa isang direksyon upang hindi ito tumama sa mga gilid.
  • Ang algorithm ng linya ng DDA sa mga parisukat na grid ay katumbas ng N sa maximum na distansya sa bawat isa sa mga axes. Ginagawa namin ang parehong bagay sa cubic space, na katulad ng distansya sa isang hexagon grid.
  • Ang cube_lerp function ay dapat magbalik ng cube na may float coordinates. Kung nagprograma ka sa isang statically typed na wika, hindi mo magagamit ang Cube type. Maaari mong tukuyin ang isang uri ng FloatCube sa halip, o i-inline ang isang function sa iyong line drawing code kung ayaw mong tumukoy ng isa pang uri.
  • Maaari mong i-optimize ang code sa pamamagitan ng inline na cube_lerp at pagkatapos ay kalkulahin ang B.x-A.x , B.x-A.y at 1.0/N sa labas ng loop. Maaaring i-convert ang multiplikasyon sa paulit-ulit na pagsusuma. Ang resulta ay magiging katulad ng algorithm ng linya ng DDA.
  • Gumagamit ako ng axial o cubic coordinates upang gumuhit ng mga linya, ngunit kung gusto mong gumana sa mga offset na coordinate, tingnan ang .
  • Mayroong maraming mga pagpipilian para sa pagguhit ng mga linya. Minsan kailangan ang "overcoating". Pinadalhan ako ng code para sa pagguhit ng mga super-covered na linya sa mga hexagons, ngunit hindi ko pa ito tinitingnan.

Moving range

hanay ng coordinate

Dahil sa isang hexagon center at isang range N, aling mga hexagon ang nasa loob ng N hakbang nito?

Magagawa natin ang kabaligtaran mula sa formula ng distansya sa pagitan ng mga hexagons na distansya = max(abs(dx), abs(dy), abs(dz)) . Upang mahanap ang lahat ng hexagons sa loob ng N kailangan namin ng max(abs(dx), abs(dy), abs(dz)) ≤ N . Nangangahulugan ito na kailangan ang lahat ng tatlong value: abs(dx) ≤ N at abs(dy) ≤ N at abs(dz) ≤ N . Inaalis ang absolute value, makukuha natin -N ≤ dx ≤ N at -N ≤ dy ≤ N at -N ≤ dz ≤ N . Sa code ito ay magiging isang nested loop:

Var resulta = para sa bawat -N ≤ dx ≤ N: para sa bawat -N ≤ dy ≤ N: para sa bawat -N ≤ dz ≤ N: kung dx + dy + dz = 0: results.append(cube_add(center, Cube(dx , dy, dz)))
Ang cycle na ito ay gagana, ngunit ito ay lubos na hindi epektibo. Sa lahat ng mga halaga ng dz na pinag-uusapan natin, isa lang ang talagang nakakatugon sa kundisyon ng kubo dx + dy + dz = 0. Sa halip, direktang kakalkulahin namin ang halaga ng dz na nagbibigay-kasiyahan sa kundisyon:

Var resulta = para sa bawat -N ≤ dx ≤ N: para sa bawat max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy results.append(cube_add( center, Cube(dx, dy, dz)))
Ang cycle na ito ay pumasa lamang sa mga kinakailangang coordinate. Sa figure, ang bawat hanay ay isang pares ng mga linya. Ang bawat linya ay isang hindi pagkakapantay-pantay. Kinukuha namin ang lahat ng hexagons na nagbibigay-kasiyahan sa anim na hindi pagkakapantay-pantay.

GIF


Mga magkakapatong na hanay

Kung kailangan mong maghanap ng mga hexagon na nasa maraming hanay, maaari mong i-intersect ang mga hanay bago bumuo ng isang listahan ng mga hexagon.

Maaari mong lapitan ang problemang ito mula sa punto ng view ng algebra o geometry. Algebraically, ang bawat rehiyon ay ipinahayag bilang hindi pagkakapantay-pantay na mga kondisyon ng form -N ≤ dx ≤ N , at kailangan nating hanapin ang intersection ng mga kundisyong ito. Sa geometrically, ang bawat rehiyon ay isang cube sa 3D space, at mag-intersect kami ng dalawang cube sa 3D space para makakuha ng cuboid sa 3D space. Pagkatapos ay i-project namin ito pabalik sa x + y + z = 0 na eroplano upang makakuha ng mga hexagons. Lutasin ko ang problemang ito sa algebraically.

Una, muling isinulat namin ang kundisyon -N ≤ dx ≤ N sa mas pangkalahatang anyo x min ≤ x ≤ x max , at kunin ang x min = center.x - N at x max = center.x + N . Gawin natin ang parehong para sa y at z, na nagreresulta sa pangkalahatang anyo ng code mula sa nakaraang seksyon:

Var resulta = para sa bawat xmin ≤ x ≤ xmax: para sa bawat max(ymin, -x-zmax) ≤ y ≤ min(ymax, -x-zmin): var z = -x-y results.append(Cube(x, y, z))
Ang intersection ng dalawang hanay a ≤ x ≤ b at c ≤ x ≤ d ay max(a, c) ≤ x ≤ min(b, d) . Dahil ang lugar ng mga hexagon ay ipinahayag bilang mga saklaw sa ibabaw ng x, y, z, maaari nating i-intersect ang bawat isa sa mga hanay na x, y, z nang hiwalay at pagkatapos ay gumamit ng nested loop upang makabuo ng isang listahan ng mga hexagons sa intersection. Para sa isang lugar ng mga hexagons, kumukuha kami ng x min = H.x - N at x max = H.x + N , katulad din para sa y at z . Para sa intersection ng dalawang hexagon na rehiyon, kinukuha namin ang x min = max(H1.x - N, H2.x - N) at x max = min(H1.x + N, H2.x + N), katulad din para sa y at z . Gumagana ang parehong pattern para sa intersection ng tatlo o higit pang mga lugar.

GIF


Mga balakid

Kung may mga hadlang, ang pinakamadaling paraan ay punan ng limitasyon sa distansya (width-first search). Sa figure sa ibaba nililimitahan natin ang ating sarili sa apat na galaw. Sa code, ang fringes[k] ay isang array ng lahat ng hexagons na maaaring maabot sa k steps. Sa bawat oras na dumaan kami sa pangunahing loop, pinalawak namin ang antas ng k-1 sa pamamagitan ng antas ng k.

Function na cube_reachable(start, movement): var visited = set() add start to visited var fringes = fringes.append() para sa bawat 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

lumiliko

Dahil sa isang hexagon vector (ang pagkakaiba sa pagitan ng dalawang hexagons), maaaring kailanganin natin itong paikutin upang tumuro ito sa isa pang hexagon. Madaling gawin ito sa mga cubic coordinates kung mananatili ka sa isang 1/6 na pag-ikot ng bilog.

Ang 60° na pag-ikot sa kanan ay nagpapagalaw sa bawat coordinate ng isang posisyon sa kanan:

[ x, y, z] hanggang [-z, -x, -y]
Ang 60° na pag-ikot sa kaliwa ay gumagalaw sa bawat coordinate ng isang posisyon sa kaliwa:

[ x, y, z] hanggang [-y, -z, -x]



"Naglaro" [sa orihinal na artikulo] na may diagram, makikita mo na ang bawat pag-ikot ay 60° mga pagbabago mga palatandaan at pisikal na "pinaikot" ang mga coordinate. Pagkatapos ng 120° na pag-ikot, ang mga palatandaan ay magiging pareho muli. Ang isang 180° na pag-ikot ay nagbabago ng mga palatandaan, ngunit ang mga coordinate ay bumalik sa kanilang orihinal na posisyon.

Narito ang kumpletong pagkakasunud-sunod ng pag-ikot ng posisyon P sa paligid ng gitnang posisyon C, na nagreresulta sa isang bagong posisyon R:

  1. I-convert ang mga posisyon ng P at C sa mga cubic coordinates.
  2. Pagkalkula ng vector sa pamamagitan ng pagbabawas sa gitna: P_from_C = P - C = Cube(P.x - C.x, P.y - C.y, P.z - C.z) .
  3. I-rotate ang vector P_from_C tulad ng inilarawan sa itaas at italaga ang panghuling vector ang pagtatalaga R_from_C .
  4. Ang pag-convert ng vector pabalik sa posisyon sa pamamagitan ng pagdaragdag ng center: 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. Kino-convert ang kubiko na posisyon R pabalik sa nais na sistema ng coordinate.
Mayroong ilang mga yugto ng pagbabago, ngunit ang bawat isa sa kanila ay medyo simple. Posibleng paikliin ang ilan sa mga hakbang na ito sa pamamagitan ng direktang pagtukoy sa rotation sa axial coordinates, ngunit hindi gumagana ang hex vectors sa mga offset coordinates, at hindi ko alam kung paano paikliin ang mga hakbang para sa offset coordinates. Tingnan din ang talakayan sa stackexchange para sa iba pang paraan ng pagkalkula ng pag-ikot.

Mga singsing

Simpleng singsing

Upang malaman kung ang isang binigay na hexagon ay kabilang sa isang singsing ng isang ibinigay na radius radius, kailangan mong kalkulahin ang distansya mula sa hexagon na ito sa gitna, at alamin kung ito ay katumbas ng radius. Upang makakuha ng isang listahan ng lahat ng naturang mga hexagon, kailangan mong gumawa ng mga hakbang sa radius mula sa gitna, at pagkatapos ay sundin ang mga pinaikot na vector sa landas sa kahabaan ng singsing.

Function cube_ring(center, radius): var results = # hindi gumagana ang code na ito para sa radius == 0; naiintindihan mo ba kung bakit? var cube = cube_add(center, cube_scale(cube_direction(4), radius)) para sa bawat 0 ≤ i< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
Sa code na ito, ang kubo ay nagsisimula sa isang singsing, na ipinapakita ng isang malaking arrow mula sa gitna hanggang sa sulok ng diagram. Pinili ko ang anggulo 4 upang magsimula dahil tumutugma ito sa landas na dinadaanan ng aking mga numero ng direksyon. Maaaring kailanganin mo ng ibang panimulang anggulo. Sa bawat yugto ng panloob na loop, ang kubo ay gumagalaw ng isang heksagono sa paligid ng singsing. Pagkatapos ng 6 * radius na hakbang ay nagtatapos siya kung saan siya nagsimula.


Mga spiral na singsing

Sa pamamagitan ng pagdaan sa mga singsing sa isang spiral pattern, maaari naming punan ang mga panloob na bahagi ng mga singsing:

Function na cube_spiral(gitna, radius): var resulta = para sa bawat 1 ≤ k ≤ radius: resulta = resulta + cube_ring(gitna, k) ibinalik ang mga resulta



Ang lugar ng isang malaking heksagono ay ang kabuuan ng lahat ng mga bilog plus 1 para sa gitna. Gamitin ang formula na ito upang kalkulahin ang lugar.

Ang pagtawid sa mga hexagon sa ganitong paraan ay maaari ding gamitin upang kalkulahin ang hanay ng paggalaw (tingnan sa itaas).

Lugar ng kakayahang makita

Ano ang nakikita mula sa isang naibigay na posisyon sa isang naibigay na distansya, at hindi hinaharangan ng mga hadlang? Ang pinakasimpleng paraan upang matukoy ito ay ang pagguhit ng isang linya sa bawat hexagon sa isang ibinigay na hanay. Kung ang linya ay hindi nakakatugon sa mga dingding, makikita mo ang isang heksagono. Ilipat ang iyong mouse sa ibabaw ng mga hexagons [sa diagram sa orihinal na artikulo] upang makita kung paano iginuhit ang mga linya sa mga hexagon na ito at sa mga dingding na nagtatagpo ng mga linya.

Ang algorithm na ito ay maaaring mabagal sa malalaking lugar, ngunit madali itong ipatupad, kaya inirerekomenda kong simulan ito.

GIF



Mayroong maraming iba't ibang mga kahulugan ng visibility. Gusto mo bang makita ang gitna ng isa pang heksagono mula sa gitna ng orihinal? Gusto mo bang makakita ng anumang bahagi ng isa pang heksagono mula sa gitna ng orihinal? Siguro anumang bahagi ng isa pang heksagono mula sa anumang punto ng paunang isa? Ang mga hadlang na humahadlang sa iyong pagtingin ay mas maliit kaysa sa isang buong heksagono? Ang saklaw ay isang trickier at mas iba't ibang konsepto kaysa sa tila sa unang tingin. Magsimula tayo sa pinakasimpleng algorithm, ngunit asahan na tiyak na tama nitong kalkulahin ang sagot sa iyong proyekto. Mayroong kahit na mga kaso kapag ang isang simpleng algorithm ay gumagawa ng hindi makatwiran na mga resulta.

Gusto kong palawakin ang gabay na ito sa hinaharap. Meron akong

Nilalaman:

Ang isang regular na hexagon, na tinatawag ding perpektong hexagon, ay may anim na pantay na gilid at anim na pantay na anggulo. Maaari kang gumuhit ng isang hexagon na may tape measure at isang protractor, isang magaspang na hexagon na may bilog na bagay at isang ruler, o isang mas magaspang na hexagon na may lamang isang lapis at isang maliit na intuwisyon. Kung gusto mong malaman kung paano gumuhit ng heksagono sa iba't ibang paraan, basahin lamang.

Mga hakbang

1 Gumuhit ng perpektong hexagon gamit ang compass

  1. 1 Gamit ang isang compass, gumuhit ng isang bilog. Ipasok ang lapis sa compass. Palawakin ang compass sa nais na lapad ng radius ng iyong bilog. Ang radius ay maaaring mula sa isang pares hanggang sampung sentimetro ang lapad. Susunod, maglagay ng compass at lapis sa papel at gumuhit ng bilog.
    • Minsan mas madaling gumuhit muna ng kalahating bilog at pagkatapos ay ang isa pang kalahati.
  2. 2 Ilipat ang compass needle sa gilid ng bilog. Ilagay ito sa ibabaw ng bilog. Huwag baguhin ang anggulo o posisyon ng compass.
  3. 3 Gumawa ng isang maliit na marka ng lapis sa gilid ng bilog. Gawin itong kakaiba, ngunit huwag masyadong madilim dahil buburahin mo ito sa ibang pagkakataon. Tandaan na panatilihin ang anggulo na iyong itinakda para sa compass.
  4. 4 Ilipat ang compass needle sa marka na ginawa mo lang. Direktang ilagay ang karayom ​​sa marka.
  5. 5 Gumawa ng isa pang marka ng lapis sa gilid ng bilog. Sa ganitong paraan gagawa ka ng pangalawang marka sa isang tiyak na distansya mula sa unang marka. Patuloy na gumagalaw sa isang direksyon.
  6. 6 Gamitin ang parehong paraan upang makagawa ng apat pang marka. Dapat kang bumalik sa orihinal na marka. Kung hindi, malamang na ang anggulo kung saan hawak mo ang compass at ginawa ang iyong mga marka ay nagbago. Maaaring nangyari ito dahil pinisil mo ito nang mahigpit o, sa kabaligtaran, medyo lumuwag ito.
  7. 7 Ikonekta ang mga marka gamit ang isang ruler. Ang anim na lugar kung saan ang iyong mga marka ay bumalandra sa gilid ng bilog ay ang anim na vertices ng hexagon. Gamit ang isang ruler at lapis, gumuhit ng mga tuwid na linya na nagdudugtong sa mga katabing marka.
  8. 8 Burahin ang bilog, ang mga marka sa mga gilid ng bilog, at anumang iba pang marka na ginawa mo. Kapag nabura mo na ang lahat ng iyong construction lines, dapat handa na ang iyong perpektong hexagon.

2 Gumuhit ng isang magaspang na heksagono gamit ang isang bilog na bagay at isang ruler

  1. 1 Bakatin ang gilid ng baso gamit ang isang lapis. Sa ganitong paraan gagawa ka ng bilog. Napakahalaga na gumuhit gamit ang isang lapis, dahil sa ibang pagkakataon kakailanganin mong burahin ang lahat ng mga pantulong na linya. Maaari mo ring i-trace ang isang nakabaligtad na baso, garapon, o anumang bagay na may bilog na base.
  2. 2 Gumuhit ng mga pahalang na linya sa gitna ng iyong bilog. Maaari kang gumamit ng ruler, isang libro - anumang bagay na may tuwid na gilid. Kung mayroon kang ruler, maaari mong markahan ang gitna sa pamamagitan ng pagkalkula ng patayong haba ng bilog at paghahati nito sa kalahati.
  3. 3 Gumuhit ng "X" sa kalahati ng bilog, na hatiin ito sa anim na pantay na seksyon. Dahil gumuhit ka na ng linya sa gitna ng bilog, kailangang mas malapad ang X kaysa sa taas nito para magkapantay ang mga bahagi. Isipin na hatiin ang isang pizza sa anim na piraso.
  4. 4 Gumawa ng mga tatsulok sa bawat seksyon. Upang gawin ito, gumamit ng ruler upang gumuhit ng isang tuwid na linya sa ilalim ng hubog na bahagi ng bawat seksyon, ikinokonekta ito sa iba pang dalawang linya upang bumuo ng isang tatsulok. Gawin ito sa natitirang limang seksyon. Isipin ito tulad ng paggawa ng crust sa paligid ng iyong mga hiwa ng pizza.
  5. 5 Burahin ang lahat ng mga pantulong na linya. Kasama sa mga linya ng gabay ang iyong bilog, ang tatlong linya na naghati sa iyong bilog sa mga seksyon, at iba pang mga marka na ginawa mo sa daan.

3 Gumuhit ng magaspang na hexagon gamit ang isang lapis

  1. 1 Gumuhit ng pahalang na linya. Upang gumuhit ng isang tuwid na linya na walang ruler, iguhit lamang ang simula at pagtatapos ng iyong pahalang na linya. Pagkatapos ay ilagay ang lapis sa panimulang punto at iguhit ang linya hanggang sa dulo. Ang haba ng linyang ito ay maaaring ilang sentimetro lamang.
  2. 2 Gumuhit ng dalawang diagonal na linya mula sa mga dulo ng pahalang. Ang dayagonal na linya sa kaliwang bahagi ay dapat tumuro palabas sa parehong paraan tulad ng dayagonal na linya sa kanan. Maaari mong isipin na ang mga linyang ito ay bumubuo ng isang anggulo ng 120 degrees na may paggalang sa pahalang na linya.
  3. 3 Gumuhit ng dalawa pang pahalang na linya na nagmumula sa mga unang pahalang na linya na iginuhit papasok. Ito ay lilikha ng salamin na imahe ng unang dalawang dayagonal na linya. Ang kaliwang linya sa ibaba ay dapat na salamin ng kaliwang linya sa itaas, at ang kanang linya sa ibaba ay dapat na salamin ng kanang itaas na linya. Habang ang mga itaas na pahalang na linya ay dapat nakaharap palabas, ang mga nasa ibaba ay dapat na nakaharap sa loob sa base.
  4. 4 Gumuhit ng isa pang pahalang na linya na nagdudugtong sa ilalim ng dalawang dayagonal na linya. Sa ganitong paraan, iguguhit mo ang base para sa iyong heksagono. Sa isip, ang linyang ito ay dapat na parallel sa itaas na pahalang na linya. Ngayon ay nakumpleto mo na ang iyong hexagon.
  • Ang lapis at compass ay dapat na matalim upang mabawasan ang mga error mula sa mga marka na masyadong malawak.
  • Kapag gumagamit ng paraan ng compass, kung ikinonekta mo ang bawat marka sa halip na lahat ng anim, makakakuha ka ng isang equilateral triangle.

Mga babala

  • Ang compass ay isang medyo matalim na bagay, maging maingat dito.

Prinsipyo ng operasyon

  • Tutulungan ka ng bawat pamamaraan na gumuhit ng hexagon na nabuo ng anim na equilateral triangle na may radius na katumbas ng haba ng lahat ng panig. Ang anim na radii na iginuhit ay magkapareho ang haba at ang lahat ng mga linya upang lumikha ng hexagon ay magkapareho din ang haba, dahil ang lapad ng compass ay hindi nagbago. Dahil sa katotohanan na ang anim na tatsulok ay equilateral, ang mga anggulo sa pagitan ng kanilang mga vertices ay 60 degrees.

Ang kakailanganin mo

  • Papel
  • Lapis
  • Tagapamahala
  • Pares ng compass
  • Isang bagay na maaaring ilagay sa ilalim ng papel upang hindi madulas ang compass needle.
  • Pambura

Ang mga geometric na konstruksyon ay isa sa mga pangunahing bahagi ng pagsasanay. Bumubuo sila ng spatial at lohikal na pag-iisip, at nagbibigay-daan din sa amin na maunawaan ang primitive at natural na geometric na bisa. Ang mga konstruksyon ay ginawa sa isang eroplano gamit ang isang compass at ruler. Ang mga tool na ito ay maaaring gamitin upang bumuo ng isang malaking bilang ng mga geometric na hugis. Kasabay nito, maraming mga figure na tila medyo mahirap ay itinayo gamit ang pinakasimpleng mga patakaran. Halimbawa, kung paano bumuo ng isang regular na hexagon ay maaaring ilarawan sa ilang mga salita.

Kakailanganin mong

  • Mga kumpas, ruler, lapis, sheet ng papel.

Mga tagubilin

1. Gumuhit ng bilog. Magtakda ng ilang distansya sa pagitan ng mga binti ng compass. Ang distansyang ito ang magiging radius ng bilog. Piliin ang radius sa paraang medyo komportable ang pagguhit ng bilog. Ang bilog ay dapat magkasya nang buo sa sheet ng papel. Ang masyadong malaki o masyadong maliit na distansya sa pagitan ng mga binti ng compass ay maaaring humantong sa pagbabago nito sa panahon ng pagguhit. Ang pinakamainam na distansya ay kung saan ang anggulo sa pagitan ng mga binti ng compass ay 15-30 degrees.

2. Buuin ang mga vertex point ng mga sulok ng isang regular na hexagon. Ilagay ang binti ng compass, kung saan ang karayom ​​ay naayos, sa anumang punto sa bilog. Ang karayom ​​ay dapat tumusok sa iginuhit na linya. Kung mas tumpak na naka-install ang compass, mas tumpak ang pagtatayo. Gumuhit ng isang pabilog na arko upang ito ay magsalubong sa naunang iginuhit na bilog. Ilipat ang compass needle sa punto ng intersection ng katatapos lang na iginuhit na arko sa bilog. Gumuhit ng isa pang arko na tumatawid sa bilog. Ilipat muli ang compass needle sa intersection point ng arc at ng bilog at iguhit muli ang arc. Ulitin ang pagkilos na ito nang tatlong beses, gumagalaw sa isang direksyon sa paligid ng bilog. Ang bawat isa ay dapat magkaroon ng anim na arko at anim na intersection point.

3. Bumuo ng positibong hexagon. Stepwise pagsamahin ang lahat ng anim na intersection point ng mga arko sa orihinal na iginuhit na bilog. Ikonekta ang mga punto gamit ang mga tuwid na linya na iginuhit gamit ang isang ruler at lapis. Pagkatapos isagawa ang mga pagkilos na ito, makakakuha ng tamang hexagon na nakasulat sa isang bilog.

Heksagono Ang isang polygon ay itinuturing na may anim na anggulo at anim na panig. Ang mga polygon ay maaaring maging matambok o malukong. Ang isang convex hexagon ay may lahat ng panloob na anggulo obtuse, habang ang isang malukong hexagon ay may isa o higit pang mga acute na anggulo. Ang hexagon ay medyo madaling itayo. Ginagawa ito sa ilang hakbang.

Kakailanganin mong

  • Lapis, sheet ng papel, ruler

Mga tagubilin

1. Kumuha ng isang sheet ng papel at markahan ito ng 6 na puntos na humigit-kumulang tulad ng ipinapakita sa Fig. 1.

2. Matapos mamarkahan ang mga punto, kumuha ng ruler at lapis at, sa tulong nila, sunud-sunod, isa-isa, ikonekta ang mga punto tulad ng hitsura nito sa Fig. 2.

Video sa paksa

Tandaan!
Ang kabuuan ng lahat ng panloob na anggulo ng isang hexagon ay 720 degrees.

Heksagono ay isang polygon, isa na may anim na anggulo. Upang gumuhit ng isang di-makatwirang hexagon, kailangan mong gumawa ng 2 hakbang bawat isa.

Kakailanganin mong

  • Lapis, ruler, sheet ng papel.

Mga tagubilin

1. Kailangan mong kumuha ng lapis sa iyong kamay at markahan ang 6 na random na tuldok sa sheet. Sa hinaharap, ang mga puntong ito ay gaganap sa papel ng mga sulok sa hexagon. (Fig.1)

2. Kumuha ng ruler at gumuhit ng 6 na segment batay sa mga puntong ito na magkokonekta sa isa't isa kasama ang naunang iginuhit na mga punto (Larawan 2)

Video sa paksa

Tandaan!
Ang isang espesyal na uri ng hexagon ay ang positibong hexagon. Tinatawag itong ganyan dahil ang lahat ng panig at anggulo nito ay pantay sa isa't isa. Maaari mong ilarawan o isulat ang isang bilog sa paligid ng isang hexagon. Kapansin-pansin na sa mga puntos na nakuha sa pamamagitan ng pagpindot sa nakasulat na bilog at sa mga gilid ng hexagon, ang mga gilid ng positibong heksagono ay nahahati sa kalahati.

Nakatutulong na payo
Sa kalikasan, ang mga positibong hexagon ay napakapopular. Halimbawa, ang buong pulot-pukyutan ay may positibong heksagonal na hugis. O ang kristal na sala-sala ng graphene (carbon modification) ay mayroon ding hugis na positibong hexagon.

Paano bumuo ng isa o ang isa pa sulok- malaking tanong. Ngunit para sa ilang mga anggulo ang gawain ay hindi nakikitang pinasimple. Isa sa mga anggulong ito ay sulok sa 30 degrees. Katumbas ito ng?/6, ibig sabihin, ang bilang na 30 ay isang divisor ng 180. Dagdag pa, kilala ang sine nito. Nakakatulong ito sa pagbuo nito.

Kakailanganin mong

  • protractor, parisukat, compass, ruler

Mga tagubilin

1. Una, tingnan natin ang isang partikular na primitive na sitwasyon kapag mayroon kang protractor sa iyong mga kamay. Pagkatapos ang isang tuwid na linya sa isang anggulo na 30 degrees dito ay madaling maitabi nang may suporta para dito.

2. Bilang karagdagan sa protractor, mayroon ding sulok mga arko, isa sa mga anggulo na katumbas ng 30 degrees. Tapos isa pa sulok sulok ang anggulo ay magiging katumbas ng 60 degrees, iyon ay, kailangan mo ng mas maliit na biswal sulok upang bumuo ng kinakailangang linya.

3. Lumipat tayo ngayon sa mga di-maliit na paraan upang makabuo ng 30-degree na anggulo. Tulad ng alam mo, ang sine ng isang anggulo ng 30 degrees ay katumbas ng 1/2. Upang maitayo ito, kailangan nating direktang bumuo sulok tionary sulok nik. Posible na makabuo tayo ng dalawang patayong linya. Ngunit ang tangent ng 30 degrees ay isang hindi makatwirang numero, samakatuwid maaari lamang nating kalkulahin ang ratio sa pagitan ng mga binti (eksklusibo kung walang calculator), at, samakatuwid, bumuo sulok humigit-kumulang 30 degrees.

4. Sa kasong ito, posible na gumawa ng eksaktong konstruksiyon. Muli tayong bumuo ng dalawang patayong tuwid na linya, kung saan ang mga binti ay matatagpuan nang tuwid sulok nogo sulok nik. Ihiga natin ang isang tuwid na binti BC na may kahabaan na may suporta ng isang compass (B - tuwid sulok). Pagkatapos nito, dagdagan natin ang haba sa pagitan ng mga binti ng compass ng 2 beses, na elementarya. Ang pagguhit ng isang bilog na may sentro sa punto C na may radius na ganito ang haba, makikita natin ang punto ng intersection ng bilog na may isa pang tuwid na linya. Ang puntong ito ay direktang magiging punto A sulok nogo sulok ABC, at sulok Ang A ay magiging katumbas ng 30 degrees.

5. Nakatayo sulok sa 30 degrees ay pinapayagan at sa suporta ng bilog, inilalapat kung ano ang katumbas nito?/6. Bumuo tayo ng bilog na may radius OB. Tingnan natin ang teorya sulok nik, kung saan OA = OB = R – radius ng bilog, kung saan sulok OAB = 30 degrees. Hayaang OE ang taas ng isosceles triangle na ito sulok nik, at, dahil dito, ang bisector at median nito. Pagkatapos sulok AOE = 15 degrees, at, ayon sa half-angle formula, sin(15o) = (sqrt(3)-1)/(2*sqrt(2)). Dahil dito, AE = R*sin(15o). Kaya, AB = 2AE = 2R*sin(15o). Sa pamamagitan ng pagbuo ng isang bilog na radius BA na may sentro sa punto B, makikita natin ang intersection point A ng bilog na ito na may paunang isa. Ang anggulo ng AOB ay magiging 30 degrees.

6. Kung matutukoy natin ang haba ng mga arko sa ilang paraan, kung gayon, magtabi ng isang arko ng haba?*R/6, makukuha rin natin sulok sa 30 degrees.

Tandaan!
Dapat nating tandaan na sa talata 5 maaari lamang nating buuin ang anggulo ng humigit-kumulang, dahil ang mga hindi makatwiran na numero ay lilitaw sa mga kalkulasyon.

Heksagono tinatawag na isang espesyal na kaso ng isang polygon - isang figure na nabuo sa pamamagitan ng karamihan ng mga punto ng eroplano, na limitado sa pamamagitan ng isang closed polyline. Ang positibong hexagon (hexagon), naman, ay isang espesyal na kaso - ito ay isang polygon na may anim na pantay na panig at pantay na anggulo. Ang figure na ito ay makabuluhan dahil ang haba ng lahat ng panig nito ay katumbas ng radius ng bilog na inilarawan sa paligid ng figure.

Kakailanganin mong

  • – kumpas;
  • - pinuno;
  • - lapis;
  • - papel.

Mga tagubilin

1. Piliin ang haba ng gilid ng hexagon. Kumuha ng compass at itakda ang distansya sa pagitan ng dulo ng karayom, na matatagpuan sa isa sa mga binti nito, at ang dulo ng lead, na matatagpuan sa kabilang binti, katumbas ng haba ng gilid ng figure na iginuhit. Upang gawin ito, maaari kang gumamit ng isang ruler o pumili ng isang random na distansya kung ang sandaling ito ay hindi makabuluhan. I-secure ang mga binti ng compass gamit ang isang tornilyo, kung maaari.

2. Gumuhit ng bilog gamit ang compass. Ang napiling distansya sa pagitan ng mga binti ay ang radius ng bilog.

3. Hatiin ang bilog sa anim na pantay na bahagi na may mga tuldok. Ang mga puntong ito ay ang mga vertice ng mga sulok ng hexagon at, nang naaayon, ang mga dulo ng mga segment na kumakatawan sa mga gilid nito.

4. Ilagay ang binti ng compass gamit ang karayom ​​sa isang di-makatwirang punto na matatagpuan sa linya ng nakabalangkas na bilog. Ang karayom ​​ay dapat tumusok nang tama sa linya. Ang katumpakan ng mga konstruksyon ay direktang nakasalalay sa katumpakan ng pag-install ng compass. Gumuhit ng isang arko gamit ang isang compass upang ito ay mag-intersect sa bilog na iginuhit muna sa 2 puntos.

5. Ilipat ang binti ng compass gamit ang karayom ​​sa isa sa mga punto ng intersection ng iginuhit na arko na may orihinal na bilog. Gumuhit ng isa pang arko, na intersecting din ang bilog sa 2 puntos (isa sa mga ito ay magkakasabay sa punto ng nakaraang lokasyon ng compass needle).

6. Sa parehong paraan, muling ayusin ang compass needle at gumuhit ng mga arko ng apat na beses. Ilipat ang binti ng compass gamit ang karayom ​​sa isang direksyon sa paligid ng bilog (palagiang clockwise o counterclockwise). Bilang resulta, dapat na matukoy ang anim na punto ng intersection ng mga arko na may unang itinayong bilog.

7. Gumuhit ng positibong hexagon. Stepwise, sa mga pares, pag-isahin ang anim na puntos na nakuha sa nakaraang hakbang na may mga segment. Iguhit ang mga segment gamit ang lapis at ruler. Ang resulta ay magiging isang tamang hexagon. Matapos makumpleto ang konstruksiyon, maaari mong burahin ang mga pantulong na elemento (mga arko at bilog).

Tandaan!
Makatuwiran na pumili ng isang distansya sa pagitan ng mga binti ng compass upang ang anggulo sa pagitan ng mga ito ay 15-30 degrees sa kabaligtaran, kapag gumagawa ng mga constructions, ang distansya na ito ay madaling mawala.

Kapag nagtatayo o nagbubuo ng mga plano sa disenyo ng bahay, kadalasan ay kinakailangan na magtayo sulok, katumbas ng umiiral na. Sumusuporta ang mga sample at kasanayan sa geometry ng paaralan.

Mga tagubilin

1. Ang isang anggulo ay nabuo sa pamamagitan ng dalawang tuwid na linya na nagmumula sa isang punto. Ang puntong ito ay tatawaging vertex ng anggulo, at ang mga linya ay magiging mga gilid ng anggulo.

2. Gumamit ng tatlong titik upang kumatawan sa mga sulok: isa sa itaas, dalawa sa gilid. Tinawag sulok, na nagsisimula sa titik na nakatayo sa isang gilid, pagkatapos ay ang titik na nakatayo sa itaas ay tinatawag, at pagkatapos ay ang titik sa kabilang panig. Gumamit ng iba pang mga paraan para sa pagmamarka ng mga sulok kung mas komportable ka sa tapat. Paminsan-minsan, isang titik lamang ang pinangalanan, na nasa itaas. At pinapayagan na tukuyin ang mga anggulo na may mga titik na Griyego, sabihin nating, α, β, γ.

3. May mga sitwasyon kung kailan kailangan mong gumuhit sulok, upang ito ay katumbas ng ibinigay na anggulo. Kung walang pagkakataong gumamit ng protractor kapag gumagawa ng drawing, makakalampas ka lang gamit ang ruler at compass. Posible, sa tuwid na linya na ipinahiwatig sa pagguhit ng mga titik MN, kinakailangan upang bumuo sulok sa puntong K, upang ito ay katumbas ng anggulo B. Iyon ay, mula sa punto K kailangan mong gumuhit ng isang tuwid na linya na bumubuo sa linyang MN sulok, ang magiging katumbas ng anggulo B.

4. Una, markahan ang isang punto sa buong gilid ng isang naibigay na anggulo, sabihin nating, mga punto A at C, pagkatapos ay ikonekta ang mga punto C at A na may isang tuwid na linya. Kumuha ng tre sulok nik ABC.

5. Ngayon bumuo ng parehong tre sa tuwid na linya MN sulok upang ang vertex B nito ay nasa linya sa puntong K. Gamitin ang panuntunan para sa pagbuo ng tatsulok sulok sa tatlong panig. Alisin ang segment na KL mula sa punto K. Dapat itong katumbas ng segment na BC. Kunin ang L point.

6. Mula sa puntong K, gumuhit ng bilog na may radius na katumbas ng segment BA. Mula sa L, gumuhit ng bilog na may radius CA. Pagsamahin ang resultang punto (P) ng intersection ng 2 bilog na may K. Kumuha ng tatlo sulok nik KPL, yung magiging katumbas ng tatlo sulok aklat ng ABC. Ito ay kung paano mo makuha sulok K. Magiging katumbas ito ng anggulo B. Upang gawing mas komportable at mas mabilis ang konstruksiyon na ito, itakda ang pantay na mga segment mula sa vertex B, gamit ang isang solusyon sa compass, nang hindi ginagalaw ang mga binti, ilarawan ang isang bilog na may parehong radius mula sa punto K.

Video sa paksa

Tandaan!
Iwasang hindi sinasadyang baguhin ang distansya sa pagitan ng mga binti ng compass. Sa kasong ito, ang hexagon ay maaaring maging hindi tama.

Nakatutulong na payo
Siya ay may kakayahan sa paggawa ng mga constructions gamit ang isang compass na may perpektong sharpened lead. Sa ganitong paraan magiging tumpak ang mga konstruksyon.