Schody.  Vstupní skupina.  Materiály.  Dveře.  Hrady a zámky  Design

Schody. Vstupní skupina. Materiály. Dveře. Hrady a zámky Design

» Jak nakreslit šestiúhelník se stejnými stranami. Konstrukce pravidelného šestiúhelníku - jak nakreslit šestiúhelník. Obvod a plocha

Jak nakreslit šestiúhelník se stejnými stranami. Konstrukce pravidelného šestiúhelníku - jak nakreslit šestiúhelník. Obvod a plocha

Konstrukce pravidelného šestiúhelníku vepsaného do kruhu. Konstrukce šestiúhelníku je založena na tom, že jeho strana je rovna poloměru kružnice opsané. K sestrojení tedy stačí kružnici rozdělit na šest stejných částí a nalezené body vzájemně spojit (obr. 60, a).

Pravidelný šestiúhelník lze postavit pomocí rovné hrany a čtverce 30X60°. K provedení této konstrukce vezmeme vodorovný průměr kruhu jako sečnu úhlů 1 a 4 (obr. 60, b), sestrojíme strany 1-6, 4-3, 4-5 a 7-2, po kterých nakreslíme strany 5-6 a 3-2.

Sestrojení rovnostranného trojúhelníku vepsaného do kruhu. Vrcholy takového trojúhelníku lze sestrojit pomocí kružítka a čtverce s úhly 30 a 60° nebo jen jednoho kružítka.

Uvažujme dva způsoby, jak sestrojit rovnostranný trojúhelník vepsaný do kruhu.

První způsob(Obr. 61,a) vychází ze skutečnosti, že všechny tři úhly trojúhelníku 7, 2, 3 obsahují 60° a svislá čára vedená bodem 7 je jak výška, tak sečna úhlu 1. Protože úhel je 0-1-2 se rovná 30°, pak najděte stranu

1-2 stačí z bodu 1 a strany 0-1 sestrojit úhel 30°. Chcete-li to provést, nainstalujte příčku a čtverec, jak je znázorněno na obrázku, nakreslete čáru 1-2, která bude jednou ze stran požadovaného trojúhelníku. Chcete-li sestrojit stranu 2-3, nastavte příčku do polohy znázorněné přerušovanými čarami a nakreslete přímku bodem 2, která určí třetí vrchol trojúhelníku.

Druhý způsob je založen na tom, že pokud postavíte pravidelný šestiúhelník vepsaný do kruhu a pak jeho vrcholy jedním propojíte, dostanete rovnostranný trojúhelník.

Chcete-li sestrojit trojúhelník (obr. 61, b), označte vrcholový bod 1 na průměru a nakreslete diametrální čáru 1-4. Dále z bodu 4 s poloměrem rovným D/2 opíšeme oblouk, dokud se neprotne s kružnicí v bodech 3 a 2. Výsledné body budou další dva vrcholy požadovaného trojúhelníku.

Konstrukce čtverce vepsaného do kruhu. Tuto konstrukci lze provést pomocí čtverce a kompasu.

První způsob je založen na tom, že úhlopříčky čtverce se protínají ve středu kružnice opsané a jsou skloněny k jejím osám pod úhlem 45°. Na základě toho nainstalujeme příčku a čtverec s úhly 45°, jak je znázorněno na obr. 62, a a označte body 1 a 3. Dále těmito body nakreslíme vodorovné strany čtverce 4-1 a 3-2 pomocí příčky. Poté pomocí rovné hrany nakreslíme svislé strany čtverce 1-2 a 4-3 podél nohy čtverce.

Druhá metoda je založena na skutečnosti, že vrcholy čtverce půlí oblouky kružnice uzavřené mezi konci průměru (obr. 62, b). Na koncích dvou na sebe kolmých průměrů označíme body A, B a C a z nich o poloměru y opíšeme oblouky, dokud se vzájemně neprotnou.

Dále přes průsečíky oblouků nakreslíme pomocné přímky, označené na obrázku plnými čarami. Body jejich průsečíku s kružnicí určí vrcholy 1 a 3; 4 a 2. Takto získané vrcholy požadovaného čtverce spojíme do série.

Konstrukce pravidelného pětiúhelníku vepsaného do kruhu.

Aby se pravidelný pětiúhelník vešel do kruhu (obr. 63), provedeme následující konstrukce.

Na kružnici označíme bod 1 a vezmeme jej jako jeden z vrcholů pětiúhelníku. Segment AO rozdělíme na polovinu. K tomu opíšeme oblouk z bodu A o poloměru AO, dokud se neprotne s kružnicí v bodech M a B. Spojením těchto bodů přímkou ​​dostaneme bod K, který pak spojíme s bodem 1. S poloměr rovný úsečce A7, opíšeme oblouk z bodu K, dokud se neprotne s diametrální přímkou ​​AO ​​v bodě H. Spojením bodu 1 s bodem H získáme stranu pětiúhelníku. Potom pomocí řešení kružítka rovnajícího se segmentu 1H, popisujícího oblouk od vrcholu 1 k průsečíku s kružnicí, najdeme vrcholy 2 a 5. Po vytvoření zářezů z vrcholů 2 a 5 stejným řešením kružítka získáme zbývající vrcholy 3 a 4. Nalezené body spojujeme postupně mezi sebou.

Sestrojení pravidelného pětiúhelníku podél dané strany.

Abychom sestrojili pravidelný pětiúhelník podél dané strany (obr. 64), rozdělíme úsečku AB na šest stejných částí. Z bodů A a B o poloměru AB opíšeme oblouky, jejichž průsečík dá bod K. Tímto bodem a dělením 3 na přímce AB vedeme svislou čáru.

Dostaneme bod 1-vrchol pětiúhelníku. Poté o poloměru rovném AB opíšeme z bodu 1 oblouk, dokud se neprotne s oblouky dříve nakreslenými z bodů A a B. Průsečíky oblouků určují pětiúhelníkové vrcholy 2 a 5. Nalezené vrcholy spojíme v série mezi sebou.

Konstrukce pravidelného sedmiúhelníku vepsaného do kruhu.

Nechť je dána kružnice o průměru D; je potřeba do něj vměstnat pravidelný sedmiúhelník (obr. 65). Rozdělte svislý průměr kruhu na sedm stejných částí. Z bodu 7 s poloměrem rovným průměru kružnice D opíšeme oblouk, dokud se neprotne s pokračováním vodorovného průměru v bodě F. Bod F nazýváme pólem mnohoúhelníku. Vezmeme-li bod VII jako jeden z vrcholů sedmiúhelníku, nakreslíme paprsky z pólu F přes sudé dílky svislého průměru, jejichž průsečík s kružnicí určí vrcholy VI, V a IV sedmiúhelníku. Chcete-li získat vrcholy / - // - /// z bodů IV, V a VI, nakreslete vodorovné čáry, dokud se neprotnou s kružnicí. Nalezené vrcholy spojujeme postupně k sobě. Sedmiúhelník lze sestrojit nakreslením paprsků z pólu F a prostřednictvím lichých dělení svislého průměru.

Výše uvedená metoda je vhodná pro konstrukci pravidelných mnohoúhelníků s libovolným počtem stran.

Rozdělení kruhu na libovolný počet stejných částí lze také provést pomocí údajů v tabulce. 2, který poskytuje koeficienty, které umožňují určit rozměry stran pravidelných vepsaných mnohoúhelníků.

Je tužka blízko tebe? Podívejte se na jeho průřez – je to pravidelný šestiúhelník nebo, jak se také říká, šestiúhelník. Tento tvar má i průřez ořechem, pole šestihranných šachů, některé složité molekuly uhlíku (například grafit), sněhová vločka, plástev a další předměty. Obří pravidelný šestiúhelník byl nedávno objeven v roce Nezdá se vám zvláštní, že příroda ke svým výtvorům tak často využívá struktury právě tohoto tvaru? Pojďme se na to podívat blíže.

Pravidelný šestiúhelník je mnohoúhelník se šesti stejnými stranami a stejnými úhly. Ze školního kurzu víme, že má následující vlastnosti:

  • Délka jeho stran odpovídá poloměru kružnice opsané. Tuto vlastnost má ze všech pouze pravidelný šestiúhelník.
  • Úhly jsou si navzájem rovné a velikost každého z nich je 120°.
  • Obvod šestiúhelníku lze zjistit pomocí vzorce P=6*R, pokud je znám poloměr kružnice, která je kolem něj popsána, nebo P=4*√(3)*r, pokud je do něj kružnice vepsána. R a r jsou poloměry kružnice opsané a vepsané.
  • Plochu, kterou zabírá pravidelný šestiúhelník, určíme takto: S=(3*√(3)*R 2)/2. Pokud je poloměr neznámý, dosaďte délku jedné ze stran - jak známo, odpovídá délce poloměru kružnice opsané.

Pravidelný šestiúhelník má jednu zajímavou vlastnost, díky které se v přírodě tak rozšířil - je schopen vyplnit jakýkoli povrch roviny bez přesahů a mezer. Existuje dokonce tzv. Pal lemma, podle kterého pravidelný šestiúhelník, jehož strana je rovna 1/√(3), je univerzálním krytem, ​​to znamená, že může pokrýt jakoukoli sadu o průměru jedné jednotky. .

Nyní se podívejme na konstrukci pravidelného šestiúhelníku. Existuje několik metod, z nichž nejjednodušší zahrnuje použití kružítka, tužky a pravítka. Nejprve kružítkom narýsujeme libovolnou kružnici, poté uděláme bod na libovolném místě této kružnice. Aniž bychom měnili úhel kružítka, položíme hrot do tohoto bodu, označíme další zářez na kružnici a takto pokračujeme, dokud nezískáme všech 6 bodů. Nyní zbývá pouze spojit je dohromady rovnými segmenty a získáte požadovanou postavu.

V praxi existují případy, kdy potřebujete nakreslit velký šestiúhelník. Například na dvouúrovňový sádrokartonový strop, kolem místa montáže centrálního lustru, musíte na spodní úrovni nainstalovat šest malých lamp. Kompasy této velikosti bude velmi, velmi obtížné najít. Co dělat v tomto případě? Jak vůbec nakreslíte velký kruh? Velmi jednoduché. Musíte vzít silnou nit požadované délky a svázat jeden z jejích konců naproti tužce. Teď už zbývá jen najít pomocníka, který by druhý konec nitě přitiskl ke stropu v požadovaném místě. V tomto případě jsou samozřejmě možné drobné chyby, ale je nepravděpodobné, že by je někdo zvenčí vůbec nezaznamenal.

Konstrukce pravidelného šestiúhelníku vepsaného do kruhu. Sestrojení pravidelného pětiúhelníku podél dané strany. Přesuňte střelku kompasu do průsečíku právě nakresleného oblouku s kružnicí. Tuto konstrukci lze provést pomocí čtverce a kompasu. Pravidelný šestiúhelník lze postavit pomocí rovné hrany a čtverce 30X60°. Sestrojte vrcholové body rohů pravidelného šestiúhelníku.


Konstrukce rovnostranného trojúhelníku vepsaného do kruhu. Vrcholy takového trojúhelníku lze sestrojit pomocí kružítka a čtverce s úhly 30 a 60° nebo jen jednoho kružítka. Chcete-li sestrojit stranu 2-3, nastavte příčku do polohy znázorněné přerušovanými čarami a nakreslete přímku bodem 2, která určí třetí vrchol trojúhelníku.

Metoda 1 ze 3: Nakreslete pomocí kružítka dokonalý šestiúhelník

Na kružnici označíme bod 1 a vezmeme jej jako jeden z vrcholů pětiúhelníku. Nechť je dána kružnice o průměru D; je potřeba do něj vměstnat pravidelný sedmiúhelník (obr. 65). Rozdělte svislý průměr kruhu na sedm stejných částí. Z bodu 7 s poloměrem rovným průměru kružnice D opíšeme oblouk, dokud se neprotne s pokračováním vodorovného průměru v bodě F. Bod F nazýváme pólem mnohoúhelníku.

Technika konstrukce pravidelných mnohoúhelníků je založena na schopnosti konstruovat úhlové osy a kolmé osy segmentů.

První sloupec této tabulky ukazuje počet stran pravidelného vepsaného mnohoúhelníku a druhý sloupec ukazuje koeficienty. Délka strany daného mnohoúhelníku se získá vynásobením poloměru daného kruhu koeficientem odpovídajícím počtu stran tohoto mnohoúhelníku.

Tématem této videolekce je „Konstrukce pravidelných mnohoúhelníků“. Také ještě jednou definujeme pravidelný mnohoúhelník, graficky jej znázorníme a pak se ještě jednou ujistíme, že středy vepsané a opsané kružnice kolem takového obrazce budou shodné. Do tohoto mnohoúhelníku lze vždy vepsat kruh a kolem něj lze vždy popsat kruh. V průběhu předchozích lekcí jsme zjistili, že základní roli při popisu vlastností mnohoúhelníků hrají osy jeho úhlů a osy kolmiček k jeho stranám.

4. Získali jsme požadovaný pravidelný trojúhelník ABC. Problém je vyřešen. 3. Po přiložení jednoho ramene kružítka do libovolného bodu A1 na kružnici pomocí druhého ramene označíme bod A2 na stejném kruhu a spojíme jej s bodem A1. Získáme první stranu šestiúhelníku. 3. Pomocí os kolmiček na strany mnohoúhelníku spadlého z bodu O rozdělíme všechny jeho strany a všechny oblouky kružnice uzavřené mezi jeho sousedními vrcholy na polovinu.

Geometrické konstrukce jsou jednou z důležitých součástí učení. Jehla by měla propíchnout nakreslenou čáru. Čím přesněji je kompas instalován, tím přesnější bude konstrukce. Nakreslete další oblouk protínající kružnici. Důsledně spojte všech šest průsečíků oblouků s původně nakreslenou kružnicí. V tomto případě se šestiúhelník může ukázat jako nesprávný.

Chcete-li získat vrcholy / - // - /// z bodů IV, V a VI, nakreslete vodorovné čáry, dokud se neprotnou s kružnicí

Nalezené vrcholy spojujeme postupně k sobě. Sedmiúhelník lze sestrojit nakreslením paprsků z pólu F a prostřednictvím lichých dělení svislého průměru. Středy obou kružnic se shodují (bod O na obr. 1). Obrázek také ukazuje poloměry opsané (R) a vepsané (r) kružnice.

Konstrukce šestiúhelníku je založena na tom, že jeho strana je rovna poloměru kružnice opsané. V této lekci se podíváme na způsoby, jak sestavit pravidelné mnohoúhelníky pomocí kružítka a pravítka. Druhý způsob je založen na tom, že když postavíte pravidelný šestiúhelník vepsaný do kruhu a pak jeho vrcholy jedním propojíte, dostanete rovnostranný trojúhelník. Výše uvedená metoda je vhodná pro konstrukci pravidelných mnohoúhelníků s libovolným počtem stran.

Geometrické konstrukce jsou jednou z hlavních částí tréninku. Formují prostorové a logické myšlení a také nám umožňují pochopit primitivní a přirozenou geometrickou platnost. Konstrukce se dělají na rovině pomocí kružítka a pravítka. Tyto nástroje lze použít ke konstrukci velkého množství geometrických tvarů. Zároveň je mnoho figur, které se zdají být docela obtížné, sestrojeno pomocí nejjednodušších pravidel. Například, jak postavit pravidelný šestiúhelník, lze popsat několika slovy.

budete potřebovat

  • Kompasy, pravítko, tužka, list papíru.

Instrukce

1. Nakreslete kruh. Nastavte určitou vzdálenost mezi nohami kompasu. Tato vzdálenost bude poloměrem kruhu. Poloměr zvolte tak, aby bylo kreslení kruhu docela pohodlné. Kruh se musí celý vejít na list papíru. Příliš velká nebo příliš malá vzdálenost mezi nožičkami kružítka může vést k jeho změně během kreslení. Optimální vzdálenost bude, při které je úhel mezi nohami kompasu 15-30 stupňů.

2. Sestrojte vrcholové body rohů pravidelného šestiúhelníku. Umístěte nohu kompasu, ve které je střelka upevněna, na libovolné místo na kruhu. Jehla by měla propíchnout nakreslenou čáru. Čím přesněji je kompas instalován, tím přesnější bude konstrukce. Nakreslete kruhový oblouk tak, aby protínal dříve nakreslený kruh. Přesuňte střelku kompasu do průsečíku právě nakresleného oblouku s kružnicí. Nakreslete další oblouk protínající kružnici. Znovu přesuňte střelku kompasu do průsečíku oblouku a kružnice a znovu nakreslete oblouk. Opakujte tuto akci ještě třikrát a pohybujte se jedním směrem kolem kruhu. Každý by měl mít šest oblouků a šest průsečíků.

3. Sestrojte kladný šestiúhelník. Postupně spojte všech šest průsečíků oblouků s původně nakreslenou kružnicí. Spojte body rovnými čarami nakreslenými pomocí pravítka a tužky. Po těchto akcích bude získán správný šestiúhelník vepsaný do kruhu.

Šestiúhelník Mnohoúhelník má šest úhlů a šest stran. Polygony mohou být konvexní nebo konkávní. Konvexní šestiúhelník má všechny vnitřní úhly tupé, zatímco konkávní šestiúhelník má jeden nebo více ostrých úhlů. Šestiúhelník je poměrně jednoduchý na stavbu. To se provádí v několika krocích.

budete potřebovat

  • Tužka, list papíru, pravítko

Instrukce

1. Vezměte list papíru a označte na něm přibližně 6 bodů, jak je znázorněno na obr. 1.

2. Po označení bodů vezměte pravítko a tužku a s jejich pomocí postupně jeden po druhém spojujte body tak, jak to vypadá na obr. 2.

Video k tématu

Věnovat pozornost!
Součet všech vnitřních úhlů šestiúhelníku je 720 stupňů.

Šestiúhelník je mnohoúhelník, který má šest úhlů. Chcete-li nakreslit libovolný šestiúhelník, musíte každý udělat 2 kroky.

budete potřebovat

  • Tužka, pravítko, list papíru.

Instrukce

1. Musíte vzít tužku do ruky a označit 6 náhodných bodů na listu. V budoucnu budou tyto body hrát roli rohů v šestiúhelníku. (obr.1)

2. Vezměte pravítko a na základě těchto bodů nakreslete 6 segmentů, které by se k sobě připojily podél dříve nakreslených bodů (obr. 2)

Video k tématu

Věnovat pozornost!
Zvláštním typem šestiúhelníku je kladný šestiúhelník. Říká se tomu tak, protože všechny jeho strany a úhly jsou si navzájem rovné. Kolem takového šestiúhelníku můžete popsat nebo vepsat kruh. Stojí za zmínku, že v bodech, které byly získány dotykem vepsané kružnice a stran šestiúhelníku, jsou strany kladného šestiúhelníku rozděleny na polovinu.

Užitečná rada
V přírodě jsou kladné šestiúhelníky velmi oblíbené. Celá voština má například pozitivní šestiúhelníkový tvar. Nebo krystalová mřížka grafenu (uhlíková modifikace) má také tvar kladného šestiúhelníku.

Jak postavit jedno nebo druhé roh- velká otázka. Ale pro některé úhly je úkol neviditelně zjednodušený. Jedním z těchto úhlů je roh při 30 stupních. Je rovno?/6, to znamená, že číslo 30 je dělitel 180. Navíc je znám jeho sinus. To pomáhá při jeho konstrukci.

budete potřebovat

  • úhloměr, čtverec, kružítko, pravítko

Instrukce

1. Nejprve se podívejme na obzvláště primitivní situaci, kdy máte v rukou úhloměr. Pak lze snadno vyčlenit přímku pod úhlem 30 stupňů s podporou pro ni.

2. Kromě úhloměru existují také roh oblouky, jejichž jeden z úhlů je roven 30 stupňům. Pak další roh rohúhel se bude rovnat 60 stupňům, to znamená, že potřebujete vizuálně menší roh k sestrojení požadované přímky.

3. Přejděme nyní k netriviálním způsobům konstrukce 30stupňového úhlu. Jak víte, sinus úhlu 30 stupňů se rovná 1/2. Abychom to sestrojili, musíme konstruovat přímo roh tionary roh nik. Je možné, že dokážeme sestrojit dvě na sebe kolmé čáry. Ale tangens 30 stupňů je iracionální číslo, proto můžeme pouze přibližně vypočítat poměr mezi rameny (výhradně pokud neexistuje kalkulačka), a proto sestrojit roh přibližně 30 stupňů.

4. V tomto případě je možné provést přesnou konstrukci. Znovu sestrojme dvě kolmé přímky, na kterých budou nohy umístěny rovně roh nogo roh nika. Položme jednu rovnou nohu BC nějaké délky s oporou o kružítko (B – rovná roh). Poté zvětšíme délku mezi nohami kompasu 2krát, což je základní. Nakreslíme-li kružnici se středem v bodě C o poloměru této délky, najdeme průsečík kružnice s jinou přímkou. Tento bod bude přímo bodem A roh nogo roh ABC a roh A se bude rovnat 30 stupňům.

5. Postavit roh při 30 stupních je povoleno as podporou kruhu aplikovat to, čemu se rovná?/6. Sestrojme kružnici s poloměrem OB. Podívejme se na teorii roh nik, kde OA = OB = R – poloměr kružnice, kde roh OAB = 30 stupňů. Nechť OE je výška tohoto rovnoramenného trojúhelníku roh nik, a v důsledku toho jeho osy a mediánu. Pak roh AOE = 15 stupňů a podle vzorce polovičního úhlu sin(15o) = (sqrt(3)-1)/(2*sqrt(2)). V důsledku toho AE = R*sin(15o). Tedy AB = 2AE = 2R*sin(15o). Sestrojením kružnice o poloměru BA se středem v bodě B najdeme průsečík A této kružnice s počáteční. Úhel AOB bude 30 stupňů.

6. Pokud dokážeme nějakým způsobem určit délku oblouků, pak po vynechání oblouku délky?*R/6 dostaneme také roh při 30 stupních.

Věnovat pozornost!
Musíme si pamatovat, že v odstavci 5 můžeme sestrojit úhel pouze přibližně, protože ve výpočtech se objeví iracionální čísla.

Šestiúhelník nazývaný speciální případ mnohoúhelníku - obrazec tvořený většinou bodů roviny, ohraničený uzavřenou křivkou. Kladný šestiúhelník (šestiúhelník) je zase zvláštní případ - je to mnohoúhelník se šesti stejnými stranami a stejnými úhly. Tento obrazec je významný tím, že délka všech jeho stran je rovna poloměru kružnice popsané kolem obrazce.

budete potřebovat

  • - kompas;
  • - pravítko;
  • - tužka;
  • - list papíru.

Instrukce

1. Vyberte délku strany šestiúhelníku. Vezměte kompas a nastavte vzdálenost mezi koncem jehly na jedné z jejích nohou a koncem tuhy na druhé noze, která se rovná délce strany kreslené figury. Chcete-li to provést, můžete použít pravítko nebo zvolit náhodnou vzdálenost, pokud tento okamžik není významný. Pokud je to možné, zajistěte nohy kompasu šroubem.

2. Nakreslete kružnici pomocí kružítka. Zvolená vzdálenost mezi nohama bude poloměrem kruhu.

3. Rozdělte kruh na šest stejných částí s tečkami. Tyto body budou vrcholy rohů šestiúhelníku a podle toho i konce segmentů představujících jeho strany.

4. Umístěte nohu kompasu s jehlou na libovolný bod umístěný na linii vyznačeného kruhu. Jehla by měla správně propíchnout vlasec. Přesnost konstrukcí přímo závisí na přesnosti instalace kompasu. Nakreslete oblouk pomocí kružítka tak, aby ve 2 bodech protínal kružnici nakreslenou jako první.

5. Přesuňte nožičku kružítka pomocí jehly do jednoho z průsečíků nakresleného oblouku s původní kružnicí. Nakreslete další oblouk, který také protíná kružnici ve 2 bodech (jeden z nich se bude shodovat s bodem předchozího umístění střelky kompasu).

6. Stejným způsobem přeuspořádejte střelku kompasu a nakreslete oblouky ještě čtyřikrát. Pohybujte ramenem kompasu s jehlou v jednom směru kolem kruhu (vždy ve směru nebo proti směru hodinových ručiček). V důsledku toho musí být identifikováno šest průsečíků oblouků s původně vytvořenou kružnicí.

7. Nakreslete kladný šestiúhelník. Postupně ve dvojicích spojte šest bodů získaných v předchozím kroku se segmenty. Nakreslete segmenty pomocí tužky a pravítka. Výsledkem bude správný šestiúhelník. Po dokončení stavby můžete pomocné prvky (oblouky a kružnice) vymazat.

Věnovat pozornost!
Je rozumné zvolit vzdálenost mezi nohami kompasu tak, aby úhel mezi nimi byl 15-30 stupňů, naopak při vytváření konstrukcí se tato vzdálenost může snadno ztratit.

Při stavbě nebo vývoji plánů domácího designu je často nutné stavět roh, rovnající se stávajícímu. Na podporu přicházejí vzorky a školní geometrie.

Instrukce

1. Úhel je tvořen dvěma přímkami vycházejícími z jednoho bodu. Tento bod se bude nazývat vrchol úhlu a přímky budou strany úhlu.

2. K označení rohů použijte tři písmena: jedno nahoře, dvě po stranách. Volal roh, počínaje písmenem, které stojí na jedné straně, pak se nazývá písmeno, které stojí nahoře, a poté písmeno na druhé straně. Použijte jiné metody pro značení rohů, pokud vám to vyhovuje naproti. Občas je pojmenováno pouze jedno písmeno, které se nachází nahoře. A je dovoleno označovat úhly řeckými písmeny, řekněme α, β, γ.

3. Jsou situace, kdy potřebujete kreslit roh, takže se rovná danému úhlu. Pokud při konstrukci výkresu není šance použít úhloměr, vystačíte si pouze s pravítkem a kružítkem. Je možné, na přímce označené na výkrese písmeny MN, je nutné stavět roh v bodě K tak, aby se rovnal úhlu B. To znamená, že z bodu K musíte nakreslit přímku tvořící přímku MN roh, který se bude rovnat úhlu B.

4. Nejprve označte bod na celé straně daného úhlu, řekněme body A a C, poté body C a A spojte přímkou. Získejte tre roh nik ABC.

5. Nyní sestrojte na přímce MN stejné tre roh tak, aby jeho vrchol B byl na přímce v bodě K. Použijte pravidlo pro sestrojení trojúhelníku roh na třech stranách. Odložte segment KL z bodu K. Musí se rovnat segmentu BC. Získejte bod L.

6. Z bodu K nakreslete kružnici s poloměrem rovným segmentu BA. Z L nakreslete kružnici o poloměru CA. Spojte výsledný bod (P) průsečíku 2 kruhů s K. Získejte tři roh nik KPL, ten, který se bude rovnat třem roh Kniha ABC. Takto se dostanete roh K. Bude se rovnat úhlu B. Aby byla tato konstrukce pohodlnější a rychlejší, vytýčte stejné segmenty z vrcholu B pomocí jednoho řešení kompasu, bez pohybu nohou, opište z bodu K kružnici se stejným poloměrem.

Video k tématu

Věnovat pozornost!
Zabraňte náhodné změně vzdálenosti mezi nožičkami kompasu. V tomto případě se šestiúhelník může ukázat jako nesprávný.

Užitečná rada
Má talent na stavbu konstrukcí pomocí kružítka s dokonale nabroušeným tuhou. Takto budou konstrukce obzvláště přesné.

V některých hrách se používají šestiúhelníkové mřížky (šestiúhelníkové mřížky), ale nejsou tak jednoduché nebo běžné jako obdélníkové mřížky. Již téměř 20 let sbírám zdroje o hexových sítích a napsal jsem tuto příručku o nejelegantnějších přístupech implementovaných v nejjednodušším kódu. Tento článek široce využívá průvodce Charlese Fu a Clarka Verbrugge. Popíšu různé způsoby vytváření šestiúhelníkových sítí, jejich vztahy a nejběžnější algoritmy. Mnoho částí tohoto článku je interaktivních: výběrem typu mřížky se změní související diagramy, kód a text. (Pozn. per.: toto platí pouze pro originál, doporučuji si jej prostudovat. V překladu jsou zachovány všechny informace originálu, ale bez interaktivity.).

Příklady kódu v článku jsou napsány v pseudokódu, takže jsou snadněji čitelné a pochopitelné, abyste mohli napsat svou vlastní implementaci.

Geometrie

Šestiúhelníky jsou šestistranné mnohoúhelníky. Pravidelné šestiúhelníky mají všechny strany (hrany) stejně dlouhé. Budeme pracovat pouze s běžnými šestiúhelníky. Šestiúhelníkové sítě obvykle používají vodorovnou (špičatá horní) a svislou (plochá horní) orientaci.


Šestiúhelníky s plochými (vlevo) a ostrými (vpravo) vrcholy

Šestiúhelníky mají 6 ploch. Každá plocha je společná pro dva šestiúhelníky. Šestiúhelníky mají 6 rohových bodů. Každý rohový bod je společný pro tři šestiúhelníky. Více o středech, hranách a rohových bodech si můžete přečíst v mém článku o částech sítě (čtverce, šestiúhelníky a trojúhelníky).

Úhly

V pravidelném šestiúhelníku jsou vnitřní úhly 120°. Existuje šest „klínů“, z nichž každý je rovnostranný trojúhelník s vnitřními úhly 60°. Rohový bod i se nachází ve vzdálenosti (60° * i) + 30°, velikostní jednotky od středu středu. V kódu:

Funkce hex_corner(center, size, i): var angle_deg = 60 * i + 30 var angle_rad = PI / 180 * angle_deg return Point(center.x + size * cos(angle_rad), center.y + size * sin(angle_rad) )
Chcete-li vyplnit šestiúhelník, musíte získat vrcholy mnohoúhelníku od hex_corner(…, 0) do hex_corner(…, 5) . Chcete-li nakreslit obrys šestiúhelníku, musíte použít tyto vrcholy a poté znovu nakreslit čáru v hex_corner(..., 0) .

Rozdíl mezi těmito dvěma orientacemi je v tom, že x a y jsou prohozeny, což vede ke změně úhlů: šestiúhelníky s plochým vrcholem mají úhly 0°, 60°, 120°, 180°, 240°, 300° a špičatý vrchol. šestiúhelníky mají úhly 30°, 90°, 150°, 210°, 270°, 330°.


Rohy šestiúhelníků s plochými a ostrými vrcholy

Velikost a umístění

Nyní chceme umístit několik šestiúhelníků dohromady. Při vodorovné orientaci je výška šestiúhelníku výška = velikost * 2 . Vertikální vzdálenost mezi sousedními šestiúhelníky je vert = výška * 3/4 ​​​​.

Šířka šestiúhelníku šířka = sqrt(3)/2 * výška . Vodorovná vzdálenost mezi sousedními šestiúhelníky je horiz = šířka .

Některé hry používají pro šestiúhelníky pixel art, který se přesně neshoduje s běžnými šestiúhelníky. Vzorce úhlu a umístění popsané v této části nebudou odpovídat rozměrům těchto šestiúhelníků. Zbytek článku popisující algoritmy šestiúhelníkové sítě platí, i když jsou šestiúhelníky mírně natažené nebo zmáčknuté.



Souřadnicové systémy

Začneme sestavovat šestiúhelníky do mřížky. V případě mřížek čtverců existuje pouze jeden zřejmý způsob sestavení. Pro šestiúhelníky existuje mnoho přístupů. Doporučuji použít kubické souřadnice jako primární reprezentaci. Pro uložení map a zobrazení souřadnic uživateli by se měly používat axiální nebo offsetové souřadnice.

Offsetové souřadnice

Nejběžnějším přístupem je odsazení každého následujícího sloupce nebo řádku. Sloupce jsou označeny jako col nebo q. Řádky jsou označeny řádek nebo r . Můžete odsadit liché nebo sudé sloupce/řádky, takže vodorovné a svislé šestiúhelníky mají každý dvě možnosti.


Horizontální uspořádání "liché-r"


Horizontální uspořádání „even-r“


Vertikální uspořádání "liché-q".


Vertikální uspořádání „even-q“

Kubické souřadnice

Dalším způsobem, jak se podívat na šestiúhelníkové mřížky, je vidět je jako tři hlavní osy, ne dva, jako v sítích čtverců. Vyznačují se elegantní symetrií.

Vezmeme mřížku z kostek a vystřihneme to diagonální rovina v x + y + z = 0. To je zvláštní nápad, ale pomůže nám to zjednodušit algoritmy šestiúhelníkové sítě. Zejména budeme moci využívat standardní operace z kartézských souřadnic: sčítání a odečítání souřadnic, násobení a dělení skalární veličinou a také vzdálenosti.

Všimněte si tří hlavních os na mřížce kostek a jejich vztahu k šesti úhlopříčka směry šestiúhelníkové mřížky. Diagonální osy mřížky odpovídají hlavnímu směru šestiúhelníkové mřížky.


Šestiúhelníky


kostky

Protože již máme algoritmy pro čtvercové a krychlové sítě, použití kubických souřadnic nám umožňuje přizpůsobit tyto algoritmy šestiúhelníkovým sítím. Tento systém budu používat pro většinu algoritmů v článku. Chcete-li použít algoritmy s jiným systémem souřadnic, převedu kubické souřadnice, spustím algoritmus a poté je převedu zpět.

Zjistěte, jak fungují kubické souřadnice pro šestiúhelníkovou síť. Když vyberete šestiúhelníky, zvýrazní se kubické souřadnice odpovídající třem osám.

  1. Každý směr mřížky krychle odpovídá linky na mřížce šestiúhelníků. Zkuste vybrat šestiúhelník se z rovným 0, 1, 2, 3, abyste viděli spojení. Linka je označena modře. Zkuste totéž pro x (zelená) a y (fialová).
  2. Každý směr mřížky šestiúhelníku je kombinací dvou směrů mřížky krychle. Například "sever" šestiúhelníkové mřížky leží mezi +y a -z , takže každý krok "severem" zvyšuje y o 1 a snižuje z o 1.
Kubické souřadnice jsou rozumnou volbou pro souřadnicový systém šestiúhelníkového rastru. Podmínka je x + y + z = 0, takže musí být v algoritmech zachována. Podmínka také zajišťuje, že pro každý šestiúhelník bude vždy existovat kanonická souřadnice.

Existuje mnoho různých souřadnicových systémů pro krychle a šestiúhelníky. V některých z nich je podmínka odlišná od x + y + z = 0. Ukázal jsem pouze jeden z mnoha systémů. Můžete také vytvářet kubické souřadnice s x-y , y-z , z-x , které mají svou vlastní sadu zajímavých vlastností, ale nebudu je zde rozebírat.

Ale můžete namítnout, že nechcete ukládat 3 čísla pro souřadnice, protože nevíte, jak mapu takto uložit.

Osové souřadnice

Osový souřadnicový systém, někdy nazývaný "lichoběžníkový" souřadnicový systém, je konstruován ze dvou nebo tří souřadnic z krychlového souřadnicového systému. Protože máme podmínku x + y + z = 0, třetí souřadnice není potřeba. Osové souřadnice jsou užitečné pro ukládání map a zobrazování souřadnic uživateli. Stejně jako u kubických souřadnic můžete použít standardní operace sčítání, odečítání, násobení a dělení kartézských souřadnic.

Existuje mnoho kubických souřadnicových systémů a mnoho axiálních. V této příručce nebudu popisovat všechny kombinace. Vyberu dvě proměnné, q (sloupec) a r (řádek). V diagramech v tomto článku q odpovídá x a r odpovídá z, ale tato korespondence je libovolná, protože diagramy můžete otáčet a otáčet, abyste získali různé korespondence.

Výhodou tohoto systému oproti mřížkám posunutí je, že algoritmy jsou srozumitelnější. Nevýhodou systému je, že ukládání obdélníkové karty je trochu divné; viz část o ukládání map. Některé algoritmy jsou ještě přehlednější v kubických souřadnicích, ale protože máme podmínku x + y + z = 0, můžeme vypočítat třetí implikovanou souřadnici a použít ji v těchto algoritmech. Ve svých projektech nazývám osy q, r, s, takže podmínka vypadá jako q + r + s = 0 a v případě potřeby mohu vypočítat s = -q - r.

Nápravy

Offsetové souřadnice jsou první věcí, na kterou většina lidí myslí, protože jsou stejné jako standardní kartézské souřadnice používané pro sítě čtverců. Bohužel jedna ze dvou os musí běžet proti srsti a to vše komplikuje. Krychlové a osové systémy jdou daleko a mají jednodušší algoritmy, ale ukládání karet je trochu složitější. Existuje další systém nazvaný „střídavý“ nebo „duální“, ale ten zde nebudeme uvažovat; s některými je snazší pracovat než s krychlovým nebo axiálním.


Offsetové souřadnice, kubické a axiální

Osa je směr, ve kterém roste příslušná souřadnice. Kolmá k ose je přímka, na které souřadnice zůstává konstantní. Výše uvedené mřížkové diagramy ukazují kolmé čáry.

Transformace souřadnic

Je pravděpodobné, že ve svém návrhu použijete osové nebo offsetové souřadnice, ale mnoho algoritmů se snadněji vyjadřuje v kubických souřadnicích. Proto musíme být schopni převádět souřadnice mezi systémy.

Osové souřadnice úzce souvisí s kubickými souřadnicemi, takže převod je jednoduchý:

# převést kubické na osové souřadnice q = x r = z # převést osové na kubické souřadnice x = q z = r y = -x-z
V kódu lze tyto dvě funkce zapsat takto:

Funkce cube_to_hex(h): # axiální var q = h.x var r = h.z return Hex(q, r) funkce hex_to_cube(h): # cubic var x = h.q var z = h.r var y = -x-z return Cube(x, y , z)
Offsetové souřadnice jsou o něco složitější:

Sousední šestiúhelníky

Vzhledem k jednomu šestiúhelníku, vedle kterých šesti šestiúhelníků je? Jak byste mohli očekávat, odpověď je nejjednodušší v kubických souřadnicích, docela snadná v osových souřadnicích a trochu obtížnější v souřadnicích posunutí. Možná budete také muset vypočítat šest "diagonálních" šestiúhelníků.

Kubické souřadnice

Posun o jedno pole v hexadecimálních souřadnicích způsobí, že se jedna ze tří kubických souřadnic změní na +1 a druhá na -1 (součet musí zůstat 0). Při +1 se mohou změnit tři možné souřadnice a při -1 zbývající dvě. To nám dává šest možných změn. Každý odpovídá jednomu ze směrů šestiúhelníku. Nejjednodušší a nejrychlejší způsob je předpočítat změny a vložit je do kubické tabulky souřadnic Cube(dx, dy, dz) v době kompilace:

Směry var = [ Krychle (+1, -1, 0), Krychle (+1, 0, -1), Krychle (0, +1, -1), Krychle (-1, +1, 0), Krychle( -1, 0, +1), Cube(0, -1, +1) ] funkce cube_direction(směr): návratové směry funkce cube_neighbor(hex, direction): return cube_add(hex, cube_direction(směr))

Osové souřadnice

Stejně jako dříve použijeme pro začátek kubickou soustavu. Vezmeme tabulku Cube(dx, dy, dz) a převedeme ji na tabulku Hex(dq, dr):

Směry var = [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0, +1) ] funkce hex_direction(směr): návratové směry funkce hex_neighbor(hex, směr): var dir = hex_direction(směr) return Hex(hex.q + dir.q, hex.r + dir.r)

Offsetové souřadnice

V osových souřadnicích provádíme změny podle toho, kde se na mřížce nacházíme. Pokud jsme v odsazeném sloupci/řádku, pak je pravidlo odlišné od případu sloupce/řádku bez odsazení.

Stejně jako předtím vytvoříme tabulku čísel, která je třeba přidat do col a row . Tentokrát však budeme mít dvě pole, jedno pro liché sloupce/řádky a druhé pro sudé. Podívejte se na (1,1) na obrázku mřížkové mapy výše a všimněte si, jak se barva a řádek mění, když se pohybujete v každém ze šesti směrů. Nyní zopakujme postup pro (2,2). Tabulky a kód se budou lišit pro každý ze čtyř typů mřížek posunutí, zde je odpovídající kód pro každý typ mřížky.

Odd-r
směry var = [ [ Hex(+1, 0), Hex(0, -1), Hex(-1, -1), Hex(-1, 0), Hex(-1, +1), Hex(0 , +1) ], [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(0, +1), Hex( +1, +1) ] ] funkce offset_neighbor(hex, direction): var parita = hex.row & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Even-r
směry var = [ [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(0, +1), Hex(+1 , +1) ], [ Hex(+1, 0), Hex(0, -1), Hex(-1, -1), Hex(-1, 0), Hex(-1, +1), Hex (0, +1) ] ] funkce offset_neighbor(hex, direction): var parita = hex.row & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Mřížka pro sudé (SUDÉ) a liché (LICHÉ) řádky

Lichá-q
směry var = [ [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, -1), Hex(-1, 0), Hex(0 , +1) ], [ Hex(+1, +1), Hex(+1, 0), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex (0, +1) ] ] funkce offset_neighbor(hex, směr): var parity = hex.col & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Even-q
směry var = [ [ Hex(+1, +1), Hex(+1, 0), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0 , +1) ], [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, -1), Hex(-1, 0), Hex (0, +1) ] ] funkce offset_neighbor(hex, směr): var parity = hex.col & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Mřížka pro sudé (SUDÉ) a liché (LICHÉ) sloupce

Úhlopříčky

Pohyb v "diagonálním" prostoru v hexadecimálních souřadnicích změní jednu ze tří kubických souřadnic o ±2 a další dvě o ∓1 (součet musí zůstat 0).

Var úhlopříčky = [ Krychle (+2, -1, -1), Krychle (+1, +1, -2), Krychle (-1, +2, -1), Krychle (-2, +1, +1 ), Cube(-1, -1, +2), Cube(+1, -2, +1) ] funkce cube_diagonal_neighbor(hex, direction): return cube_add(hex, diagonals)
Stejně jako dříve můžeme tyto souřadnice převést na osové souřadnice vypuštěním jedné ze tří souřadnic nebo je převést na offsetové souřadnice tak, že nejprve vypočítáme výsledky.


Vzdálenosti

Kubické souřadnice

V kubickém souřadnicovém systému je každý šestiúhelník krychlí v trojrozměrném prostoru. Sousední šestiúhelníky jsou od sebe vzdáleny 1 v hexadecimální mřížce, ale 2 od sebe v mřížce krychle. Díky tomu je výpočet vzdáleností jednoduchý. V síti čtverců jsou manhattanské vzdálenosti abs(dx) + abs(dy) . V mřížce krychlí jsou manhattanské vzdálenosti abs(dx) + abs(dy) + abs(dz) . Vzdálenost v šestiúhelníkové mřížce je rovna polovině z nich:

Funkce cube_distance(a, b): return (abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) / 2
Ekvivalentem tohoto zápisu by bylo říci, že jedna ze tří souřadnic musí být součtem ostatních dvou, a pak to vzít jako vzdálenost. Níže si můžete vybrat formu půlení nebo formu maximální hodnoty, ale výsledek bude stejný:

Funkce cube_distance(a, b): return max(abs(a.x - b.x), abs(a.y - b.y), abs(a.z - b.z))
Na obrázku jsou barevně zvýrazněny maximální hodnoty. Všimněte si také, že každá barva představuje jeden ze šesti "diagonálních" směrů.

GIF


Osové souřadnice

V osovém systému je třetí souřadnice vyjádřena implicitně. Pro výpočet vzdálenosti převedeme z axiální na kubickou:

Funkce hex_distance(a, b): var ac = hex_to_cube(a) var bc = hex_to_cube(b) return cube_distance(ac, bc)
Pokud je ve vašem případě kompilátor inline (inline) hex_to_cube a cube_distance, vygeneruje kód takto:

Funkce hex_distance(a, b): return (abs(a.q - b.q) + abs(a.q + a.r - b.q - b.r) + abs(a.r - b.r)) / 2
Existuje mnoho různých způsobů, jak zapsat vzdálenosti mezi šestiúhelníky v osových souřadnicích, ale bez ohledu na způsob psaní vzdálenost mezi šestiúhelníky v axiálním systému je extrahována ze vzdálenosti Manhattan v krychlovém systému. Například popsaný "rozdíl rozdílů" se získá zápisem a.q + a.r - b.q - b.r jako a.q - b.q + a.r - b.r a použitím tvaru maximální hodnoty namísto tvaru půlení cube_distance . Všechny jsou podobné, pokud vidíte souvislost s kubickými souřadnicemi.

Offsetové souřadnice

Stejně jako u osových souřadnic převedeme souřadnice posunutí na kubické souřadnice a poté použijeme kubickou vzdálenost.

Funkce offset_distance(a, b): var ac = offset_to_cube(a) var bc = offset_to_cube(b) return cube_distance(ac, bc)
Stejný vzor použijeme pro mnoho algoritmů: převedeme z šestiúhelníků na krychle, spustíme kubickou verzi algoritmu a převedeme kubické výsledky na šestiúhelníkové souřadnice (axiální nebo offsetové souřadnice).

Kreslení čar

Jak nakreslit čáru z jednoho šestiúhelníku do druhého? K kreslení čar používám lineární interpolaci. Čára je rovnoměrně vzorkována v N+1 bodech a je vypočítáno, ve kterých šestiúhelnících se tyto vzorky nacházejí.

GIF


  1. Nejprve vypočítáme N, což bude vzdálenost v šestiúhelnících mezi koncovými body.
  2. Poté rovnoměrně navzorkujeme N+1 bodů mezi body A a B. Pomocí lineární interpolace určíme, že pro hodnoty i od 0 do N včetně nich bude každý bod A + (B - A) * 1,0/N *i. Na obrázku jsou tyto kontrolní body znázorněny modře. Výsledkem jsou souřadnice s plovoucí desetinnou čárkou.
  3. Převeďme každý řídicí bod (float) zpět na šestiúhelníky (int). Algoritmus se nazývá cube_round (viz níže).
Dejte vše dohromady a nakreslete čáru od A do B:

Funkce lerp(a, b, t): // pro float return a + (b - a) * t funkce cube_lerp(a, b, t): // pro šestiúhelníky return Cube(lerp(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)) funkce cube_linedraw(a, b): var N = cube_distance(a, b) var results = pro každou 0 ≤ i ≤ N: results.append( cube_round(cube_lerp(a, b, 1.0/N * i))) vrátit výsledky
Poznámky:

  • Existují případy, kdy cube_lerp vrací bod, který je přesně na hraně mezi dvěma šestiúhelníky. Poté jej cube_round přesune jedním nebo druhým směrem. Čáry vypadají lépe, pokud jsou posunuty jedním směrem. To lze provést přidáním "epsilon"-hexagonální krychle (1e-6, 1e-6, -2e-6) do jednoho nebo obou koncových bodů před zahájením smyčky. Tím se čára "postrčí" jedním směrem, takže nenarazí na okraje.
  • Algoritmus čáry DDA ve čtvercových sítích se rovná N maximální vzdálenosti podél každé z os. Totéž děláme v krychlovém prostoru, který je podobný vzdálenosti v šestiúhelníkové síti.
  • Funkce cube_lerp by měla vrátit krychli s plovoucími souřadnicemi. Pokud programujete ve staticky typovaném jazyce, nebudete moci použít typ Cube. Místo toho můžete definovat typ FloatCube nebo vložit funkci do kódu perokresby, pokud nechcete definovat jiný typ.
  • Kód můžete optimalizovat pomocí inline cube_lerp a poté vypočítat B.x-A.x, B.x-A.y a 1.0/N mimo smyčku. Násobení lze převést na opakované sčítání. Výsledkem bude něco jako linkový algoritmus DDA.
  • Pro kreslení čar používám osové nebo kubické souřadnice, ale pokud chcete pracovat s offsetovými souřadnicemi, podívejte se na .
  • Existuje mnoho možností pro kreslení čar. Někdy je nutné "přetřít". Byl mi zaslán kód pro kreslení super pokrytých čar v šestiúhelnících, ale ještě jsem se na to nepodíval.

Pohyblivý rozsah

Rozsah souřadnic

Je-li daný střed šestiúhelníku a rozsah N, které šestiúhelníky jsou v rámci N kroků od něj?

Můžeme udělat inverzní vzorec pro vzdálenost mezi šestiúhelníky vzdálenost = max(abs(dx), abs(dy), abs(dz)) . K nalezení všech šestiúhelníků v N potřebujeme max(abs(dx), abs(dy), abs(dz)) ≤ N . To znamená, že jsou potřeba všechny tři hodnoty: abs(dx) ≤ N a abs(dy) ≤ N a abs(dz) ≤ N . Odebráním absolutní hodnoty dostaneme -N ≤ dx ≤ N a -N ≤ dy ≤ N a -N ≤ dz ≤ N . V kódu to bude vnořená smyčka:

Var výsledky = pro každé -N ≤ dx ≤ N: pro každé -N ≤ dy ≤ N: pro každé -N ≤ dz ≤ N: pokud dx + dy + dz = 0: results.append(cube_add(center, Cube(dx) , dy, dz)))
Tento cyklus bude fungovat, ale bude docela neúčinný. Ze všech hodnot dz, kterými procházíme, pouze jedna skutečně splňuje podmínku kostky dx + dy + dz = 0. Místo toho přímo vypočítáme hodnotu dz splňující podmínku:

Var výsledky = pro každé -N ≤ dx ≤ N: pro každé max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy results.append(cube_add( střed, krychle (dx, dy, dz)))
Tento cyklus prochází pouze po požadovaných souřadnicích. Na obrázku je každý rozsah dvojice čar. Každý řádek je nerovnost. Vezmeme všechny šestiúhelníky, které splňují šest nerovností.

GIF


Překrývající se rozsahy

Pokud potřebujete najít šestiúhelníky, které jsou ve více rozsazích, můžete před vygenerováním seznamu šestiúhelníků tyto rozsahy protnout.

K tomuto problému můžete přistupovat z hlediska algebry nebo geometrie. Algebraicky je každá oblast vyjádřena jako podmínky nerovnosti ve tvaru -N ≤ dx ≤ N a my potřebujeme najít průsečík těchto podmínek. Geometricky je každá oblast krychlí ve 3D prostoru a my protneme dvě krychle ve 3D prostoru, abychom získali kvádr ve 3D prostoru. Poté jej promítneme zpět do roviny x + y + z = 0, abychom dostali šestiúhelníky. Tento problém vyřeším algebraicky.

Nejprve přepíšeme podmínku -N ≤ dx ≤ N do obecnějšího tvaru x min ≤ x ≤ x max a vezmeme x min = střed.x - N a x max = střed.x + N . Udělejme totéž pro y a z, výsledkem je obecný tvar kódu z předchozí části:

Var výsledky = pro každé xmin ≤ x ≤ xmax: pro každé max(ymin, -x-zmax) ≤ y ≤ min(ymax, -x-zmin): var z = -x-y results.append(Cube(x, y, z))
Průsečík dvou rozsahů a ≤ x ≤ b a c ≤ x ≤ d je max(a, c) ≤ x ≤ min(b, d) . Vzhledem k tomu, že plocha šestiúhelníků je vyjádřena jako rozsahy přes x, y, z, můžeme každý z rozsahů x, y, z protnout samostatně a pak pomocí vnořené smyčky vygenerovat seznam šestiúhelníků v průsečíku. Pro jednu oblast šestiúhelníků vezmeme x min = H.x - N a x max = H.x + N , podobně pro y a z . Pro průnik dvou šestiúhelníkových oblastí vezmeme x min = max(H1.x - N, H2.x - N) a x max = min(H1.x + N, H2.x + N), podobně pro y a z . Stejný vzor funguje pro průsečík tří nebo více oblastí.

GIF


Překážky

Pokud existují překážky, nejjednodušší je vyplnit omezením vzdálenosti (nejdříve vyhledávání šířky). Na obrázku níže se omezujeme na čtyři tahy. V kódu je fringes[k] pole všech šestiúhelníků, kterých lze dosáhnout v k krocích. Pokaždé, když projdeme hlavní smyčkou, rozšíříme úroveň k-1 o úroveň k.

Funkce cube_reachable(start, pohyb): var visit = set() přidat začátek k navštíveným var fringes = fringes.append() pro každou 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

Zatáčky

Vzhledem k vektoru šestiúhelníku (rozdíl mezi dvěma šestiúhelníky) jej možná budeme muset otočit tak, aby ukazoval na jiný šestiúhelník. To lze snadno provést pomocí kubických souřadnic, pokud se budete držet rotace kruhu o 1/6.

Otočení o 60° doprava posune každou souřadnici o jednu pozici doprava:

[ x, y, z] až [-z, -x, -y]
Otočení o 60° doleva přesune každou souřadnici o jednu pozici doleva:

[ x, y, z] až [-y, -z, -x]



„Po hraní“ [v původním článku] s diagramem si všimnete, že každé otočení je 60° změny podepisuje a fyzicky „otáčí“ souřadnice. Po otočení o 120° se znaménka opět stanou stejnými. Otočení o 180° změní znaménka, ale souřadnice se vrátí do své původní polohy.

Zde je kompletní sekvence rotace pozice P kolem centrální pozice C, výsledkem je nová pozice R:

  1. Převeďte polohy P a C na kubické souřadnice.
  2. Výpočet vektoru odečtením středu: P_from_C = P - C = Cube(P.x - C.x, P.y - C.y, P.z - C.z) .
  3. Otočte vektor P_from_C, jak je popsáno výše, a přiřaďte konečnému vektoru označení R_from_C .
  4. Převod vektoru zpět na pozici přidáním středu: R = R_from_C + C = Cube(R_from_C.x + C.x, R_from_C.y + C.y, R_from_C.z + C.z) .
  5. Převede kubickou polohu R zpět na požadovaný souřadnicový systém.
Existuje několik fází transformace, ale každá z nich je docela jednoduchá. Některé z těchto kroků je možné zkrátit definováním rotace přímo v osových souřadnicích, ale hexadecimální vektory nepracují s offsetovými souřadnicemi a já nevím, jak zkrátit kroky pro offsetové souřadnice. Podívejte se také na diskusi o stackexchange pro další způsoby výpočtu rotace.

Prsteny

Jednoduchý prsten

Chcete-li zjistit, zda daný šestiúhelník patří prstenci o daném poloměru poloměru, musíte vypočítat vzdálenost od tohoto šestiúhelníku ke středu a zjistit, zda se rovná poloměru. Chcete-li získat seznam všech takových šestiúhelníků, musíte provést kroky poloměru od středu a poté sledovat otočené vektory podél cesty podél prstence.

Funkce cube_ring(center, radius): var results = # tento kód nefunguje pro poloměr == 0; chápeš proč?< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
var cube = cube_add(center, cube_scale(cube_direction(4), poloměr)) pro každou 0 ≤ i


V tomto kódu kostka začíná na prstenci, který je znázorněn velkou šipkou od středu k rohu diagramu. Pro začátek jsem zvolil úhel 4, protože odpovídá dráze, ve které se pohybují moje směrová čísla. Možná budete potřebovat jiný počáteční úhel. V každé fázi vnitřní smyčky se kostka pohybuje o jeden šestiúhelník kolem prstence. Po 6 * krocích s poloměrem skončí tam, kde začal.

Spirálové kroužky

Procházením kroužků ve spirálovém vzoru můžeme vyplnit vnitřní části kroužků:



Plocha velkého šestiúhelníku je součtem všech kruhů plus 1 pro střed. Použijte tento vzorec pro výpočet plochy.

Přejíždění šestiúhelníků tímto způsobem lze také použít k výpočtu rozsahu pohybu (viz výše).

Rozsah

Co je vidět z dané pozice na danou vzdálenost a není blokováno překážkami? Nejjednodušším způsobem, jak to zjistit, je nakreslit čáru ke každému šestiúhelníku v daném rozsahu. Pokud se čára nesetká se stěnami, uvidíte šestiúhelník. Přesuňte kurzor myši na šestiúhelníky [na schématu v původním článku], abyste viděli, jak jsou k těmto šestiúhelníkům nakresleny čáry a ke stěnám, které čáry potkávají.

Tento algoritmus může být pomalý na velkých plochách, ale je snadno implementovatelný, takže doporučuji začít s ním.

GIF



Existuje mnoho různých definic viditelnosti. Chcete vidět střed jiného šestiúhelníku ze středu původního? Chcete vidět jakoukoli část jiného šestiúhelníku ze středu toho původního? Možná jakákoliv část jiného šestiúhelníku z jakéhokoli bodu původního? Překážky, které vám brání ve výhledu, jsou menší než celý šestiúhelník? Rozsah je složitější a pestřejší pojem, než se na první pohled zdá. Začněme nejjednodušším algoritmem, ale počítejte s tím, že určitě správně vypočítá odpověď ve vašem projektu. Existují dokonce případy, kdy jednoduchý algoritmus dává nelogické výsledky.

V budoucnu chci tuto příručku rozšířit. mám