Sukurkite 6 kvadratą naudodami kompasą. Kaip sukurti įprastą šešiakampį. Apribotas ratas ir konstruojamumas

Daugiakampių tema yra gvildenama mokyklos programoje, tačiau jai neskiriama pakankamai dėmesio. Tuo tarpu tai įdomu, o tai ypač pasakytina apie taisyklingą šešiakampį ar šešiakampį – juk daugelis gamtos objektų turi tokią formą. Tai apima korius ir daug daugiau. Ši forma labai gerai veikia praktikoje.

Apibrėžimas ir konstrukcija

Taisyklingas šešiakampis yra plokštuma, turinti šešias vienodo ilgio kraštines ir vienodų kampų skaičių.

Jei prisimintume daugiakampio kampų sumos formulę

pasirodo, kad šiame paveiksle jis lygus 720°. Na, o kadangi visi figūros kampai yra lygūs, nesunku suskaičiuoti, kad kiekvienas iš jų lygus 120°.

Šešiakampį nupiešti labai paprasta, tereikia kompaso ir liniuotės.

Žingsnis po žingsnio instrukcijos atrodys taip:

Jei norite, galite apsieiti be linijos nubrėžę penkis vienodo spindulio apskritimus.

Taip gauta figūra bus taisyklingas šešiakampis, ir tai galima įrodyti žemiau.

Savybės paprastos ir įdomios

Norint suprasti įprasto šešiakampio savybes, prasminga jį padalyti į šešis trikampius:

Tai padės ateityje aiškiau parodyti jo savybes, iš kurių pagrindinės yra:

  1. apibrėžto apskritimo skersmuo;
  2. įrašyto apskritimo skersmuo;
  3. kvadratas;
  4. perimetras.

Apribotas ratas ir konstruojamumas

Aplink šešiakampį galima apibūdinti apskritimą ir tik vieną. Kadangi ši figūra yra taisyklinga, tai galite padaryti gana paprastai: iš dviejų gretimų kampų viduje nubrėžkite bisektorių. Jie susikerta taške O ir kartu su kraštine tarp jų sudaro trikampį.

Kampai tarp šešiakampio kraštinės ir bisektorių bus 60°, todėl tikrai galime teigti, kad trikampis, pavyzdžiui, AOB, yra lygiašonis. Ir kadangi trečiasis kampas taip pat bus lygus 60°, jis taip pat yra lygiakraštis. Iš to išplaukia, kad atkarpos OA ir OB yra lygios, o tai reiškia, kad jos gali tarnauti kaip apskritimo spindulys.

Po to galite pereiti į kitą pusę, taip pat nubrėžti pusiausvyrą iš kampo taške C. Rezultatas bus dar vienas lygiakraštis trikampis, o kraštinė AB bus bendra abiem, o OS bus kitas spindulys, per kurį eina tas pats apskritimas. Tokių trikampių iš viso bus šeši, ir jie turės bendrą viršūnę taške O. Pasirodo, bus galima apibūdinti apskritimą, o jo yra tik vienas, o jo spindulys lygus kraštinei šešiakampis:

Štai kodėl šią figūrą galima sukonstruoti naudojant kompasą ir liniuotę.

Na, šio apskritimo plotas bus standartinis:

Įrašytas apskritimas

Apskritimo apskritimo centras sutaps su įbrėžto apskritimo centru. Norėdami tai patikrinti, galite nubrėžti statmenus nuo taško O iki šešiakampio kraštų. Tai bus trikampių, sudarančių šešiakampį, aukščiai. O lygiašonio trikampio aukštis yra mediana tos pusės, į kurią jis remiasi, atžvilgiu. Taigi šis aukštis yra ne kas kita, kaip statmenas bisektorius, kuris yra įbrėžto apskritimo spindulys.

Lygiakraščio trikampio aukštis apskaičiuojamas paprastai:

h²=а²-(а/2)²= а²3/4, h=а(√3)/2

O kadangi R=a ir r=h, išeina taip

r=R(√3)/2.

Taigi apskritimas eina per taisyklingo šešiakampio kraštinių centrus.

Jo plotas bus:

S=3πa²/4,

tai yra trys ketvirtadaliai to, kas aprašyta.

Perimetras ir plotas

Su perimetru viskas aišku, tai kraštinių ilgių suma:

P=6a, arba P=6R

Bet plotas bus lygus visų šešių trikampių, į kuriuos galima padalyti šešiakampį, sumai. Kadangi trikampio plotas apskaičiuojamas kaip pusė pagrindo ir aukščio sandaugos, tada:

S=6(а/2)(а(√3)/2)= 6а²(√3)/4=3а²(√3)/2 arba

S=3R²(√3)/2

Norintys apskaičiuoti šį plotą per įbrėžto apskritimo spindulį, gali tai padaryti:

S=3(2r/√3)²(√3)/2=r²(2√3)

Pramoginės konstrukcijos

Trikampį galite sutalpinti į šešiakampį, kurio kraštinės sujungs viršūnes per vieną:

Iš viso jų bus du, o jų sutapimas suteiks Dovydo žvaigždę. Kiekvienas iš šių trikampių yra lygiakraštis. Tai nėra sunku patikrinti. Jei pažvelgsite į AC pusę, ji priklauso dviem trikampiams vienu metu - BAC ir AEC. Jei pirmajame iš jų AB = BC, o kampas tarp jų yra 120°, tai kiekvienas iš likusių bus 30°. Iš to galime padaryti logiškas išvadas:

  1. Aukštis ABC nuo viršūnės B bus lygus pusei šešiakampio kraštinės, nes sin30°=1/2. Norintiems tai patikrinti, galima patarti perskaičiuoti naudojant Pitagoro teoremą – ji čia puikiai tinka.
  2. Kraštinė AC bus lygi dviem įbrėžto apskritimo spinduliams, kurie vėl apskaičiuojami naudojant tą pačią teoremą. Tai yra, AC=2(a(√3)/2)=a(√3).
  3. Trikampiai ABC, CDE ir AEF yra lygūs dviejose kraštinėse ir kampas tarp jų, ir iš to išplaukia, kad kraštinės AC, CE ir EA yra lygios.

Susikryžiavę vienas kitą, trikampiai sudaro naują šešiakampį, kuris taip pat yra taisyklingas. Tai įrodoma paprasčiausiai:

Taigi figūra atitinka taisyklingo šešiakampio charakteristikas – turi šešias vienodas puses ir kampus. Iš trikampių lygybės viršūnėse nesunku nustatyti naujojo šešiakampio kraštinės ilgį:

d=a(√3)/3

Tai taip pat bus aplink jį aprašyto apskritimo spindulys. Įrašytas spindulys bus pusė didelio šešiakampio kraštinės dydžio, o tai buvo įrodyta svarstant trikampį ABC. Jo aukštis yra lygiai pusė kraštinės, todėl antroji pusė yra apskritimo spindulys, įrašytas į mažą šešiakampį:

r₂=a/2

S=(3(√3)/2)(а(√3)/3)²=а(√3)/2

Pasirodo, šešiakampio plotas Dovydo žvaigždės viduje yra tris kartus mažesnis nei didžiojo, kuriame yra įrašyta žvaigždė.

Nuo teorijos iki praktikos

Šešiakampio savybės labai aktyviai naudojamos tiek gamtoje, tiek įvairiose žmogaus veiklos srityse. Visų pirma, tai taikoma varžtams ir veržlėms - pirmojo ir antrojo galvutės yra ne kas kita, kaip įprastas šešiakampis, jei neatsižvelgsite į nuožulnius. Veržliarakčių dydis atitinka įrašyto apskritimo skersmenį – tai yra atstumą tarp priešingų kraštų.

Šešiakampės plytelės taip pat rado savo pritaikymą. Jis yra daug rečiau nei keturkampis, tačiau jį kloti patogiau: viename taške susitinka trys plytelės, o ne keturios. Kompozicijos gali pasirodyti labai įdomios:

Taip pat gaminamos betoninės plytelės grindiniui.

Šešiakampių paplitimas gamtoje yra tiesiog paaiškinamas. Taigi, apskritimus ir rutulius lengviausia tvirtai pritvirtinti plokštumoje, jei jų skersmuo yra vienodas. Dėl šios priežasties koriai turi tokią formą.

Taisyklingo šešiakampio, įbrėžto į apskritimą, konstrukcija. Taisyklingo penkiakampio konstravimas išilgai nurodytos pusės. Perkelkite kompaso adatą į ką tik nubrėžto lanko ir apskritimo susikirtimo tašką. Ši konstrukcija gali būti padaryta naudojant kvadratą ir kompasą. Įprastą šešiakampį galima pastatyti naudojant tiesią briauną ir 30x60° kvadratą. Sukurkite taisyklingo šešiakampio kampų viršūnių taškus.


Į apskritimą įbrėžto lygiašonio trikampio konstrukcija. Tokio trikampio viršūnes galima sukonstruoti naudojant kompasą ir kvadratą su 30 ir 60° kampais arba tik vieną kompasą. Norėdami sukurti 2-3 kraštinę, nustatykite skersinį strypą į punktyrinėmis linijomis parodytą padėtį ir per tašką 2 nubrėžkite tiesią liniją, kuri nustatys 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 sutalpinti įprastą septyniakampį (65 pav.). Padalinkite vertikalų apskritimo skersmenį į septynias lygias dalis. Iš taško 7, kurio spindulys lygus apskritimo D skersmeniui, aprašome lanką, kol jis susikerta su horizontalaus skersmens tęsiniu taške F. Tašką F vadiname daugiakampio ašigaliu.

Taisyklingųjų daugiakampių konstravimo technika paremta galimybe sudaryti atkarpų kampo bisektorius ir statmenas pusiausvyras.

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

Šios vaizdo pamokos tema yra „Taisyklingų daugiakampių kūrimas“. Taip pat dar kartą apibrėžsime taisyklingąjį daugiakampį, pavaizduosime jį grafiškai, o tada dar kartą įsitikinsime, kad įbrėžto ir apibrėžiamo apskritimų centrai aplink tokią figūrą sutaps. Į šį daugiakampį visada galima įrašyti apskritimą, o aplink jį visada galima aprašyti apskritimą. Ankstesnių pamokų metu išsiaiškinome, kad jo kampų pusiausvyros ir statmenų į jo kraštines pusiausvyros vaidina pagrindinį vaidmenį aprašant daugiakampių savybes.

4. Gavome 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žymime tašką A2 tame pačiame apskritime ir sujungiame su tašku A1. Gauname pirmąją šešiakampio pusę. 3. Iš taško O nuleisto daugiakampio kraštinių statmenas pusiau padaliname visas jo kraštines ir visus tarp gretimų jo viršūnių aptverto apskritimo lankus.

Geometrinės konstrukcijos yra viena iš svarbių mokymosi dalių. Adata turi perdurti nubrėžtą liniją. Kuo tiksliau bus sumontuotas kompasas, tuo tikslesnė bus konstrukcija. Nubrėžkite kitą lanką, kertantį apskritimą. Visus šešis lankų susikirtimo taškus nuosekliai sujunkite 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, kol jos susikirs su apskritimu

Rastas viršūnes jungiame nuosekliai 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.). Paveikslėlyje 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 kompasu ir liniuote sudaryti taisyklingus daugiakampius. 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į. Aukščiau pateiktas metodas tinka taisyklingiems daugiakampiams su bet kokiu kraštinių skaičiumi sudaryti.

Taisyklingo šešiakampio, įbrėžto į apskritimą, konstrukcija.Šešiakampio konstrukcija pagrįsta tuo, kad jo kraštinė yra lygi apibrėžto apskritimo spinduliui. Todėl jam sukonstruoti pakanka apskritimą padalinti į šešias lygias dalis ir rastus taškus sujungti vienas su kitu (60 pav., a).

Įprastą šešiakampį galima pastatyti naudojant tiesią briauną ir 30x60° kvadratą. Šiai konstrukcijai atlikti imame horizontalų apskritimo skersmenį kaip 1 ir 4 kampų pusiausvyrą (60 pav., b), sukonstruojame kraštines 1 -6, 4-3, 4-5 ir 7-2, po kurių nubrėžiame 5-6 ir 3-2 puses.

Į apskritimą įbrėžto lygiašonio trikampio konstravimas. Tokio trikampio viršūnes galima sukonstruoti naudojant kompasą ir kvadratą su 30 ir 60° kampais arba tik vieną kompasą.

Panagrinėkime du būdus, kaip sukurti lygiakraštį trikampį, įbrėžtą apskritime.

Pirmas būdas(61 pav.,a) pagrįsta tuo, kad visi trys trikampio 7, 2, 3 kampai turi 60°, o vertikali linija, nubrėžta per tašką 7, yra ir kampo 1 aukštis, ir pusiausvyra. yra 0-1- 2 yra lygus 30°, tada rasti kraštinę

1-2, pakanka sukonstruoti 30° kampą nuo 1 taško ir kraštinės 0-1. Norėdami tai padaryti, sumontuokite skersinį ir kvadratą, kaip parodyta paveikslėlyje, nubrėžkite 1-2 liniją, kuri bus viena iš norimo trikampio kraštinių. Norėdami sukurti 2-3 kraštinę, nustatykite skersinį strypą į punktyrinėmis linijomis parodytą padėtį ir per tašką 2 nubrėžkite tiesią liniją, kuri nustatys trečiąją trikampio viršūnę.

Antras būdas yra pagrįsta tuo, kad jei pastatysite taisyklingą šešiakampį, įrašytą į apskritimą, o tada sujungsite jo viršūnes per vieną, gausite lygiakraštį trikampį.

Norėdami sukurti trikampį (61 pav., b), pažymėkite skersmens viršūnę-tašką 1 ir nubrėžkite diametrinę liniją 1-4. Toliau nuo 4 taško, kurio spindulys lygus D/2, aprašome lanką, kol jis susikerta su apskritimu taškuose 3 ir 2. Gauti taškai bus kitos dvi norimo trikampio viršūnės.

Į apskritimą įbrėžto kvadrato konstravimas. Ši konstrukcija gali būti padaryta naudojant kvadratą ir kompasą.

Pirmasis metodas pagrįstas tuo, kad kvadrato įstrižainės susikerta apibrėžto apskritimo centre ir yra pasvirusios į jo ašis 45° kampu. Remdamiesi tuo, sumontuojame skersinį ir kvadratą su 45° kampais, kaip parodyta pav. 62, a ir pažymėkite taškus 1 ir 3. Toliau per šiuos taškus skersiniu brėžiame horizontalias kvadrato 4-1 ir 3-2 kraštines. Tada tiesiu kraštu nubrėžiame vertikalias kvadrato kraštines 1-2 ir 4-3 išilgai kvadrato kojos.

Antrasis metodas pagrįstas tuo, kad kvadrato viršūnės dalija apskritimo lankus, esančius tarp skersmens galų (62 pav., b). Dviejų tarpusavyje statmenų skersmenų galuose pažymime taškus A, B ir C ir nuo jų spinduliu y aprašome lankus, kol jie susikerta.

Toliau per lankų susikirtimo taškus nubrėžiame pagalbines tiesias linijas, pažymėtas paveiksle ištisinėmis linijomis. Jų susikirtimo su apskritimu taškai nulems 1 ir 3 viršūnes; 4 ir 2. Taip gauto norimo kvadrato viršūnes nuosekliai sujungiame viena su kita.

Taisyklingo penkiakampio, įbrėžto apskritime, konstrukcija.

Kad į apskritimą tilptų taisyklingas penkiakampis (63 pav.), darome tokias konstrukcijas.

Apskritime pažymime tašką 1 ir laikome jį viena iš penkiakampio viršūnių. Atkarpą AO padalijame per pusę. Norėdami tai padaryti, aprašome lanką nuo taško A spinduliu AO, kol jis susikerta su apskritimu taškuose M ir B. Sujungę šiuos taškus tiesia linija, gauname tašką K, kurį tada sujungiame su tašku 1. spindulys lygus atkarpai A7, aprašome lanką nuo taško K, kol jis susikerta su diametrine linija AO taške H. Sujungę tašką 1 su tašku H, gauname penkiakampio kraštinę. Tada, naudojant kompaso sprendinį, lygų atkarpai 1H, aprašant lanką nuo 1 viršūnės iki sankirtos su apskritimu, randame viršūnes 2 ir 5. Iš viršūnių 2 ir 5 tuo pačiu kompaso sprendimu padarę įpjovas, gauname likusią dalį. viršūnės 3 ir 4. Rastus taškus sujungiame nuosekliai vienas su kitu.

Taisyklingo penkiakampio konstravimas išilgai nurodytos pusės.

Norėdami sukonstruoti taisyklingą penkiakampį išilgai duotosios kraštinės (64 pav.), atkarpą AB padalijame į šešias lygias dalis. Iš taškų A ir B, kurių spindulys AB, aprašome lankus, kurių sankirta duos tašką K. Per šį tašką ir 3 padalą tiesėje AB nubrėžiame vertikalią liniją.

Gauname penkiakampio tašką-1 viršūnę. Tada spinduliu, lygiu AB, nuo taško 1 aprašome lanką, kol jis susikerta su lankais, anksčiau nubrėžtais iš taškų A ir B. Lankų susikirtimo taškai nustato penkiakampio viršūnes 2 ir 5. Rastas viršūnes sujungiame serijos tarpusavyje.

Taisyklingo septyniakampio, įbrėžto apskritime, konstrukcija.

Tegu pateiktas D skersmens apskritimas; į jį reikia sutalpinti įprastą septyniakampį (65 pav.). Padalinkite vertikalų apskritimo skersmenį į septynias lygias dalis. Iš taško 7, kurio spindulys lygus apskritimo D skersmeniui, aprašome lanką, kol jis susikerta su horizontalaus skersmens tęsiniu taške F. Tašką F vadiname daugiakampio ašigaliu. Laikydami VII tašką kaip vieną iš septynkampio viršūnių, iš poliaus F brėžiame spindulius per lygias vertikalaus skersmens padalijas, kurių susikirtimas su apskritimu nulems septynkampio VI, V ir IV viršūnes. Norėdami gauti viršūnes / - // - /// iš IV, V ir VI taškų, brėžkite horizontalias linijas, kol jos susikirs su apskritimu. Rastas viršūnes jungiame nuosekliai viena su kita. Septynikampis gali būti sukonstruotas traukiant spindulius iš F ašigalio ir per nelyginius vertikalaus skersmens padalijimus.

Aukščiau pateiktas metodas tinka taisyklingiems daugiakampiams su bet kokiu kraštinių skaičiumi sudaryti.

Apskritimą padalyti į bet kokį lygių dalių skaičių taip pat galima naudojant lentelės duomenis. 2, kuriame pateikiami koeficientai, leidžiantys nustatyti taisyklingų įrašytų daugiakampių kraštinių matmenis.

Geometrinės konstrukcijos yra viena iš pagrindinių mokymo dalių. Jie formuoja erdvinį ir loginį mąstymą, taip pat leidžia suprasti primityvų ir natūralų geometrinį pagrįstumą. Konstrukcijos daromos plokštumoje naudojant kompasą ir liniuotę. Šiais įrankiais galima sukurti daugybę geometrinių figūrų. Tuo pačiu metu daugelis figūrų, kurios atrodo gana sudėtingos, yra sukonstruotos naudojant paprasčiausias taisykles. Pavyzdžiui, kaip sukurti įprastą šešiakampį, galima apibūdinti keliais žodžiais.

Jums reikės

  • Kompasai, liniuotė, pieštukas, popieriaus lapas.

Instrukcijos

1. Nubrėžkite apskritimą. Nustatykite tam tikrą atstumą tarp kompaso kojų. Šis atstumas bus apskritimo spindulys. Spindulį pasirinkite taip, kad būtų gana patogu piešti apskritimą. Apskritimas turi visiškai tilpti ant popieriaus lapo. Per didelis arba per mažas atstumas tarp kompaso kojelių gali lemti jo pasikeitimą piešimo metu. Optimalus atstumas bus toks, kai kampas tarp kompaso kojų yra 15-30 laipsnių.

2. Sukurkite taisyklingo šešiakampio kampų viršūnių taškus. Padėkite kompaso koją, kurioje pritvirtinta adata, bet kuriame apskritimo taške. Adata turi perdurti nubrėžtą liniją. Kuo tiksliau bus sumontuotas kompasas, tuo tikslesnė bus konstrukcija. Nubrėžkite apskritimo lanką taip, kad jis kirstų anksčiau nubrėžtą apskritimą. Perkelkite kompaso adatą į ką tik nubrėžto lanko ir apskritimo susikirtimo tašką. Nubrėžkite kitą lanką, kertantį apskritimą. Vėl perkelkite kompaso adatą į lanko ir apskritimo susikirtimo tašką ir vėl nubrėžkite lanką. Pakartokite šį veiksmą dar tris kartus, judėdami viena kryptimi aplink apskritimą. Kiekvienas turi turėti šešis lankus ir šešis susikirtimo taškus.

3. Sukurkite teigiamą šešiakampį. Laipsniškai sujunkite visus šešis lankų susikirtimo taškus su iš pradžių nubrėžtu apskritimu. Sujunkite taškus tiesiomis linijomis, nubrėžtomis liniuote ir pieštuku. Po šių veiksmų bus gautas teisingas šešiakampis, įrašytas į apskritimą.

Šešiakampis Laikoma, kad daugiakampis turi šešis kampus ir šešias kraštines. Daugiakampiai gali būti išgaubti arba įgaubti. Išgaubto šešiakampio visi vidiniai kampai yra bukūs, o įgaubtas šešiakampis turi vieną ar daugiau smailių kampų. Šešiakampį gana lengva sukonstruoti. Tai atliekama keliais žingsniais.

Jums reikės

  • Pieštukas, popieriaus lapas, liniuotė

Instrukcijos

1. Paimkite popieriaus lapą ir pažymėkite jame 6 taškus, kaip parodyta pav. 1.

2. Pažymėję taškus, paimkite liniuotę ir pieštuką ir jų pagalba žingsnis po žingsnio vieną po kito sujunkite taškus, kaip atrodo pav. 2.

Video tema

Pastaba!
Visų šešiakampio vidinių kampų suma yra 720 laipsnių.

Šešiakampis yra daugiakampis, turintis šešis kampus. Norėdami nupiešti savavališką šešiakampį, turite atlikti 2 veiksmus.

Jums reikės

  • Pieštukas, liniuotė, popieriaus lapas.

Instrukcijos

1. Į ranką reikia paimti pieštuką ir lape pažymėti 6 atsitiktinius taškus. Ateityje šie taškai atliks šešiakampio kampų vaidmenį. (1 pav.)

2. Paimkite liniuotę ir pagal šiuos taškus nubrėžkite 6 atkarpas, kurios susijungtų viena su kita išilgai anksčiau nubrėžtų taškų (2 pav.)

Video tema

Pastaba!
Ypatingas šešiakampio tipas yra teigiamas šešiakampis. Jis vadinamas tokiu, nes visos jo kraštinės ir kampai yra lygūs vienas kitam. Galite aprašyti arba įrašyti apskritimą aplink tokį šešiakampį. Verta pažymėti, kad taškuose, kurie buvo gauti palietus įrašytą apskritimą ir šešiakampio kraštines, teigiamo šešiakampio pusės yra padalintos per pusę.

Naudingas patarimas
Gamtoje teigiami šešiakampiai yra labai populiarūs. Pavyzdžiui, visas koris turi teigiamą šešiakampę formą. Arba grafeno kristalinė gardelė (anglies modifikacija) taip pat turi teigiamo šešiakampio formą.

Kaip sukurti vieną ar kitą kampas- didelis klausimas. Tačiau kai kuriais kampais užduotis yra nepastebimai supaprastinta. Vienas iš šių kampų yra kampas esant 30 laipsnių. Jis lygus?/6, tai yra, skaičius 30 yra daliklis iš 180. Be to, žinomas jo sinusas. Tai padeda jo statybai.

Jums reikės

  • transporteris, kvadratas, kompasas, liniuotė

Instrukcijos

1. Pirma, pažvelkime į ypač primityvią situaciją, kai rankose turite transporterį. Tada tiesią liniją, kurios kampas yra 30 laipsnių, galima lengvai atidėti su atrama.

2. Be transporterio, taip pat yra kampas arkos, kurių vienas kampas lygus 30 laipsnių. Tada kitą kampas kampas kampas bus lygus 60 laipsnių, tai yra, jums reikia vizualiai mažesnio kampas reikiamai tiesei nutiesti.

3. Dabar pereikime prie nereikšmingų būdų, kaip sukurti 30 laipsnių kampą. Kaip žinote, 30 laipsnių kampo sinusas yra lygus 1/2. Norėdami jį sukurti, turime statyti tiesiogiai kampas tionarys kampas nik. Gali būti, kad galime sukurti dvi statmenas tieses. Tačiau 30 laipsnių liestinė yra neracionalus skaičius, todėl galime tik apytiksliai apskaičiuoti santykį tarp kojų (išimtinai, jei nėra skaičiuoklės), ir todėl konstruoti kampas maždaug 30 laipsnių.

4. Tokiu atveju galima padaryti tikslią konstrukciją. Dar kartą sukonstruokime dvi statmenas tiesias linijas, ant kurių kojos bus tiesios kampas nogo kampas nik. Paguldykime vieną tiesią tam tikro ilgio koją BC kompaso atrama (B – tiesi kampas). Po to mes padidinsime ilgį tarp kompaso kojų 2 kartus, o tai yra elementaru. Tokio ilgio spinduliu nubrėžę apskritimą, kurio centras taške C, randame apskritimo susikirtimo tašką su kita tiese. Šis taškas bus tiesiogiai taškas A kampas nogo kampas ABC ir kampas A bus lygus 30 laipsnių.

5. Stačias kampas 30 laipsnių kampu leidžiama ir su apskritimo atrama, taikant kam jis lygus?/6. Sukonstruokime apskritimą, kurio spindulys OB. Pažiūrėkime į teoriją kampas nik, kur OA = OB = R – apskritimo spindulys, kur kampas OAB = 30 laipsnių. Tegu OE yra šio lygiašonio trikampio aukštis kampas nik, taigi ir jo pusiausvyra bei mediana. Tada kampas AOE = 15 laipsnių, o pagal pusės kampo formulę sin(15o) = (sqrt(3)-1)/(2*sqrt(2)). Vadinasi, AE = R*sin(15o). Vadinasi, AB = 2AE = 2R*sin(15o). Statydami BA spindulio apskritimą, kurio centras yra taške B, randame šio apskritimo susikirtimo tašką A su pradiniu. Kampas AOB bus 30 laipsnių.

6. Jei galime kokiu nors būdu nustatyti lankų ilgį, tada, atidėję ilgio lanką?*R/6, taip pat gausime kampas esant 30 laipsnių.

Pastaba!
Turime atsiminti, kad 5 pastraipoje kampą galime sukonstruoti tik apytiksliai, nes skaičiavimuose atsiras neracionalūs skaičiai.

Šešiakampis vadinamas ypatingu daugiakampio atvejis – figūra, sudaryta iš daugumos plokštumos taškų, apribota uždara poliline. Teigiamas šešiakampis (šešiakampis), savo ruožtu, taip pat yra ypatingas atvejis - tai daugiakampis su šešiomis vienodomis kraštinėmis ir vienodais kampais. Ši figūra reikšminga tuo, kad visų jos kraštinių ilgis yra lygus aplink figūrą aprašyto apskritimo spinduliui.

Jums reikės

  • – kompasas;
  • - liniuotė;
  • - pieštukas;
  • -popierius.

Instrukcijos

1. Pasirinkite šešiakampio kraštinės ilgį. Paimkite kompasą ir nustatykite atstumą tarp adatos galo, esančio vienoje iš jos kojelių, ir laido galo, esančio kitoje kojoje, lygų piešiamos figūros kraštinės ilgiui. Norėdami tai padaryti, galite naudoti liniuotę arba pasirinkti atsitiktinį atstumą, jei šis momentas nėra reikšmingas. Jei įmanoma, pritvirtinkite kompaso kojeles varžtu.

2. Naudodami kompasą nubrėžkite apskritimą. Pasirinktas atstumas tarp kojų bus apskritimo spindulys.

3. Padalinkite apskritimą į šešias lygias dalis su taškais. Šie taškai bus šešiakampio kampų viršūnės ir atitinkamai segmentų galai, žymintys jo puses.

4. Padėkite kompaso koją su adata į savavališką tašką, esantį kontūro apskritimo linijoje. Adata turi tinkamai perdurti liniją. Konstrukcijos tikslumas tiesiogiai priklauso nuo kompaso įrengimo tikslumo. Kompasu nubrėžkite lanką taip, kad jis 2 taškuose kirstų pirmiausia nubrėžtą apskritimą.

5. Perkelkite kompaso koją su adata į vieną iš nubrėžto lanko susikirtimo su pradiniu apskritimu taškų. Nubrėžkite kitą lanką, taip pat kertantį apskritimą 2 taškais (vienas iš jų sutaps su ankstesnės kompaso adatos vietos tašku).

6. Tuo pačiu būdu perstatykite kompaso adatą ir dar keturis kartus nubrėžkite lankus. Perkelkite kompaso koją su adata viena kryptimi aplink apskritimą (visada pagal laikrodžio rodyklę arba prieš laikrodžio rodyklę). Dėl to turi būti nustatyti šeši lankų susikirtimo taškai su iš pradžių sukonstruotu apskritimu.

7. Nubrėžkite teigiamą šešiakampį. Pakopomis poromis sujunkite šešis taškus, gautus ankstesniame žingsnyje, su segmentais. Nubrėžkite segmentus pieštuku ir liniuote. Rezultatas bus teisingas šešiakampis. Baigę statyti, galite ištrinti pagalbinius elementus (lankus ir apskritimus).

Pastaba!
Tikslinga pasirinkti atstumą tarp kompaso kojelių, kad kampas tarp jų būtų 15-30 laipsnių, priešingai, darant konstrukcijas šis atstumas gali lengvai pasiklysti.

Statant ar rengiant namo projektavimo planus dažnai tenka statyti kampas, lygus esamam. Pavyzdžiai ir mokyklos geometrijos įgūdžiai padeda.

Instrukcijos

1. Kampą sudaro dvi tiesios linijos, kylančios iš vieno taško. Šis taškas bus vadinamas kampo viršūne, o linijos bus kampo kraštinės.

2. Kampams pavaizduoti naudokite tris raides: vieną viršuje, dvi šonuose. Skambino kampas, pradedant nuo raidės, kuri stovi vienoje pusėje, tada vadinama raidė, kuri stovi viršuje, o po to raidė kitoje pusėje. Naudokite kitus kampų žymėjimo būdus, jei jums patogiau priešais. Kartais įvardijama tik viena raidė, kuri yra viršuje. O kampus leidžiama žymėti graikiškomis raidėmis, tarkim, α, β, γ.

3. Būna situacijų, kai reikia piešti kampas, kad jis būtų lygus nurodytam kampui. Jei konstruojant brėžinį nėra galimybės naudoti transporterį, galite apsieiti tik su liniuote ir kompasu. Galima, tiesioje linijoje, pažymėtoje brėžinyje raidėmis MN, reikia statyti kampas taške K, kad jis būtų lygus kampui B. Tai yra, iš taško K reikia nubrėžti tiesią liniją, sudarytą su linija MN kampas, tas, kuris bus lygus kampui B.

4. Pirmiausia pažymėkite tašką visoje nurodyto kampo pusėje, tarkime, taškus A ir C, tada sujunkite taškus C ir A tiesia linija. Gaukite tre kampas nik ABC.

5. Dabar tiesėje MN pastatykite tą patį tre kampas kad jos viršūnė B būtų tiesėje taške K. Naudokite trikampio sudarymo taisyklę kampas iš trijų pusių. Atidėkite atkarpą KL nuo taško K. Jis turi būti lygus atkarpai BC. Gaukite L tašką.

6. Iš taško K nubrėžkite apskritimą, kurio spindulys lygus atkarpai BA. Iš L nubrėžkite apskritimą, kurio spindulys CA. Sujunkite gautą 2 apskritimų susikirtimo tašką (P) su K. Gaukite tris kampas nik KPL, tas, kuris bus lygus trims kampas ABC knyga. Štai kaip jūs gaunate kampas K. Jis bus lygus kampui B. Kad ši konstrukcija būtų patogesnė ir greitesnė, iš viršūnės B nubrėžkite lygias atkarpas, naudodamiesi vienu kompaso sprendimu, nejudindami kojų, apibūdinkite apskritimą tokiu pačiu spinduliu nuo taško K.

Video tema

Pastaba!
Venkite netyčia pakeisti atstumą tarp kompaso kojelių. Tokiu atveju šešiakampis gali pasirodyti neteisingas.

Naudingas patarimas
Jis turi gabumų daryti konstrukcijas naudojant kompasą su puikiai pagaląstu švinu. Taip konstrukcijos bus ypač tikslios.

Kai kuriuose žaidimuose naudojami šešiakampiai tinkleliai (šešiakampiai tinkleliai), tačiau jie nėra tokie paprasti ar įprasti kaip stačiakampiai tinkleliai. Beveik 20 metų rinkau išteklius apie šešiakampius tinklus ir parašiau šį vadovą apie pačius elegantiškiausius metodus, įgyvendintus paprasčiausiu kodu. Šiame straipsnyje plačiai naudojami Charleso Fu ir Clarko Verbrugge'o vadovai. Aprašysiu skirtingus šešiakampių tinklelių kūrimo būdus, jų ryšius ir dažniausiai naudojamus algoritmus. Daugelis šio straipsnio dalių yra interaktyvios: pasirinkus tinklelio tipą pakeičiamos atitinkamos diagramos, kodas ir tekstai. (Pastaba per.: tai taikoma tik originalui, patariu jį išstudijuoti. Vertime išsaugoma visa originalo informacija, bet be interaktyvumo.).

Straipsnyje pateikti kodo pavyzdžiai 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 (kraštinės) yra vienodo ilgio. Dirbsime tik su įprastais šešiakampiais. Paprastai šešiakampių tinklelių padėtis yra horizontali (smailus viršus) ir vertikali (plokščia viršus).


Šešiakampiai plokščiomis (kairėje) ir aštriomis (dešinėje) viršūnėmis

Šešiakampiai turi 6 veidus. Kiekvienas veidas yra bendras dviem šešiakampiams. Šešiakampiai turi 6 kampinius taškus. Kiekvienas kampinis taškas yra bendras trims šešiakampiams. Daugiau apie centrus, kraštus ir kampinius 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°, dydžio vienetų atstumu nuo centro centro. Kode:

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

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


Šešiakampių kampai plokščiomis ir aštriomis viršūnėmis

Dydis ir vieta

Dabar norime sudėti kelis šešiakampius. Horizontalioje padėtyje šešiakampio aukštis yra aukštis = dydis * 2 . Vertikalus atstumas tarp gretimų šešiakampių yra taškas = aukštis * 3/4.

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

Kai kuriuose žaidimuose šešiakampiams naudojamas pikselių piešinys, kuris tiksliai neatitinka įprastų šešiakampių. Šiame skyriuje aprašytos kampo ir išdėstymo formulės neatitiks tokių šešiakampių matmenų. Likusi straipsnio dalis, kurioje aprašomi šešiakampio tinklo 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. Šešiakampiams yra daug būdų. Rekomenduoju naudoti kubines koordinates kaip pagrindinį vaizdą. Žemėlapiams saugoti ir vartotojui rodyti koordinates reikia naudoti ašines arba poslinkio 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 . Galite pakeisti nelyginius ar lyginius stulpelius / eilutes, todėl horizontalūs ir vertikalūs šešiakampiai turi dvi parinktis.


Horizontalus išdėstymas "nelyginis-r"


Horizontalus išdėstymas „lygus-r“


Vertikalus „nelyginis-q“ išdėstymas


Vertikalus išdėstymas „lyginis-q“

Kubinės koordinatės

Kitas būdas pažvelgti į šešiakampius tinklelius yra matyti juos kaip trys pagrindinės ašys, o ne du, kaip ir kvadratų tinkleliuose. Jie pasižymi elegantiška simetrija.

Paimkime kubelių tinklelį ir iškirpkimeįstrižainė plokštuma, kai x + y + z = 0. Tai keista idėja, tačiau ji padės mums supaprastinti šešiakampio tinklo algoritmus. Visų pirma, galėsime naudoti standartines operacijas iš Dekarto koordinačių: koordinačių sumavimą ir atėmimą, dauginimą ir padalijimą iš skaliarinio dydžio, taip pat atstumus.

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


Šešiakampiai


kubeliais

Kadangi jau turime kvadratinių ir kubinių tinklų algoritmus, kubinių koordinačių naudojimas leidžia pritaikyti šiuos algoritmus šešiakampiams tinklams. Šią sistemą naudosiu daugeliui straipsnio algoritmų. Norėdami naudoti algoritmus su kita koordinačių sistema, aš konvertuoju kubines koordinates, paleidžiu algoritmą ir konvertuoju jas atgal.

Sužinokite, kaip veikia šešiakampio tinklo kubinės koordinatės. Kai pasirenkate šešiakampius, paryškinamos tris ašis atitinkančios kubinės koordinatės.

  1. Kiekviena kubo tinklelio kryptis atitinka linijos ant šešiakampių tinklelio. Pabandykite pasirinkti šešiakampį, kurio z lygus 0, 1, 2, 3, kad pamatytumėte ryšį. Linija pažymėta 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ėje" padidina y 1 ir sumažina z 1.
Kubinės koordinatės yra pagrįstas š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. Parodžiau tik vieną iš daugelio sistemų. Taip pat galite sukurti kubines koordinates su x-y , y-z , z-x , kurios turi savo įdomių savybių rinkinį, bet aš į jas čia nekalbėsiu.

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

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šinės koordinatės yra naudingos žemėlapiams saugoti ir vartotojui rodyti koordinates. Kaip ir naudojant kubines koordinates, galite naudoti standartines Dekarto koordinačių pridėjimo, atėmimo, dauginimo ir padalijimo operacijas.

Yra daug kubinių koordinačių sistemų ir daug ašinių. Šiame vadove neaprašysiu visų derinių. Pasirinksiu du kintamuosius: q (stulpelis) ir r (eilutė). Šio straipsnio diagramose q atitinka x, o r atitinka z, tačiau ši atitiktis yra savavališka, nes galite pasukti ir pasukti diagramas, kad gautumėte skirtingas atitikties.

Šios sistemos pranašumas prieš poslinkio tinklelius yra tai, kad algoritmai yra suprantamesni. Sistemos trūkumas yra tas, kad laikyti stačiakampę kortelę yra šiek tiek keista; ž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

Poslinkio koordinatės yra pirmas dalykas, apie kurį daugelis galvoja, nes jos yra tokios pačios kaip standartinės Dekarto koordinatės, naudojamos kvadratų tinkleliams. Deja, viena iš dviejų ašių turi bėgti prieš grūdus, o tai viską apsunkina. Kubo ir ašies sistemos pereina per atstumą ir turi paprastesnius algoritmus, tačiau kortelės 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 didėja atitinkama koordinatė. Ašiai statmena yra linija, kurioje koordinatė išlieka pastovi. Aukščiau pateiktos tinklelio diagramos rodo statmenas linijas.

Koordinačių transformacija

Tikėtina, kad projektuodami naudosite ašines arba poslinkio koordinates, tačiau daugelis algoritmų yra lengviau išreikšti kubinėmis koordinatėmis. Todėl turime turėti galimybę konvertuoti koordinates tarp sistemų.

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

# 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 = h.x var r = h.z return Hex(q, r) funkcija hex_to_cube(h): # kubinis var x = h.q var z = h.r var y = -x-z return Cube(x, y) , z)
Poslinkio koordinatės yra šiek tiek sudėtingesnės:

Gretimi šešiakampiai

Šalia kokių šešių šešiakampių yra vienas šešiakampis? Kaip ir galima tikėtis, atsakymas yra lengviausias kubinėmis koordinatėmis, gana lengvas ašinėmis koordinatėmis ir šiek tiek sunkesnis poslinkio koordinatėmis. Taip pat gali tekti apskaičiuoti šešis „įstrižainės“ šešiakampius.

Kubinės koordinatės

Perkėlus vieną tarpą šešioliktainėmis koordinatėmis, viena iš trijų kubinių koordinačių pasikeičia į +1, o kita į -1 (suma turi likti 0). Esant +1, gali pasikeisti trys galimos koordinatės, o esant -1 – likusios dvi. Tai pateikia šešis galimus pakeitimus. Kiekvienas iš jų atitinka vieną iš šešiakampio krypčių. Paprasčiausias ir greičiausias būdas yra iš anksto apskaičiuoti pakeitimus ir sudėti juos į kubinę koordinačių lentelę Cube(dx, dy, dz) kompiliavimo metu:

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(hex, direction): return cube_add(hex, cube_direction(direction))

Ašinės koordinatės

Kaip ir anksčiau, mes naudojame kubinę sistemą. Paimkime lentelę Cube(dx, dy, dz) ir paverskime ją Hex(dq, dr) lentele:

Kintamosios kryptys = [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0, +1) ] funkcija šešiolikta_kryptis(kryptis): grįžimo krypčių funkcija šešiolik._kaimynas(šeš., kryptis): var dir = hex_direction(direction) 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 poslinkio stulpelyje / eilutėje, 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 paveikslėlyje ir pastebėkite, kaip keičiasi stulpelis ir eilutė judant kiekviena iš šešių krypčių. Dabar pakartokime procesą (2,2). Lentelės ir kodas skirsis kiekvienam iš keturių poslinkio tinklelių tipų; čia yra atitinkamas kiekvieno tinklelio tipo kodas.

Nelyginis-r
vari kryptys = [ [ Hex (+1, 0), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (-1, +1), Hex (0 , +1) ], [ šešiolik. (+1, 0), šešiolik. (+1, -1), šešiolik. (0, -1), šešiolik. (-1, 0), šešiolik. (0, +1), šešiolik. +1, +1) ] ] funkcija offset_neighbor(hex, direction): var parity = šešiolikta.eilutė & 1 var dir = kryptys, grąžinamos šešioliktainis(šeš. eilė + dir.col, šešiolik. eilė + dir.eilutė)


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


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

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


Net-q
vari kryptys = [ [ Hex (+1, +1), Hex (+1, 0), Hex (0, -1), Hex (-1, 0), Hex (-1, +1), Hex (0 , +1) ], [ šešiolik. (+1, 0), šešiolik. (+1, -1), šešiolik. (0, -1), šešiolik. (-1, -1), šešiolik. (-1, 0), šešiolik. (0, +1) ] ] funkcija offset_neighbor(hex, direction): 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

Judėjimas „įstrižainėje“ šešioliktainėje koordinatėmis pakeičia vieną iš trijų kubinių koordinačių ±2, o kitas dvi – ∓1 (suma turi likti 0).

Kintamosios įstrižainės = [ Kubas (+2, -1, -1), kubas (+1, +1, -2), kubas (-1, +2, -1), kubas (-2, +1, +1 ), Cube(-1, -1, +2), Cube(+1, -2, +1) ] funkcija cube_diagonal_neighbor(hex, direction): return cube_add(hex, diagonals)
Kaip ir anksčiau, šias koordinates galime konvertuoti į ašines koordinates, atmetę vieną iš trijų koordinačių, arba konvertuoti jas į poslinkio koordinates, pirmiausia apskaičiuodami rezultatus.


Atstumai

Kubinės koordinatės

Kubinėje koordinačių sistemoje kiekvienas šešiakampis yra kubas trimatėje erdvėje. Gretimi šešiakampiai šešiakampėje tinklelyje yra išdėstyti 1 atstumu, o kubo tinklelyje - 2 atstumu. Dėl to atstumų skaičiavimas yra paprastas. Kvadratų tinklelyje Manheteno atstumai yra abs(dx) + abs(dy) . Kubų tinklelyje Manheteno atstumai yra abs(dx) + abs(dy) + abs(dz) . Atstumas šešiakampėje 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ų sakyti, kad viena iš trijų koordinačių turi būti kitų dviejų suma, o tada laikyti tai atstumu. Žemiau galite pasirinkti perpus arba didžiausios vertės formą, tačiau jos duoda tą patį rezultatą:

Funkcija kubo_atstumas(a, b): grąža 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. Paverskime ašinį į kubinį, kad apskaičiuotume atstumą:

Funkcija šešiolik._atstumas(a, b): var ac = šešiolik._iki_kubo(a) var bc = šešiolik._iki_kubo(b) return kubo_atstumas(ac, bc)
Jei jūsų atveju kompiliatorius inline (inline) hex_to_cube ir cube_distance, tada jis sugeneruos tokį kodą:

Funkcija šešiolik._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ą atstumas 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 naudojant 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 offset_distance(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šiakampes 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. Linija tolygiai paimama N+1 taškuose ir apskaičiuojama, kuriuose šešiakampiuose yra šie mėginiai.

GIF


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

Funkcija lerp(a, b, t): // plūduriuojant grąžinama a + (b - a) * t funkcija cube_lerp(a, b, t): // šešiakampiams grąžinama Cube(lerp(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)) funkcija cube_linedraw(a, b): var N = kubo_atstumas(a, b) var rezultatai = kiekvienam 0 ≤ i ≤ N: results.append( cube_round(cube_lerp(a, b, 1.0/N * i))) grąžina rezultatus
Pastabos:

  • Yra atvejų, kai cube_lerp grąžina tašką, kuris yra tiksliai kraštinėje tarp dviejų šešiakampių. Tada cube_round perkelia jį viena ar kita kryptimi. Linijos atrodo geriau, jei jos perkeliamos 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 neatsitrenktų į kraštus.
  • DDA linijos algoritmas kvadratinėse tinklelėse prilygina N didžiausiam atstumui išilgai kiekvienos ašies. Tą patį darome kubinėje erdvėje, kuri yra panaši į atstumą šešiakampėje tinklelyje.
  • Funkcija cube_lerp turėtų grąžinti kubą su plūduriuojančiomis koordinatėmis. Jei programuojate statiškai įvesta kalba, negalėsite 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 kodą naudodami inline cube_lerp ir tada apskaičiuoti B.x-A.x , B.x-A.y ir 1.0/N už ciklo ribų. Daugyba gali būti konvertuojama į kartotinį sumavimą. Rezultatas bus 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, patikrinkite .
  • Linijų piešimui yra daugybė variantų. Kartais reikia „perdengti“. Man buvo atsiųstas kodas, skirtas brėžti itin padengtas linijas šešiakampiuose, bet aš į jį dar nežiūrėjau.

Judantis diapazonas

Koordinačių diapazonas

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

Atvirkščiai galime padaryti iš atstumo tarp šešiakampių formulės atstumas = max(abs(dx), abs(dy), abs(dz)) . Norint rasti visus šešiakampius N viduje, 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.append(cube_add(centras, Kubas(dx) , dy, dz)))
Šis ciklas veiks, bet bus gana neefektyvus. Iš visų dz reikšmių, kurias perkeliame, tik viena iš tikrųjų atitinka kubo sąlygą dx + dy + dz = 0. Vietoj to, mes tiesiogiai apskaičiuosime dz reikšmę, atitinkančią sąlygą:

Rezultatų kitimas = kiekvienam -N ≤ dx ≤ N: kiekvienam max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy rezultatai.append(cube_add( centras, kubas(dx, dy, dz)))
Šis ciklas eina tik pagal reikalingas 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, prieš generuodami šešiakampių sąrašą galite juos susikirsti.

Galite spręsti šią problemą algebros ar geometrijos požiūriu. Algebriškai kiekviena sritis išreiškiama kaip -N ≤ dx ≤ N formos nelygybės sąlygos, ir turime rasti šių sąlygų sankirtą. Geometriškai kiekviena sritis yra kubas 3D erdvėje, o mes susikirsime du kubus 3D erdvėje, kad gautume kuboidą 3D 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šome sąlygą -N ≤ dx ≤ N bendresne forma x min ≤ x ≤ x max ir imkime x min = centras.x - N ir x max = centras.x + N . Padarykime tą patį su y ir z, gaudami bendrą kodo formą iš ankstesnio skyriaus:

Rezultatų kitimas = kiekvienam xmin ≤ x ≤ xmax: kiekvienam max(ymin, -x-zmax) ≤ y ≤ min(ymax, -x-zmin): var z = -x-y rezultatai.append(Cube(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 susikirsti kiekvieną diapazoną x, y, z atskirai ir tada naudoti įdėtą kilpą, kad sukurtume šešiakampių sankirtoje sąrašą. 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 sričių sankirtoje.

GIF


Kliūtys

Jei yra kliūčių, paprasčiausias būdas yra užpildyti atstumo apribojimą (ieška pagal plotį). Žemiau esančiame paveikslėlyje apsiribojame keturiais judesiais. Kode Fringes[k] yra visų šešiakampių masyvas, kurį galima pasiekti k žingsniais. Kiekvieną kartą pereidami per pagrindinę kilpą, išplečiame k-1 lygį k lygiu.

Funkcija cube_reachable(pradžia, judėjimas): var visited = set() 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

Atsižvelgiant į šešiakampį vektorių (skirtumą tarp dviejų šešiakampių), mums gali tekti pasukti jį taip, kad jis nukreiptų į kitą šešiakampį. Tai lengva padaryti naudojant kubines koordinates, jei laikotės 1/6 apskritimo sukimosi.

Pasukus 60° į dešinę kiekviena koordinatė perkeliama viena padėtimi į dešinę:

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

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



„Pažaidę“ [pradiniame straipsnyje] su diagrama, galite pamatyti, kad kiekvienas pasukimas yra 60 ° pokyčius pažymi ir fiziškai „pasuka“ koordinates. Pasukus 120°, ženklai vėl tampa tokie patys. 180° pasukimas keičia ženklus, bet koordinatės grįžta į pradinę padėtį.

Čia yra visa P padėties sukimosi aplink centrinę padėtį C seka, todėl atsiranda nauja padėtis R:

  1. Konvertuokite P ir C pozicijas į kubines koordinates.
  2. Vektoriaus apskaičiavimas atimant centrą: P_iš_C = P - C = Kubas(P.x - C.x, P.y - C.y, P.z - C.z) .
  3. Pasukite vektorių P_from_C, kaip aprašyta aukščiau, ir priskirkite galutinį vektorių pavadinimą R_from_C.
  4. Vektoriaus konvertavimas atgal į padėtį pridedant centrą: R = R_iš_C + C = Kubas(R_iš_C.x + C.x, R_iš_C.y + C.y, R_iš_C.z + C.z) .
  5. Paverčia 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 diskusiją apie stackexchange ir sužinokite apie kitus rotacijos 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 išsiaiškinti, ar jis lygus spinduliui. Norėdami gauti visų tokių šešiakampių sąrašą, turite žengti spindulio žingsnius nuo centro, o tada sekti pasuktus vektorius palei žiedą.

Funkcija cube_ring(centras, spindulys): var results = # šis kodas neveikia spinduliui == 0; supranti kodel? var kubas = kubas_pridėti(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, pavaizduoto 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 etape kubas perkelia vieną šešiakampį aplink žiedą. Po 6 * spindulio žingsnių jis atsiduria ten, kur ir pradėjo.


Spiraliniai žiedai

Eidami per žiedus spiraliniu būdu, 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



Didelio šešiakampio plotas yra visų apskritimų suma plius 1 centrui. Norėdami apskaičiuoti plotą, naudokite šią formulę.

Tokiu būdu kertant šešiakampius, galima apskaičiuoti ir judėjimo diapazoną (žr. aukščiau).

Matomumo sritis

Kas matoma iš tam tikros padėties tam tikru atstumu ir nėra užblokuota kliūčių? Paprasčiausias būdas tai nustatyti – nubrėžti liniją kiekvienam šešiakampiui tam tikrame diapazone. Jei linija neatitinka sienų, matote šešiakampį. Perkelkite pelės žymeklį virš šešiakampių [pradiniame straipsnyje pateiktoje diagramoje], kad pamatytumėte, kaip linijos brėžiamos prie šių šešiakampių ir sienų, su kuriomis jos 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 skirtingų matomumo apibrėžimų. Ar norite matyti kito šešiakampio centrą nuo pradinio centro? Ar norite pamatyti bet kurią kito šešiakampio dalį nuo pradinio centro? Gal kuri nors kito šešiakampio dalis iš bet kurio pradinio taško? Kliūtys, trukdančios matyti vaizdą, yra 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, tačiau tikėkitės, kad jis tikrai teisingai apskaičiuos atsakymą jūsų projekte. Yra net atvejų, kai paprastas algoritmas duoda nelogiškus rezultatus.

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



Atsitiktiniai straipsniai

Aukštyn