Išmoksime pavaizduoti šešiakampę prizmę įvairiose padėtyse.

Išmokite įvairių būdų, kaip sukurti įprastą šešiakampį, pieškite šešiakampius brėžinius, patikrinkite, ar jie teisingi. Iš šešiakampių nubrėžkite šešiakampes prizmes.

Apsvarstykite šešiakampę prizmę fig. 3.52 ir jo stačiakampės projekcijos pav. 3.53. Taisyklingi šešiakampiai yra šešiakampės prizmės (šešiakampio) pagrindu, šoniniai paviršiai yra identiški stačiakampiai. Norint teisingai pavaizduoti šešiakampį perspektyvoje, pirmiausia reikia išmokti teisingai pavaizduoti jo pagrindą perspektyvoje (3.54 pav.). Šešiakampyje pav. 3,55 viršūnės pažymėtos skaičiais nuo vieno iki šešių. Jei 1 ir 3, 4 ir 6 taškus sujungsite vertikaliomis linijomis, pamatysite, kad šios linijos kartu su apskritimo vidurio tašku padalija skersmenį 5 - 2 į keturias lygias atkarpas (šios atkarpos žymimos lankais). Priešingos šešiakampio pusės yra lygiagrečios viena kitai ir linija, einanti per jo centrą ir jungianti dvi viršūnes (pavyzdžiui, kraštinės 6 - 1 ir 4 - 3 yra lygiagrečios tiesei 5 - 2). Šie stebėjimai padės jums sukurti šešiakampį perspektyvoje, taip pat patikrinti šios konstrukcijos teisingumą. Yra du būdai sukurti taisyklingą šešiakampį iš atvaizdo: remiantis apskritimu ir kvadrato pagrindu.

Remiantis apibrėžtu apskritimu. Apsvarstykite pav. 3.56. Visos taisyklingo šešiakampio viršūnės priklauso apskritimui, kurio spindulys lygus šešiakampio kraštinei.


Horizontalus šešiakampis. Nubrėžkite horizontalią elipsę laisvąja ranka, tai yra, apibrėžtą apskritimą perspektyvoje. Dabar ant jo reikia rasti šešis taškus, kurie yra šešiakampio viršūnės. Nubrėžkite bet kurį duoto apskritimo skersmenį per jo centrą (3.57 pav.). Kraštutiniai skersmens taškai - 5 ir 2, esantys ant elipsės, yra šešiakampio viršūnės. Norėdami rasti likusias viršūnes, turite padalyti šį skersmenį į keturis vienodus segmentus. Skersmuo jau padalintas iš apskritimo centro taško į du spindulius, belieka kiekvieną spindulį padalyti per pusę. Perspektyviniame brėžinyje visi keturi segmentai tolygiai sumažinami atsižvelgiant į atstumą nuo žiūrinčiojo (3.58 pav.). Dabar nubrėžkite per spindulių vidurio taškus - taškus A ir B - tieses, statmenas tiesei 5 - 2. Jų kryptį galite rasti naudodami elipsės liestines taškuose 5 ir 2 (3.59 pav.). Šios liestinės bus statmenos skersmeniui 5–2, o linijos, nubrėžtos per taškus A ir B, lygiagrečios šioms liestinėms, taip pat bus statmenos tiesei 5–2. Šių tiesių sankirtoje su elipse gautus taškus pažymėkite kaip 1, 3, 4, 6 ( (žr. 3.60 pav.) Visas šešias viršūnes sujunkite tiesiomis linijomis (3.61 pav.).

Patikrinkite savo konstrukcijos teisingumą įvairiais būdais. Jei konstrukcija teisinga, tai tiesės, jungiančios priešingas šešiakampio viršūnes, susikerta apskritimo centre (3.62 pav.), o priešingos šešiakampio kraštinės yra lygiagrečios atitinkamiems skersmenims (3.63 pav.). Kitas patikrinimo būdas parodytas fig. 3.64.

Vertikalus šešiakampis. Tokiame šešiakampyje tiesios linijos, jungiančios taškus 7 ir 3, b ir 4, taip pat apibrėžto apskritimo liestinės taškuose 5 ir 2, turi vertikalią kryptį ir išlaiko ją perspektyviniame brėžinyje. Taigi, nubrėžę dvi vertikalias elipsės liestes, randame taškus 5 ir 2 (lietimo taškus). Sujunkite juos tiesia linija, o tada gautą skersmenį 5 - 2 padalinkite į 4 vienodus segmentus, atsižvelgdami į jų perspektyvinius pjūvius (3.65 pav.). Nubrėžkite vertikalias linijas per taškus A ir B, o jų sankirtoje su elipsėmis raskite taškus 1,3,6L4. Tada nuosekliai sujunkite taškus 1 - 6 tiesiomis linijomis (3.66 pav.). Patikrinkite šešiakampio konstrukcijos teisingumą taip pat, kaip ir ankstesniame pavyzdyje.

Aprašytas šešiakampio konstravimo metodas leidžia gauti šią figūrą remiantis apskritimu, kurį lengviau nubrėžti perspektyvoje nei nurodytų proporcijų kvadratą. Todėl šis šešiakampio konstravimo būdas atrodo tiksliausias ir universaliausias. Kvadratu paremtas konstravimo būdas leidžia lengvai pavaizduoti šešiakampį tuo atveju, kai brėžinyje jau yra kubas, kitaip tariant, kai nustatomos kvadrato proporcijos ir jo kraštinių kryptis.

Remiantis kvadratu. Apsvarstykite pav. 3.67. Šešiakampis, įrašytas į kvadratą horizontalia kryptimi 5 - 2, lygus kvadrato kraštinei, o vertikalia kryptimi mažesnis už jo ilgį.

Vertikalus šešiakampis. Nubrėžkite vertikalų kvadratą perspektyvoje. Nubrėžkite tiesią liniją per įstrižainių sankirtą, lygiagrečią jos horizontalioms kraštinėms. Gautą atkarpą 5 - 2 padalinkite į keturias lygias dalis ir per taškus A ir B nubrėžkite vertikalias linijas (3.68 pav.). Šešiakampio viršutinės ir apatinės linijos nesutampa su kvadrato kraštinėmis. Nubrėžkite juos tam tikru atstumu (1114 a) nuo horizontalių kvadrato kraštinių ir lygiagrečiai joms. Taip rastus taškus 1 ir 3 sujungę su tašku 2, o taškus 6 ir 4 su tašku 5, gauname šešiakampį (3.69 pav.).

Horizontalus šešiakampis konstruojamas ta pačia seka (3.70 ir 3.71 pav.).

Šis konstravimo būdas tinka tik šešiakampiams su pakankamai anga. Jei šešiakampio atskleidimas yra nereikšmingas, geriau naudoti apskritimo metodą. Galite naudoti jau žinomus metodus, norėdami išbandyti šešiakampį, pastatytą per kvadratą.

Be to, yra dar vienas – apibūdinti apskritimą aplink susidariusį šešiakampį (jūsų piešinyje – elipsė). Visos šešiakampio viršūnės turi priklausyti šiai elipsei.

Įvaldę šešiakampio piešimo įgūdžius, laisvai pereisite prie šešiakampės prizmės piešimo. Atidžiai pažvelkite į diagramą pav. 3.72, taip pat šešiakampių prizmių konstravimo pagal apibrėžtąjį apskritimą schemos (3.73 pav.; 3.74 ir 3.75) ir kvadrato pagrindu (3.76 pav.; 3.77 ir 3.78 pav.). Pieškite vertikalius ir horizontalius šešiakampius skirtingais būdais. Vertikalaus šešiakampio iliustracijoje ilgosios šoninių paviršių kraštinės bus lygiagrečios viena kitai vertikaliomis tiesiomis linijomis, o pagrindinis šešiakampis bus atviresnis, kuo toliau nuo horizonto linijos. Horizontalaus šešiakampio brėžinyje ilgosios šoninių paviršių kraštinės susilieja išnykimo taške horizonte, o pagrindinio šešiakampio anga bus tuo didesnė, kuo toliau nuo žiūrinčiojo. Vaizduodami šešiakampį, taip pat įsitikinkite, kad abiejų pagrindų lygiagrečios briaunos perspektyvoje susilieja (3.79; 3.80 pav.).

Sukuria taisyklingą šešiakampį, įrašytą į apskritimą. Sukuria taisyklingą penkiakampį išilgai nurodytos pusės. Perkelkite kompaso adatą į lanko, kurį ką tik eskizavote su apskritimu, sankirtą. Ši konstrukcija gali būti padaryta naudojant kvadratą ir kompasą. Įprastą šešiakampį galima pastatyti naudojant bėgį ir 30X60 ° kvadratą. Nubraižykite taisyklingo šešiakampio kampų viršūnių taškus.


Į apskritimą įbrėžto lygiakraščio trikampio konstrukcija. Tokio trikampio viršūnes galima sukurti naudojant kompasą ir kvadratą, kurio kampai yra 30 ir 60 °, arba tik vieną kompasą. Norėdami sukurti 2-3 kraštą, nustatykite bėgimo taką į padėtį, parodytą punktyrinėmis linijomis, ir nubrėžkite tiesią liniją per tašką 2, kuri apibrėžs trečiąją trikampio viršūnę.

1 būdas iš 3: naudodami kompasą nubrėžkite tobulą šešiakampį

Apskritime pažymime tašką 1 ir laikome jį viena iš penkiakampio viršūnių. Tegu pateiktas D skersmens apskritimas; į jį reikia įrašyti taisyklingą septyniakampį (65 pav.). Padalinkite vertikalų apskritimo skersmenį į septynias lygias dalis. Iš taško 7, kurio spindulys lygus apskritimo D skersmeniui, aprašome lanką iki sankirtos su horizontalaus skersmens tęsiniu taške F. Taškas F bus vadinamas daugiakampio ašigaliu.

Taisyklingų daugiakampių konstravimo technika pagrįsta galimybe sudaryti kampų pusiausvyras ir atkarpų vidurio statmenis.

Pirmajame šios lentelės stulpelyje rodomas taisyklingo įbrėžto daugiakampio kraštinių skaičius, o antrame – koeficientai. Tam tikro daugiakampio kraštinės ilgis gaunamas duoto apskritimo spindulį padauginus iš koeficiento, atitinkančio šio daugiakampio kraštinių skaičių.

Šio vaizdo įrašo vadovėlio tema yra „Taisyklingų daugiakampių kūrimas“. Taip pat dar kartą pateiksime taisyklingo daugiakampio apibrėžimą, pavaizduosime jį grafiškai, o tada dar kartą įsitikinsime, kad įbrėžto ir apibrėžiamo apskritimų aplink tokią figūrą centrai sutaps. Visada galite įrašyti apskritimą į šį daugiakampį ir visada galite apibūdinti apskritimą aplink jį. Ankstesnių pamokų metu išsiaiškinome, kad daugiakampių savybėms apibūdinti pagrindinį vaidmenį vaidina jo kampų pusiausvyros ir vidurio statmenys į kraštines.

4. Gavo reikiamą taisyklingąjį trikampį ABC. Problema išspręsta. 3. Vieną kompaso koją padėję į savavališką apskritimo tašką A1, antrąja kojele pažymėkite tame pačiame apskritime tašką A2 ir prijunkite jį prie taško A1. Gauname pirmąją šešiakampio pusę. 3. Naudodamiesi viduriniais statmenais į daugiakampio kraštines, nuleistą iš taško O, visas jo kraštines ir visus apskritimo lankus, uždarytus tarp gretimų viršūnių, padalijame per pusę.

Geometrinė konstrukcija yra viena iš svarbių mokymo dalių. Adata turi perdurti nubrėžtą liniją. Kuo tiksliau nustatytas kompasas, tuo tikslesnė bus konstrukcija. Nubrėžkite kitą lanką, kuris kerta apskritimą. Iš eilės sujunkite visus šešis lankų susikirtimo taškus su iš pradžių nubrėžtu apskritimu. Tokiu atveju šešiakampis gali pasirodyti neteisingas.

Norėdami gauti viršūnes / - // - /// iš IV, V ir VI taškų, nubrėžkite horizontalias linijas iki sankirtos su apskritimu

Rastas viršūnes nuosekliai sujungiame viena su kita. Septynikampis gali būti sukonstruotas traukiant spindulius iš F ašigalio ir per nelyginius vertikalaus skersmens padalijimus. Abiejų apskritimų centrai sutampa (taškas O 1 pav.). Paveiksle taip pat pavaizduoti apibrėžtojo (R) ir įbrėžto (r) apskritimų spinduliai.

Šešiakampio konstrukcija pagrįsta tuo, kad jo kraštinė yra lygi apibrėžto apskritimo spinduliui. Šioje pamokoje apžvelgsime būdus, kaip sukurti taisyklingus daugiakampius naudojant kompasą ir liniuotę. Antrasis metodas pagrįstas tuo, kad jei pastatysite taisyklingą šešiakampį, įrašytą į apskritimą, o tada sujungsite jo viršūnes per vieną, gausite lygiakraštį trikampį. Pateiktas metodas tinka taisyklingiems daugiakampiams su bet kokiu kraštinių skaičiumi sudaryti.

Kai kuriuose žaidimuose naudojami šešiakampiai tinkleliai (šešiakampiai tinkleliai), tačiau jie nėra tokie paprasti ir įprasti kaip stačiakampiai tinkleliai. Jau beveik 20 metų rinkau išteklius apie šešiabriaunius tinklelius ir parašiau šį vadovą apie kai kuriuos elegantiškiausius metodus, įgyvendintus paprasčiausiu kodu. Šiame straipsnyje dažnai naudojami Charleso Fu ir Clarko Verbrugge'o vadovėliai. Aprašysiu įvairius šešiakampių tinklelių kūrimo būdus, jų ryšį ir dažniausiai naudojamus algoritmus. Daugelis šio straipsnio dalių yra interaktyvios: pasirinkus tinklelio tipą, pakeičiamos atitinkamos schemos, kodas ir tekstai. (Apytiksliai juosta: tai taikoma tik originalui, patariu jį išstudijuoti. Vertime išsaugoma visa originalo informacija, bet be interaktyvumo.).

Šiame straipsnyje pateikti kodo pavyzdžiai yra parašyti pseudokodu, todėl juos lengviau skaityti ir suprasti, kad galėtumėte parašyti savo įgyvendinimą.

Geometrija

Šešiakampiai yra šešiakampiai daugiakampiai. Įprastų šešiakampių visos kraštinės (pusės) yra vienodo ilgio. Dirbsime tik su įprastais šešiakampiais. Paprastai šešiakampiuose tinkleliuose naudojamos horizontalios (smailaus viršaus) ir vertikalios (plokščias viršus) orientacijos.


Plokšti (kairėje) ir smailieji (dešinėje) viršutiniai šešiakampiai

Šešiakampiai turi 6 veidus. Kiekvienas veidas yra bendras dviem šešiakampiams. Šešiakampiai turi 6 kampinius taškus. Kiekvieną kampinį tašką dalijasi trys šešiakampiai. Daugiau apie centrus, kraštus ir kampų taškus galite perskaityti mano straipsnyje apie tinklelio dalis (kvadratus, šešiakampius ir trikampius).

Kampai

Įprastame šešiakampyje vidiniai kampai yra 120 °. Yra šeši „pleištai“, kurių kiekvienas yra lygiakraštis trikampis, kurio vidiniai kampai yra 60 °. Kampinis taškas i yra (60 ° * i) + 30 ° atstumu, dydžio vienetai nuo centro. Kode:

Funkcija šešioliktakampis (centras, dydis, i): var kampas_deg = 60 * i + 30 var kampas_rad = PI / 180 * kampas_deg atgal Taškas (centras.x + dydis * cos (kampo_rad), centras.y + dydis * sin (kampo_rad)) )
Norėdami užpildyti šešiakampį, turite gauti daugiakampio viršūnes nuo šešioliktainio kampo (..., 0) iki šešioliktainio kampo (..., 5). Norėdami nubrėžti šešiakampio kontūrą, naudokite šias viršūnes ir vėl nubrėžkite liniją šešiakampyje (..., 0).

Skirtumas tarp dviejų orientacijų yra tas, kad x ir y keičiasi vietomis, todėl kampai keičiasi: plokščių šešiakampių kampai yra 0 °, 60 °, 120 °, 180 °, 240 °, 300 ° ir šešiakampiai su aštriu viršumi yra 30 °, 90 °, 150 °, 210 °, 270 °, 330 °.


Plokščių ir aštrių viršutinių šešiakampių kampai

Dydis ir vieta

Dabar norime išdėstyti kai kuriuos šešiakampius kartu. Horizontalioje padėtyje šešiakampio aukštis yra aukštis = dydis * 2. Vertikalus atstumas tarp gretimų šešiakampių vert = aukštis * 3/4.

Šešiakampio plotis yra plotis = kvadratas (3) / 2 * aukštis. Horizontalus atstumas tarp gretimų šešiakampių horiz = plotis.

Kai kuriuose žaidimuose šešiakampiams naudojamas pikselių piešinys, kuris tiksliai neatitinka įprastų šešiakampių. Šiame skyriuje aprašytos kampo ir padėties formulės neatitiks šių šešiakampių matmenų. Likusi straipsnio dalis, kurioje aprašomi šešiakampio tinklelio algoritmai, taikoma net jei šešiakampiai yra šiek tiek ištempti arba suspausti.



Koordinačių sistemos

Pradėkime surinkti šešiakampius į tinklelį. Kvadratų tinklelių atveju yra tik vienas akivaizdus surinkimo būdas. Yra daug šešiakampių metodų. Kaip pirminį atvaizdavimą rekomenduoju naudoti kubines koordinates. Ašies koordinatės arba poslinkio koordinatės turėtų būti naudojamos žemėlapiams saugoti ir naudotojui rodyti koordinates.

Poslinkio koordinatės

Labiausiai paplitęs būdas yra uždaryti kiekvieną paskesnį stulpelį ar eilutę. Stulpeliai žymimi col arba q. Eilutės žymimos eilute arba r. Nelyginius ar lyginius stulpelius / eilutes galima perstumti, todėl horizontalūs ir vertikalūs šešiakampiai turi dvi parinktis.


Nelyginis horizontalus išdėstymas


Net-r horizontalus išdėstymas


Nelyginis-q vertikalus išdėstymas


Net-q vertikalus išdėstymas

Kubinės koordinatės

Kitas būdas pažvelgti į šešiakampių tinklelius yra pamatyti juose trys pagrindinės ašys, o ne du kaip kvadratų tinkleliai. Jie pasižymi elegantiška simetrija.

Paimkite kubelių tinklelį ir Iškirptiįstrižainė plokštuma, kai x + y + z = 0. Tai keista idėja, tačiau ji padės mums supaprastinti šešioliktainio tinklelio algoritmus. Visų pirma, galėsime naudoti standartines Dekarto koordinačių operacijas: koordinačių sudėjimą ir atėmimą, daugybą ir padalijimą iš skaliro, taip pat atstumus.

Atkreipkite dėmesį į tris pagrindines ašis kubų tinklelyje ir jų santykį su šešiomis. įstrižainėsšešiakampių tinklelio kryptys. Tinklelio įstrižainės ašys atitinka šešiakampio tinklelio pagrindo kryptį.


Šešiakampiai


Kuba

Kadangi jau turime kvadratų ir kubelių tinklelių algoritmus, kubinių koordinačių naudojimas leidžia pritaikyti šiuos algoritmus šešiakampių tinkleliams. Šią sistemą naudosiu daugeliui šiame straipsnyje nurodytų algoritmų. Norėdami naudoti algoritmus su kita koordinačių sistema, aš transformuoju kubines koordinates, paleidžiu algoritmą ir konvertuoju atgal.

Ištirkite, kaip veikia šešiakampių tinklelio kubinės koordinatės. Kai pasirenkate šešiakampius, paryškinamos tris ašis atitinkančios kubinės koordinatės.

  1. Kiekviena kubelių tinklelio kryptis atitinka linijos ant šešiakampių tinklelio. Pabandykite pasirinkti šešiakampį, kurio z lygus 0, 1, 2, 3, kad pamatytumėte ryšį. Linija paryškinta mėlyna spalva. Pabandykite tą patį su x (žalia) ir y (violetinė).
  2. Kiekviena šešiakampio tinklelio kryptis yra dviejų kubo tinklelio krypčių derinys. Pavyzdžiui, šešiakampio tinklelio šiaurė yra tarp + y ir -z, todėl kiekvienas žingsnis į šiaurę padidina y 1 ir sumažina z 1.
Kubinės koordinatės yra protingas šešiakampio tinklelio koordinačių sistemos pasirinkimas. Sąlyga yra x + y + z = 0, todėl ji turi būti išsaugota algoritmuose. Ši sąlyga taip pat užtikrina, kad kiekvienam šešiakampiui visada bus kanoninė koordinatė.

Yra daug skirtingų kubelių ir šešiakampių koordinačių sistemų. Kai kuriose iš jų sąlyga skiriasi nuo x + y + z = 0. Aš parodžiau tik vieną iš daugelio sistemų. Taip pat galite sukurti kubines koordinates su x-y, y-z, z-x, kurios turės savo įdomių savybių rinkinį, bet aš jų čia neapžvelgsiu.

Bet jūs galite ginčytis, kad nenorite saugoti 3 koordinačių skaičių, nes nežinote, kaip išsaugoti žemėlapį taip.

Ašinės koordinatės

Ašinė koordinačių sistema, kartais vadinama "trapecijos" koordinačių sistema, yra sudaryta iš dviejų ar trijų koordinačių iš kubinės koordinačių sistemos. Kadangi turime sąlygą x + y + z = 0, trečios koordinatės nereikia. Ašies koordinatės yra naudingos žemėlapiams saugoti ir vartotojui rodyti koordinates. Kaip ir su kubinėmis koordinatėmis, su jomis galite naudoti standartines Dekarto sudėjimo, atimties, daugybos ir dalybos operacijas.

Yra daug kubinių koordinačių sistemų ir daug ašinių. Šioje pamokoje neapžvelgsiu visų derinių. Pasirinksiu du kintamuosius: q (stulpelis) ir r (eilutė). Šio straipsnio diagramose q atitinka x, o r atitinka z, tačiau šis atitikimas yra savavališkas, nes galite pasukti ir pasukti diagramas, gaudami skirtingus atitikmenis.

Šios sistemos pranašumas prieš poslinkio tinklelius yra tai, kad algoritmai yra suprantamesni. Sistemos trūkumas yra tas, kad stačiakampio žemėlapio saugojimas yra šiek tiek keistas; žr. skyrių apie žemėlapių išsaugojimą. Kai kurie algoritmai dar aiškesni kubinėmis koordinatėmis, bet kadangi turime sąlygą x + y + z = 0, galime apskaičiuoti trečiąją numanomą koordinatę ir naudoti ją šiuose algoritmuose. Savo projektuose ašis aš vadinu q, r, s, todėl sąlyga atrodo q + r + s = 0, o prireikus galiu apskaičiuoti s = -q - r.

Ašys

Dauguma žmonių pirmiausia galvoja apie poslinkio koordinates, nes jos yra tokios pat kaip standartinės Dekarto koordinatės, naudojamos kvadratiniams tinkleliams. Deja, viena iš dviejų ašių turi eiti prieš grūdus, ir tai apsunkina reikalus. Kubinės ir ašinės sistemos eina išilgai grūdų ir turi paprastesnius algoritmus, tačiau žemėlapių saugojimas yra šiek tiek sudėtingesnis. Yra ir kita sistema, vadinama „kintamoji“ arba „dviguba“, bet čia jos nenagrinėsime; kai kuriems lengviau dirbti nei kubiniais ar ašiniais.


Poslinkio koordinatės, kubinės ir ašinės

Ašis yra kryptis, kuria didinama atitinkama koordinatė. Statmena ašiai yra linija, kurioje koordinatė išlieka pastovi. Aukščiau pateiktos tinklelio diagramos rodo statmenas linijas.

Koordinačių transformacija

Tikėtina, kad savo projekte naudosite ašines arba poslinkio koordinates, tačiau daugelį algoritmų lengviau išreikšti kubinėmis koordinatėmis. Todėl turime turėti galimybę transformuoti koordinates tarp sistemų.

Ašinės koordinatės yra glaudžiai susijusios su kubinėmis koordinatėmis, todėl transformacija yra paprasta:

# konvertuoti kubas į ašines koordinates q = x r = z # konvertuoti ašines į kubines koordinates x = q z = r y = -x-z
Kode šios dvi funkcijos gali būti parašytos taip:

Funkcija cube_to_hex (h): # ašinis var q = hx var r = hz return Hex (q, r) funkcija hex_to_cube (h): # kubinis var x = hq var z = hr var y = -xz grįžti Kubas (x, y) , z)
Poslinkio koordinatės yra gana sudėtingos:

Gretimi šešiakampiai

Su kokiais šešiais šešiakampiais jis yra greta? Kaip ir galima tikėtis, atsakymas yra lengviausias kubinėmis koordinatėmis, gana paprasta ašinėmis koordinatėmis ir šiek tiek sudėtingesnis poslinkio koordinatėmis. Taip pat gali tekti apskaičiuoti šešis „įstrižainės“ šešiakampius.

Kubinės koordinatės

Perkeliant vieną tarpą šešiakampių koordinatėse, viena iš trijų kubinių koordinačių pasikeičia +1, o kita -1 (suma turi likti lygi 0). Trys galimos koordinatės gali būti pakeistos +1, o likusios dvi – -1. Tai pateikia šešis galimus pakeitimus. Kiekvienas iš jų atitinka vieną iš šešiakampio krypčių. Paprasčiausias ir greičiausias būdas- iš anksto apskaičiuokite pakeitimus ir kompiliavimo metu įdėkite juos į kubo (dx, dy, dz) lentelę:

Variantų kryptys = [Kubas (+1, -1, 0), kubas (+1, 0, -1), kubas (0, +1, -1), kubas (-1, +1, 0), kubas ( -1, 0, +1), Cube (0, -1, +1)] funkcija kubo_kryptis (kryptis): grįžimo krypčių funkcija cube_neighbor (šešioliktainė, kryptis): return cube_add (šešioliktainė, kubo_kryptis (kryptis))

Ašinės koordinatės

Kaip ir anksčiau, pradedame nuo kubo sistemos. Paimkite kubo lentelę (dx, dy, dz) ir konvertuokite į Hex (dq, dr) lentelę:

Variantų kryptys = [šešiolik. (+1, 0), šešiolik. (+1, -1), šešiolik. (0, -1), Hex (-1, 0), Šešiolik. (-1, +1), Hex (0, +1)] funkcija šešiolikta_kryptis (kryptis): grįžimo krypčių funkcija šešioliktainis_kaimynas (šešioliktainis, kryptis): var dir = hex_direction (kryptis) return Hex (hex.q + dir.q, hex.r + dir.r)

Poslinkio koordinatės

Ašines koordinates keičiame priklausomai nuo to, kurioje tinklelio vietoje esame. Jei esame stulpelio / eilutės poslinkyje, taisyklė skiriasi nuo stulpelio / eilutės be poslinkio.

Kaip ir anksčiau, sukuriame skaičių lentelę, kurią reikia pridėti prie stulpelio ir eilutės. Tačiau šį kartą turėsime du masyvus, vieną nelyginiams stulpeliams / eilutėms, o kitą - lyginiams. Pažvelkite į (1,1) aukščiau esančiame tinklelio schemoje ir pastebėkite, kaip keičiasi stulpelis ir eilutė, kai judate kiekviena iš šešių krypčių. Dabar pakartojame procesą (2, 2). Kiekvienos lentelės ir kodas bus skirtingi keturių tipų poslinkio tinkleliai, čia yra atitinkamas kiekvieno tinklelio tipo kodas.

Nelyginis-r
vari kryptys = [[Šeš. (+1, 0), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (-1, +1), Hex (0 ; +1, +1)]] funkcija offset_neighbor (šešioliktainis, kryptis): var parity = šešiolikta.eilutė ir 1 var dir = kryptys, grąžinamos šešioliktainis (hex.col + dir.col, hex.row + dir.row)


Even-r
vari kryptys = [[Šeš. (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, 0), Hex (0, +1), Hex (+1) , +1)], [Šeš. (+1, 0), šešiolik. (0, -1), Šešiolik. (-1, -1), Šešiolik. (-1, 0), Hex (-1, +1), Šešiolik. (0, +1)]] funkcija offset_neighbor (šešioliktainis, kryptis): var parity = šešiolikta.eilutė ir 1 var dir = kryptys, grąžinamos šešioliktainis (hex.col + dir.col, hex.row + dir.row)


Tinklelis lyginėms (LYGINĖS) ir nelyginėms (NEporinėms) eilutėms

Nelyginis-q
vari kryptys = [[Šeš. (+1, 0), šešiolik. (+1, -1), šešiolik. (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (0) ; (0, +1)]] funkcija offset_neighbor (šešioliktainis, kryptis): var parity = hex.col & 1 var dir = directions return Hex (hex.col + dir.col, hex.row + dir.row)


Net-q
vari kryptys = [[Šeš. (+1, +1), Hex (+1, 0), Hex (0, -1), Hex (-1, 0), Hex (-1, +1), Hex (0 , +1)], [Šeš. (+1, 0), šešiolik. (+1, -1), šešiolik. (0, -1), šešiolik. (-1, -1), Šešiolik. (-1, 0), Šeš (0, +1)]] funkcija offset_neighbor (šešioliktainis, kryptis): var parity = hex.col & 1 var dir = directions return Hex (hex.col + dir.col, hex.row + dir.row)


Tinklelis lyginiams (LYGINIAI) ir nelyginiams (ODD) stulpeliams

Įstrižainės

Judant „įstrižainės“ erdvėje šešiakampių koordinatėse viena iš trijų kubinių koordinačių pasikeičia ± 2, o kitos dvi – ∓1 (suma turi likti lygi 0).

Vario įstrižainės = [Kubas (+2, -1, -1), kubas (+1, +1, -2), kubas (-1, +2, -1), kubas (-2, +1, +1) ), Kubas (-1, -1, +2), Kubas (+1, -2, +1)] funkcija cube_diagonal_neighbor (šešioliktainis, kryptis): grįžti kubas_add (šešioliktainis, įstrižainės)
Kaip ir anksčiau, šias koordinates galime konvertuoti į ašines, atmetę vieną iš trijų koordinačių, arba konvertuoti į poslinkio koordinates, apskaičiavę rezultatus.


Atstumai

Kubinės koordinatės

Kubinėje koordinačių sistemoje kiekvienas šešiakampis yra trijų matmenų kubas. Gretimi šešiakampiai šešiakampėje tinklelyje yra 1 tarpo atstumu, o kubo tinklelyje – 2 tarpais. Tai palengvina atstumų skaičiavimą. Kvadratų tinklelyje Manheteno atstumai yra abs (dx) + abs (dy). Kubų tinklelyje Manheteno atstumai yra abs (dx) + abs (dy) + abs (dz). Atstumas šešiakampių tinklelyje yra lygus pusei jų:

Funkcija kubo_atstumas (a, b): grąža (abs (a.x - b.x) + abs (a.y - b.y) + abs (a.z - b.z)) / 2
Šio žymėjimo atitikmuo būtų išreikšti, kad viena iš trijų koordinačių turėtų būti kitų dviejų suma, ir tada gauti ją kaip atstumą. Galite pasirinkti padalijimo formą arba didžiausios vertės formą, parodytą toliau, tačiau jos duoda tą patį rezultatą:

Funkcija cube_distance (a, b): grąžos maks. (abs (a.x - b.x), abs (a.y - b.y), abs (a.z - b.z))
Paveiksle didžiausios vertės paryškintos spalva. Taip pat atkreipkite dėmesį, kad kiekviena spalva reiškia vieną iš šešių „įstrižainės“ krypčių.

GIF


Ašinės koordinatės

Ašinėje sistemoje trečioji koordinatė išreiškiama netiesiogiai. Norėdami apskaičiuoti atstumą, konvertuokime iš ašinio į kubinį:

Funkcija šešioliktainis_atstumas (a, b): var ac = hex_to_cube (a) var bc = hex_to_cube (b) return cube_atstumas (ac, bc)
Jei jūsų atveju kompiliatorius įtraukia hex_to_cube ir cube_distance, tada jis sugeneruos šį kodą:

Funkcija šešioliktainis_atstumas (a, b): grąža (abs (a.q - b.q) + abs (a.q + a.r - b.q - b.r) + abs (a.r - b.r)) / 2
Yra daug skirtingų būdų, kaip įrašyti atstumus tarp šešiakampių ašinėmis koordinatėmis, bet neatsižvelgiant į rašymo būdą tarpas tarp šešiakampių ašinėje sistemoje išgaunamas iš Manheteno atstumo kubinėje sistemoje... Pavyzdžiui, aprašytas „skirtumų skirtumas“ gaunamas rašant a.q + a.r - b.q - b.r kaip a.q - b.q + a.r - b.r ir vietoj pusiausvyros formos kubo_atstumas panaudojant maksimalios reikšmės formą. Jie visi yra panašūs, jei matote ryšį su kubinėmis koordinatėmis.

Poslinkio koordinatės

Kaip ir ašinių koordinačių atveju, poslinkio koordinates konvertuojame į kubines koordinates ir tada naudojame kubinį atstumą.

Funkcija poslinkio_atstumas (a, b): var ac = poslinkis_kubui (a) var bc = poslinkis_kubui (b) return cube_distance (ac, bc)
Daugeliui algoritmų naudosime tą patį modelį: konvertuosime iš šešiakampių į kubus, paleiskite kubinę algoritmo versiją ir konvertuosime kubinius rezultatus į šešioliktaines koordinates (ašines arba poslinkio koordinates).

Brėžti linijas

Kaip nubrėžti liniją nuo vieno šešiakampio iki kito? Aš naudoju tiesinę interpoliaciją linijoms braižyti. Linijos mėginiai imami tolygiai N + 1 taškuose ir apskaičiuojama, kuriuose šešiakampiuose yra šie mėginiai.

GIF


  1. Pirmiausia apskaičiuojame N, kuris bus šešioliktainis atstumas tarp galinių taškų.
  2. Tada tolygiai atrenkame N + 1 taškų tarp taškų A ir B. Naudodami tiesinę interpoliaciją nustatykite, kad i reikšmėms nuo 0 iki N, įskaitant jas, kiekvienas taškas bus A + (B - A) * 1,0 / N * i. Paveiksle šie valdymo taškai pavaizduoti mėlyna spalva. Rezultatas yra slankiojo kablelio koordinatės.
  3. Paverskite kiekvieną valdymo tašką (plūdę) atgal į šešiakampius (int). Algoritmas vadinamas cube_round (žr. toliau).
Sudedant viską, kad nubrėžtumėte liniją nuo A iki B:

Funkcija lerp (a, b, t): // float return a + (b - a) * t funkcija cube_lerp (a, b, t): // šešiakampiams grąžina kubą (lerp (ax, bx, t), lerp (ay, by, t), lerp (az, bz, t)) funkcija cube_linedraw (a, b): var N = kubo_atstumas (a, b) var rezultatai = kiekvienam 0 ≤ i ≤ N: rezultatai.pridėti ( cube_round (cube_lerp (a, b, 1.0 / N * i))) grąžina rezultatus
Pastabos:

  • Kartais cube_lerp grąžina tašką tiksliai kraštinėje tarp dviejų šešiakampių. Tada cube_round jį perkelia į vieną ar kitą pusę. Linijos atrodo geriau judant viena kryptimi. Tai galima padaryti pridedant „epsilon“ šešiakampį kubą (1e-6, 1e-6, -2e-6) prie vieno arba abiejų galinių taškų prieš pradedant kilpą. Tai „nustums“ liniją viena kryptimi, kad ji nepatektų į krašto ribas.
  • DDA linijos algoritmas kvadratų tinklelyje prilygsta N didžiausiam atstumui išilgai kiekvienos ašies. Tą patį darome kubinėje erdvėje, kuri yra analogiška atstumui šešiakampių tinklelyje.
  • Funkcija cube_lerp turėtų grąžinti kubą su plūduriuojančiomis koordinatėmis. Jei programuojate statinio tipo kalba, negalite naudoti kubo tipo. Vietoj to galite apibrėžti FloatCube tipą arba įtraukti funkciją į linijos piešimo kodą, jei nenorite apibrėžti kito tipo.
  • Galite optimizuoti savo kodą įtraukdami į eilutę cube_lerp ir tada apskaičiuodami B.x-A.x, B.x-A.y ir 1.0 / N už ciklo ribų. Daugyba gali būti konvertuojama į kartotinį sumavimą. Rezultatas yra kažkas panašaus į DDA linijos algoritmą.
  • Aš naudoju ašines arba kubines koordinates linijoms braižyti, bet jei norite dirbti su poslinkio koordinatėmis, išmokite.
  • Linijų piešimui yra daugybė variantų. Kartais reikia perdengti. Jie man atsiuntė kodą, kaip šešiakampiuose nubrėžti linijas su dengimu, bet aš į tai dar nežiūrėjau.

Kelionių diapazonas

Koordinačių diapazonas

Kurie šešiakampiai yra N žingsnių atstumu nuo nurodyto šešiakampio centro ir N diapazono?

Priešingą darbą galime atlikti pagal atstumo tarp šešiakampių formulę atstumas = max (abs (dx), abs (dy), abs (dz)). Norint rasti visus šešiakampius N viduje, mums reikia max (abs (dx), abs (dy), abs (dz)) ≤ N. Tai reiškia, kad reikalingos visos trys reikšmės: abs (dx) ≤ N ir abs (dy) ≤ N ir abs (dz) ≤ N. Pašalinus absoliučiąją reikšmę, gauname -N ≤ dx ≤ N ir -N ≤ dy ≤ N ir -N ≤ dz ≤ N. Kode tai bus įdėtas ciklas:

Variklio rezultatai = kiekvienam -N ≤ dx ≤ N: kiekvienam -N ≤ dy ≤ N: kiekvienam -N ≤ dz ≤ N: jei dx + dy + dz = 0: rezultatai.pridėti (kubas_add (centras, kubas (dx) , dy, dz)))
Ši kilpa veiks, bet bus gana neveiksminga. Iš visų dz reikšmių, kurias kartojame cikle, tik viena iš tikrųjų atitinka kubo sąlygą dx + dy + dz = 0. Vietoj to, mes tiesiogiai apskaičiuosime dz reikšmę, kuri tenkina sąlygą:

Variantų rezultatai = kiekvienam -N ≤ dx ≤ N: kiekvienam max (-N, -dx-N) ≤ dy ≤ min (N, -dx + N): var dz = -dx-dy rezultatai.pridėti (cube_add () centras, kubas (dx, dy, dz)))
Šis ciklas vyksta tik pagal reikiamas koordinates. Paveiksle kiekvienas diapazonas yra eilučių pora. Kiekviena eilutė yra nelygybė. Imame visus šešiakampius, kurie tenkina šešias nelygybes.

GIF


Sutampantys diapazonai

Jei reikia rasti šešiakampių, kurie yra keliuose diapazonuose, galite pereiti juos prieš generuodami šešiakampių sąrašą.

Šią problemą galite išspręsti algebros ar geometrijos prasme. Algebriškai kiekviena sritis išreiškiama kaip nelygybės sąlygos forma -N ≤ dx ≤ N, ir mes turime rasti šių sąlygų sankirtą. Geometriškai kiekviena sritis yra kubas trimatėje erdvėje, o trimatėje erdvėje susikirsime du kubus, kad gautume stačiakampį gretasienį trimatėje erdvėje. Tada projektuojame jį atgal į x + y + z = 0 plokštumą, kad gautume šešiakampius. Šį uždavinį išspręsiu algebriškai.

Pirmiausia perrašysime sąlygą -N ≤ dx ≤ N, kad būtų daugiau bendra forma x min ≤ x ≤ x max, ir paimkite x min = centras.x - N ir x max = centras.x + N. Padarykime tą patį su y ir z, kad gautume bendrą kodo vaizdą iš ankstesnės dalies:

Variantų rezultatai = kiekvienam xmin ≤ x ≤ xmax: kiekvienam max (ymin, -x-zmax) ≤ y ≤ min (ymax, -x-zmin): var z = -xy rezultatai.pridėti (Kubas (x, y, z))
Dviejų diapazonų a ≤ x ≤ b ir c ≤ x ≤ d sankirta yra max (a, c) ≤ x ≤ min (b, d). Kadangi šešiakampių plotas išreiškiamas intervalais virš x, y, z, galime atskirai susikirsti kiekvieną iš x, y, z diapazonų ir tada naudoti įdėtą kilpą, kad sukurtume šešiakampių sąrašą sankirtoje. Vienam šešiakampių plotui imame x min = H.x - N ir x max = H.x + N, panašiai ir y ir z. Dviejų šešiakampių sričių sankirtai imame x min = max (H1.x - N, H2.x - N) ir x max = min (H1.x + N, H2.x + N), panašiai ir y ir z. Tas pats modelis veikia trijų ar daugiau regionų sankirtoje.

GIF


Kliūtys

Jei yra kliūčių, lengviausia užpildyti naudojant ribotą atstumą (Breadth First Search). Žemiau esančiame paveikslėlyje apsiribojame keturiais judesiais. Kode pakraščiai [k] yra visų šešiakampių, kuriuos galima pasiekti k žingsniais, masyvas. Su kiekvienu praėjimu per pagrindinę kilpą išplečiame k-1 lygį iki k lygio.

Funkcija cube_reachable (pradžia, judėjimas): var lankėsi = nustatyti () pridėti pradžią prie aplanko var Fringes = fringes.append () kiekvienam 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

Posūkiai

Tam tikram šešiakampiui vektoriui (skirtumui tarp dviejų šešiakampių) gali tekti jį pasukti, kad jis nukreiptų į kitą šešiakampį. Tai lengva padaryti su kubinėmis koordinatėmis, jei laikotės 1/6 apskritimo sukimosi.

Sukant 60° į dešinę kiekviena koordinatė pasislenka viena padėtimi į dešinę:

[x, y, z] iki [-z, -x, -y]
Sukant 60° į kairę kiekviena koordinatė pasislenka viena padėtimi į kairę:

[x, y, z] į [-y, -z, -x]



„Pažaidę“ [pradiniame straipsnyje] su schema, pastebėsite, kad kiekvienas posūkis 60 ° pokyčius pasirašo ir fiziškai „pasuka“ koordinates. Pasukus 120 °, ženklai vėl yra tokie patys. 180° pasukimas keičia ženklus, tačiau koordinatės pasukamos į pradinę padėtį.

Štai visa P padėties pasukimo aplink centrinę C padėtį seka, todėl gaunama nauja R padėtis:

  1. Konvertuokite P ir C pozicijas į kubines koordinates.
  2. Apskaičiuokite vektorių atimant centrą: P_iš_C = P - C = Kubas (P.x - C.x, P.y - C.y, P.z - C.z).
  3. Pasukite P_from_C vektorių, kaip aprašyta aukščiau, ir priskirkite gautą vektorių R_from_C.
  4. Paverskite vektorių atgal į padėtį pridėdami centrą: R = R_iš_C + C = Kubas (R_nuo_C.x + C.x, R_nuo_C.y + C.y, R_iš_C.z + C.z).
  5. Paverskite kubinę padėtį R atgal į norimą koordinačių sistemą.
Yra keletas transformacijos etapų, tačiau kiekvienas iš jų yra gana paprastas. Kai kuriuos iš šių žingsnių galima sutrumpinti apibrėžiant sukimąsi tiesiai ašinėmis koordinatėmis, tačiau šešioliktainiai vektoriai neveikia su poslinkio koordinatėmis, ir aš nežinau, kaip sutrumpinti poslinkio koordinates. Taip pat žiūrėkite stackexchange diskusiją apie kitus sukimosi skaičiavimo būdus.

Žiedai

Paprastas žiedas

Norėdami sužinoti, ar tam tikras šešiakampis priklauso tam tikro spindulio žiedui, turite apskaičiuoti atstumą nuo šio šešiakampio iki centro ir sužinoti, ar jis lygus spinduliui. Norėdami gauti visų tokių šešiakampių sąrašą, imkite spindulio žingsnius nuo centro ir vadovaukitės pasuktais vektoriais palei žiedą.

Funkcija cube_ring (centras, spindulys): var results = # šis kodas neveikia, kai spindulys == 0; supranti kodel? var kubas = kubo_pridėjimas (centras, kubo_mastas (kubo_kryptis (4), spindulys)) kiekvienam 0 ≤ i< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
Šiame kode kubas prasideda nuo žiedo, rodomo didele rodykle nuo centro iki diagramos kampo. Pradėti pasirinkau 4 kampą, nes jis atitinka kelią, kuriuo juda mano krypties skaičiai. Jums gali prireikti kitokio pradinio kampo. Kiekviename vidinės kilpos žingsnyje kubas perkelia vieną šešiakampį aplink žiedą. Po 6 * spindulio žingsnių jis baigiasi ten, kur prasidėjo.


Spiraliniai žiedai

Perbraukdami žiedus spirale, galime užpildyti vidines žiedų dalis:

Funkcija cube_spiral (centras, spindulys): var rezultatai = kiekvienam 1 ≤ k ≤ spindulys: rezultatai = rezultatai + kubo_žiedas (centras, k) grąžina rezultatus



Didžiojo šešiakampio plotas yra visų apskritimų suma ir 1 centras. Norėdami apskaičiuoti plotą, naudokite šią formulę.

Per šešiakampius tokiu būdu taip pat galima apskaičiuoti judesio diapazoną (žr. aukščiau).

Matomumo sritis

Kas matoma iš tam tikros padėties tam tikru atstumu ir netrukdo kliūtims? Paprasčiausias būdas apibrėžkite jį – nubrėžkite liniją kiekvienam šešiakampiui tam tikrame diapazone. Jei linija neatitinka sienų, matote šešiakampį. Perkelkite pelės žymeklį virš šešiakampių [pradinio straipsnio diagramoje], kad pamatytumėte šių šešiakampių linijų brėžinį ir sienas, su kuriomis linijos susikerta.

Šis algoritmas gali būti lėtas dideliuose plotuose, tačiau jį lengva įgyvendinti, todėl rekomenduoju pradėti nuo jo.

GIF



Yra daug skirtingi apibrėžimai matomumas. Ar norite matyti kito šešiakampio centrą nuo pradinio centro? Ar norite matyti bet kurią kito šešiakampio dalį nuo pradinio vidurio? Gal kuri nors kito šešiakampio dalis nuo bet kurio pradinio taško? Ar kliūtys mažesnės nei visas šešiakampis? Taikymo sritis yra sudėtingesnė ir įvairesnė sąvoka, nei atrodo iš pirmo žvilgsnio. Pradėkime nuo paprasčiausio algoritmo, bet tikėkimės, kad jis teisingai apskaičiuos atsakymą jūsų projekte. Pasitaiko net tokių atvejų, kai paprastas algoritmas duoda nelogiškus rezultatus.

Ateityje noriu išplėsti šį vadovą. Aš turiu

Ar šalia jūsų yra pieštukas? Pažvelkite į jo skyrių – tai įprastas šešiakampis arba, kaip dar vadinamas, šešiakampis. Tokią formą turi ir riešuto, šešiakampių šachmatų lauko, kai kurių sudėtingų anglies molekulių (pavyzdžiui, grafito), snaigės, korio ir kitų objektų skerspjūvis. Neseniai buvo aptiktas milžiniškas taisyklingas šešiakampis Pažiūrėkime atidžiau.

Taisyklingas šešiakampis yra daugiakampis su šešiomis vienodomis kraštinėmis ir vienodais kampais. Iš mokyklos kurso žinome, kad jis turi šias savybes:

  • Jo kraštinių ilgis atitinka apibrėžtojo apskritimo spindulį. Iš visų šią savybę turi tik įprastas šešiakampis.
  • Kampai yra lygūs vienas kitam, o kiekvieno dydis yra 120 °.
  • Šešiakampio perimetrą galima rasti pagal formulę P = 6 * R, jei žinomas aplink jį esančio apskritimo spindulys, arba P = 4 * √ (3) * r, jei apskritimas įrašytas į jį. R ir r yra apskritimo ir apskritimo spinduliai.
  • Plotas, kurį užima taisyklingas šešiakampis, nustatomas taip: S = (3 * √ (3) * R 2) / 2. Jei spindulys nežinomas, vietoj jo pakeičiame vienos iš kraštinių ilgį - kaip žinote, jis atitinka apibrėžto apskritimo spindulio ilgį.

Įprastas šešiakampis turi vieną įdomią savybę, dėl kurios jis taip plačiai paplitęs gamtoje – jis gali užpildyti bet kokį plokštumos paviršių be persidengimų ir tarpų. Yra net vadinamoji Pal lema, pagal kurią taisyklingas šešiakampis, kurio kraštinė lygi 1 / √ (3), yra universalus dangtelis, tai yra, jis gali uždengti bet kurį vieno vieneto skersmens rinkinį.

Dabar pažiūrėkime, kaip sukurti įprastą šešiakampį. Yra keletas būdų, iš kurių paprasčiausias yra kompasas, pieštukas ir liniuote. Pirmiausia kompasu nupiešiame savavališką apskritimą, tada savavališkoje šio apskritimo vietoje nustatome tašką. Nekeisdami kompaso sprendimo, įdedame antgalį šioje vietoje, pažymime kitą įpjovą ant apskritimo, tęsiame taip, kol gauname visus 6 taškus. Dabar belieka juos sujungti tiesiais segmentais, ir bus gauta norima figūra.

Praktikoje pasitaiko atvejų, kai reikia nupiešti didelį šešiakampį. Pavyzdžiui, ant dviejų lygių gipso kartono lubų, aplink centrinio šviestuvo tvirtinimo tašką, apatiniame lygyje reikia sumontuoti šešias mažas lempas. Bus labai labai sunku rasti tokio dydžio kompasą. Kaip elgtis tokiu atveju? Kaip iš viso nupiešti didelį apskritimą? Labai paprasta. Reikia paimti tvirtą reikiamo ilgio siūlą ir vieną jo galą surišti priešais pieštuką. Dabar belieka susirasti asistentą, kuris norimame taške prispaustų antrą sriegio galą prie lubų. Žinoma, šiuo atveju galimos nedidelės klaidos, tačiau vargu ar jos išvis bus pastebimos nepažįstamam žmogui.

Turinys:

Taisyklingas šešiakampis, dar vadinamas tobulu šešiakampiu, turi šešias lygias puses ir šešis vienodus kampus. Šešiakampį galite nupiešti su matavimo juosta ir transporteriu, grubų šešiakampį su apvaliu daiktu ir liniuote arba dar grubesnį šešiakampį, naudodami tik pieštuką ir šiek tiek intuicijos. Jei norite sužinoti, kaip įvairiais būdais nupiešti šešiakampį, tiesiog skaitykite toliau.

Žingsniai

1 Kompasu nupieškite tobulą šešiakampį

  1. 1 Naudodami kompasą nubrėžkite apskritimą.Įkiškite pieštuką į kompasą. Išplėskite kompasą iki norimo pločio savo apskritimo spinduliu. Spindulys gali būti nuo poros iki dešimties centimetrų pločio. Tada ant popieriaus uždėkite kompasą pieštuku ir nubrėžkite apskritimą.
    • Kartais lengviau pirmiausia nubrėžti pusę apskritimo, o paskui kitą pusę.
  2. 2 Perkelkite kompaso adatą į apskritimo kraštą. Padėkite jį ant apskritimo viršaus. Nekeiskite kompaso kampo ir padėties.
  3. 3 Apskritimo krašte padarykite nedidelį pieštuko ženklą. Padarykite jį aiškiai, bet ne per tamsu, nes vėliau jį ištrinsite. Nepamirškite išlaikyti kampo, kurį nustatėte kompasui.
  4. 4 Perkelkite kompaso adatą į ką tik padarytą ženklą. Uždėkite adatą tiesiai ant žymės.
  5. 5 Padarykite kitą pieštuko ženklą apskritimo krašte. Taigi jūs padarysite antrą ženklą tam tikru atstumu nuo pirmojo ženklo. Toliau judėkite viena kryptimi.
  6. 6 Padarykite dar keturis ženklus tokiu pačiu būdu. Turėtumėte grįžti prie pradinio ženklo. Jei ne, greičiausiai pasikeitė kampas, kuriuo laikėte kompasą ir padarėte žymes. Galbūt taip atsitiko dėl to, kad per stipriai jį suspaudėte arba, atvirkščiai, šiek tiek atlaisvinote.
  7. 7 Sujunkite ženklus su liniuote.Šešios vietos, kur jūsų ženklai susikerta su apskritimo kraštu, yra šešios šešiakampio viršūnės. Naudodami liniuotę ir pieštuką nubrėžkite tiesias linijas, jungiančias gretimus ženklus.
  8. 8 Ištrinkite apskritimą, apskritimo kraštų žymes ir visus kitus jūsų padarytus ženklus. Ištrynus visas konstravimo linijas, jūsų tobulas šešiakampis turėtų būti paruoštas.

2 Apvaliu objektu ir liniuote nubrėžkite grubų šešiakampį

  1. 1 Nupieškite pieštuką aplink stiklo kraštą. Taip nubraižysite apskritimą. Labai svarbu piešti pieštuku, nes vėliau reikės ištrinti visas pagalbines linijas. Taip pat galite apjuosti apverstą stiklinę, stiklainį ar bet ką kitą, kurio pagrindas yra apvalus.
  2. 2 Nubrėžkite horizontalias linijas per savo apskritimo centrą. Galite naudoti liniuotę, knygą, bet ką su tiesiu kraštu. Jei turite liniuotę, galite pažymėti vidurį, apskaičiuodami vertikalų apskritimo ilgį ir padalydami jį per pusę.
  3. 3 Nubrėžkite „X“ per pusę apskritimo, padalydami jį į šešias lygias dalis. Kadangi jau nubrėžėte liniją per apskritimo vidurį, X turi būti platesnis nei aukštis, kad dalys būtų lygios. Įsivaizduokite, kad picą supjaustote į šešias dalis.
  4. 4 Iš kiekvienos dalies padarykite trikampius. Norėdami tai padaryti, liniuote nubrėžkite tiesią liniją po kiekvienos sekcijos lenkta dalimi, sujungdami ją su kitomis dviem linijomis, kad susidarytumėte trikampį. Atlikite tai su likusiomis penkiomis dalimis. Pagalvokite apie tai kaip apie tai, kad aplink picos riekeles padarytumėte plutą.
  5. 5 Ištrinkite visas statybos linijas. Konstrukcijos linijos apima jūsų apskritimą, tris linijas, kurios padalijo apskritimą į dalis, ir kitus ženklus, kuriuos padarėte pakeliui.

3 Vienu pieštuku nupieškite grubų šešiakampį

  1. 1 Nubrėžkite horizontalią liniją. Norėdami nubrėžti tiesią liniją be liniuotės, tiesiog nubrėžkite horizontalios linijos pradžios ir pabaigos taškus. Tada padėkite pieštuką į pradinį tašką ir pratęskite liniją link pabaigos. Šios linijos ilgis gali siekti vos porą centimetrų.
  2. 2 Nubrėžkite dvi įstrižas linijas nuo horizontalios galų. Kairėje pusėje esanti įstrižainė linija turi būti nukreipta į išorę taip pat, kaip ir įstrižainė dešinėje. Galite įsivaizduoti, kad šios linijos sudaro 120 laipsnių kampą horizontalios linijos atžvilgiu.
  3. 3 Nubrėžkite dar dvi horizontalias linijas, kylančias iš pirmųjų horizontalių linijų, nubrėžtų į vidų. Taip bus sukurtas veidrodinis pirmųjų dviejų įstrižainių linijų vaizdas. Apatinė kairioji linija turi atspindėti viršutinę kairiąją, o apatinė dešinė – viršutinės dešinės linijos atspindį. Viršutinės horizontalios linijos turėtų žiūrėti į išorę, o apatinės - į pagrindo vidų.
  4. 4 Nubrėžkite kitą horizontalią liniją, jungiančią apatines dvi įstrižas linijas. Tai nubraižys jūsų šešiakampio pagrindą. Idealiu atveju ši linija turėtų būti lygiagreti viršutinei horizontaliai linijai. Dabar jūs baigėte savo šešiakampį.
  • Pieštukas ir kompasas turi būti aštrūs, kad būtų kuo mažiau klaidų dėl per plačių žymių.
  • Jei kompaso metodu sujungsite kiekvieną ženklą, o ne visus šešis, gausite lygiakraštį trikampį.

Įspėjimai

  • Kompasas yra gana aštrus objektas, būkite su juo labai atsargūs.

Veikimo principas

  • Kiekvienas metodas padės nubrėžti šešiakampį, sudarytą iš šešių lygiakraščių trikampių, kurių spindulys lygus visų kraštinių ilgiui. Šeši nubrėžti spinduliai yra vienodo ilgio, o visos šešiakampiui sukurti skirtos linijos taip pat yra vienodo ilgio, nes kompaso plotis nepasikeitė. Dėl to, kad šeši trikampiai yra lygiakraščiai, kampai tarp jų viršūnių yra 60 laipsnių.

Ko tau reikia

  • Popierius
  • Pieštukas
  • Valdovas
  • Kompasų pora
  • Ką nors galite padėti po popieriumi, kad kompaso adata neslystų.
  • Trintukas

Uždaryti