Jinsi ya kuteka hexagon ya kawaida kwenye mduara. Hexagon ya kawaida na mali zake

Maudhui:

Heksagoni ya kawaida, pia inaitwa hexagon kamili, ina pande sita sawa na pembe sita sawa. Unaweza kuchora hexagon na kipimo cha mkanda na protractor, hexagon mbaya na kitu cha pande zote na mtawala, au hata hexagon mbaya zaidi na penseli tu na intuition kidogo. Ikiwa unataka kujua jinsi ya kuteka hexagon kwa njia tofauti, soma tu.

Hatua

1 Chora heksagoni kamili kwa kutumia dira

  1. 1 Kwa kutumia dira, chora duara. Ingiza penseli kwenye dira. Panua dira hadi upana wa kipenyo unaohitajika wa mduara wako. Radi inaweza kuwa kutoka kwa wanandoa hadi sentimita kumi kwa upana. Ifuatayo, weka dira na penseli kwenye karatasi na chora mduara.
    • Wakati mwingine ni rahisi kuchora nusu duara kwanza na kisha nusu nyingine.
  2. 2 Hoja sindano ya dira kwenye ukingo wa mduara. Weka juu ya mduara. Usibadili pembe au nafasi ya dira.
  3. 3 Fanya alama ndogo ya penseli kwenye makali ya mduara. Ifanye iwe tofauti, lakini isiwe giza sana kwani utaifuta baadaye. Kumbuka kudumisha pembe uliyoweka kwa dira.
  4. 4 Sogeza sindano ya dira hadi kwenye alama uliyotengeneza hivi punde. Weka sindano moja kwa moja kwenye alama.
  5. 5 Fanya alama nyingine ya penseli kwenye makali ya mduara. Kwa njia hii utafanya alama ya pili kwa umbali fulani kutoka kwa alama ya kwanza. Endelea kusonga katika mwelekeo mmoja.
  6. 6 Tumia njia hiyo hiyo kutengeneza alama nne zaidi. Lazima urudi kwenye alama asili. Ikiwa sivyo, basi uwezekano mkubwa zaidi pembe ambayo ulishikilia dira na kufanya alama zako imebadilika. Hii inaweza kuwa ilitokea kwa sababu uliipunguza kwa nguvu sana au, kinyume chake, uliifungua kidogo.
  7. 7 Unganisha alama kwa kutumia mtawala. Mahali sita ambapo alama zako huingiliana na ukingo wa duara ni vipeo sita vya heksagoni. Kwa kutumia mtawala na penseli, chora mistari iliyonyooka inayounganisha alama zilizo karibu.
  8. 8 Futa mduara, alama kwenye kingo za duara, na alama zingine zozote ulizotengeneza. Mara baada ya kufuta mistari yako yote ya ujenzi, hexagon yako kamili inapaswa kuwa tayari.

2 Chora hexagons mbaya kwa kutumia kitu cha mviringo na rula

  1. 1 Fuata ukingo wa glasi na penseli. Kwa njia hii utachora mduara. Ni muhimu sana kuteka kwa penseli, tangu baadaye utahitaji kufuta mistari yote ya wasaidizi. Unaweza pia kufuatilia glasi iliyopinduliwa, mtungi, au kitu kingine chochote ambacho kina msingi wa pande zote.
  2. 2 Chora mistari ya mlalo katikati ya mduara wako. Unaweza kutumia mtawala, kitabu - chochote kilicho na makali ya moja kwa moja. Ikiwa unayo rula, unaweza kuweka alama katikati kwa kuhesabu urefu wa wima wa duara na kuigawanya kwa nusu.
  3. 3 Chora "X" juu ya nusu ya duara, ukigawanye katika sehemu sita sawa. Kwa kuwa tayari umechora mstari katikati ya duara, X inahitaji kuwa pana zaidi kuliko urefu ili sehemu ziwe sawa. Fikiria kugawa pizza katika vipande sita.
  4. 4 Tengeneza pembetatu kutoka kwa kila sehemu. Ili kufanya hivyo, tumia mtawala kuteka mstari wa moja kwa moja chini ya sehemu iliyopigwa ya kila sehemu, ukiunganisha na mistari mingine miwili ili kuunda pembetatu. Fanya hili na sehemu tano zilizobaki. Ifikirie kama kutengeneza ukoko kuzunguka vipande vyako vya pizza.
  5. 5 Futa mistari yote ya usaidizi. Mistari ya mwongozo inajumuisha mduara wako, mistari mitatu iliyogawanya mduara wako katika sehemu, na alama zingine ulizotengeneza njiani.

3 Chora hexagons mbaya kwa kutumia penseli moja

  1. 1 Chora mstari wa mlalo. Ili kuchora mstari wa moja kwa moja bila mtawala, chora tu sehemu ya kuanzia na ya mwisho ya mstari wako wa mlalo. Kisha kuweka penseli kwenye hatua ya mwanzo na kuteka mstari hadi mwisho. Urefu wa mstari huu unaweza kuwa sentimita chache tu.
  2. 2 Chora mistari miwili ya mlalo kutoka mwisho wa ile iliyo mlalo. Mstari wa diagonal upande wa kushoto unapaswa kuonyesha nje kwa njia sawa na mstari wa diagonal upande wa kulia. Unaweza kufikiria kwamba mistari hii huunda angle ya digrii 120 kwa heshima na mstari wa usawa.
  3. 3 Chora mistari miwili zaidi ya mlalo inayotoka kwenye mistari ya kwanza ya mlalo inayochorwa ndani. Hii itaunda picha ya kioo ya mistari miwili ya kwanza ya diagonal. Mstari wa chini wa kushoto unapaswa kuwa kielelezo cha mstari wa kushoto wa juu, na mstari wa chini wa kulia unapaswa kuwa onyesho la mstari wa juu wa kulia. Wakati mistari ya juu ya usawa inapaswa kuangalia nje, ya chini inapaswa kuangalia ndani kwa msingi.
  4. 4 Chora mstari mwingine wa mlalo unaounganisha mistari miwili ya chini ya mlalo. Kwa njia hii utachora msingi wa hexagon yako. Kwa hakika, mstari huu unapaswa kuwa sawa na mstari wa juu wa usawa. Sasa umekamilisha hexagon yako.
  • Penseli na dira zinapaswa kuwa kali ili kupunguza makosa kutoka kwa alama ambazo ni pana sana.
  • Unapotumia njia ya dira, ukiunganisha kila alama badala ya zote sita, utapata pembetatu ya equilateral.

Maonyo

  • Compass ni kitu chenye ncha kali, kuwa mwangalifu sana nacho.

Kanuni ya uendeshaji

  • Kila njia itakusaidia kuchora hexagon iliyoundwa na pembetatu sita za usawa na radius sawa na urefu wa pande zote. Radi sita zilizochorwa zina urefu sawa na mistari yote ya kuunda hexagon pia ina urefu sawa, kwani upana wa dira haukubadilika. Kwa sababu ya ukweli kwamba pembetatu sita ni za usawa, pembe kati ya wima zao ni digrii 60.

Nini utahitaji

  • Karatasi
  • Penseli
  • Mtawala
  • Jozi ya dira
  • Kitu ambacho kinaweza kuwekwa chini ya karatasi ili kuzuia sindano ya dira kutoka kwa kuteleza.
  • Kifutio

Ujenzi wa kijiometri ni moja ya sehemu kuu za mafunzo. Wanaunda mawazo ya anga na mantiki, na pia huturuhusu kuelewa uhalali wa kijiometri wa asili na wa asili. Ujenzi unafanywa kwenye ndege kwa kutumia dira na mtawala. Zana hizi zinaweza kutumika kujenga idadi kubwa ya maumbo ya kijiometri. Wakati huo huo, takwimu nyingi ambazo zinaonekana kuwa ngumu sana zinajengwa kwa kutumia sheria rahisi zaidi. Kwa mfano, jinsi ya kujenga hexagon ya kawaida inaweza kuelezewa kwa maneno machache.

Utahitaji

  • Compass, mtawala, penseli, karatasi.

Maagizo

1. Chora mduara. Weka umbali fulani kati ya miguu ya dira. Umbali huu utakuwa radius ya mduara. Chagua radius kwa njia ambayo kuchora mduara ni vizuri kabisa. Mduara lazima uingie kabisa kwenye karatasi. Umbali mkubwa sana au mdogo sana kati ya miguu ya dira inaweza kusababisha mabadiliko yake wakati wa kuchora. Umbali mzuri utakuwa ambapo pembe kati ya miguu ya dira ni digrii 15-30.

2. Tengeneza alama za vertex za pembe za hexagon ya kawaida. Weka mguu wa dira, ambayo sindano imewekwa, wakati wowote kwenye mduara. Sindano inapaswa kutoboa mstari uliochorwa. Kwa usahihi zaidi dira imewekwa, ujenzi utakuwa sahihi zaidi. Chora arc ya mviringo ili iweze kuingiliana na mduara uliotolewa hapo awali. Sogeza sindano ya dira hadi mahali pa makutano ya arc iliyochorwa tu na mduara. Chora safu nyingine inayokatiza duara. Sogeza sindano ya dira tena kwenye sehemu ya makutano ya arc na mduara na chora arc tena. Rudia kitendo hiki mara tatu zaidi, ukisonga katika mwelekeo mmoja karibu na duara. Kila moja inapaswa kuwa na safu sita na sehemu sita za makutano.

3. Tengeneza hexagon chanya. Hatua kwa hatua changanya sehemu zote sita za makutano ya arcs na mduara uliochorwa asili. Unganisha pointi na mistari ya moja kwa moja inayotolewa kwa kutumia mtawala na penseli. Baada ya vitendo hivi, hexagon sahihi iliyoandikwa kwenye mduara itapatikana.

Hexagon Poligoni inachukuliwa kuwa na pembe sita na pande sita. Poligoni inaweza kuwa mbonyeo au concave. Heksagoni mbonyeo ina pembe zote za ndani zenye butu, wakati heksagoni iliyopinda ina pembe moja au zaidi za papo hapo. Hexagons ni rahisi sana kutengeneza. Hii inafanywa kwa hatua kadhaa.

Utahitaji

  • Penseli, karatasi, mtawala

Maagizo

1. Chukua karatasi na uweke alama alama 6 juu yake takriban kama inavyoonyeshwa kwenye Mtini. 1.

2. Baada ya pointi kuwa alama, kuchukua mtawala na penseli na, kwa msaada wao, hatua kwa hatua, moja baada ya nyingine, kuunganisha pointi kama inaonekana katika Mtini. 2.

Video kwenye mada

Kumbuka!
Jumla ya pembe zote za ndani za hexagon ni digrii 720.

Hexagon ni poligoni, moja ambayo ina pembe sita. Ili kuteka hexagon ya kiholela, unahitaji kufanya hatua 2 kila mmoja.

Utahitaji

  • Penseli, mtawala, karatasi.

Maagizo

1. Unahitaji kuchukua penseli mkononi mwako na uweke alama alama 6 kwenye karatasi. Katika siku zijazo, pointi hizi zitakuwa na jukumu la pembe katika hexagon. (Mtini.1)

2. Chukua rula na chora sehemu 6 kulingana na vidokezo hivi ambavyo vitaunganishwa kwa kila mmoja pamoja na vidokezo vilivyochorwa hapo awali (Mchoro 2)

Video kwenye mada

Kumbuka!
Aina maalum ya hexagon ni hexagon chanya. Inaitwa vile kwa sababu pande zake zote na pembe ni sawa kwa kila mmoja. Unaweza kuelezea au kuandika mduara kuzunguka hexagon kama hiyo. Ni muhimu kuzingatia kwamba katika pointi ambazo zilipatikana kwa kugusa mduara ulioandikwa na pande za hexagon, pande za hexagon nzuri zimegawanywa kwa nusu.

Ushauri wa manufaa
Kwa asili, hexagons chanya ni maarufu sana. Kwa mfano, asali nzima ina sura nzuri ya hexagonal. Au kimiani ya kioo ya graphene (marekebisho ya kaboni) pia ina sura ya hexagon chanya.

Jinsi ya kujenga moja au nyingine kona- swali kubwa. Lakini kwa pembe zingine kazi hurahisishwa bila kuonekana. Moja ya pembe hizi ni kona kwa digrii 30. Ni sawa na?/6, yaani, nambari 30 ni kigawanyo cha 180. Zaidi ya hayo, sine yake inajulikana. Hii inasaidia katika ujenzi wake.

Utahitaji

  • protractor, mraba, dira, rula

Maagizo

1. Kwanza, hebu tuangalie hali ya zamani wakati una protractor mikononi mwako. Kisha mstari wa moja kwa moja kwa pembe ya digrii 30 kwa hii inaweza kuwekwa kwa urahisi kwa msaada kwa ajili yake.

2. Mbali na protractor, kuna pia kona matao, moja ya pembe ambayo ni sawa na digrii 30. Kisha mwingine kona kona angle itakuwa sawa na digrii 60, yaani, unahitaji kuibua ndogo kona ili kujenga mstari wa moja kwa moja unaohitajika.

3. Wacha sasa tuendelee kwenye njia zisizo za kawaida za kuunda pembe ya digrii 30. Kama unavyojua, sine ya pembe ya digrii 30 ni sawa na 1/2. Ili kuijenga, tunahitaji kuijenga moja kwa moja kona mzalendo kona nik. Inawezekana kwamba tunaweza kuunda mistari miwili ya perpendicular. Lakini tangent ya digrii 30 ni nambari isiyo na maana, kwa hivyo tunaweza takriban kuhesabu uwiano kati ya miguu (pekee ikiwa hakuna calculator), na, kwa hivyo, tengeneza. kona takriban digrii 30.

4. Katika kesi hii, inawezekana kufanya ujenzi halisi. Wacha tujenge tena mistari miwili ya moja kwa moja ya perpendicular, ambayo miguu itakuwa iko sawa kona nogo kona nik. Wacha tuweke mguu mmoja wa moja kwa moja BC wa urefu fulani kwa msaada wa dira (B - moja kwa moja kona) Baada ya hayo, tutaongeza urefu kati ya miguu ya dira kwa mara 2, ambayo ni ya msingi. Kuchora mduara na kituo kwa uhakika C na radius ya urefu huu, tunapata hatua ya makutano ya mduara na mstari mwingine wa moja kwa moja. Hatua hii itakuwa uhakika A moja kwa moja kona nogo kona ABC, na kona A itakuwa sawa na digrii 30.

5. Imesimama kona kwa digrii 30 inaruhusiwa na kwa msaada wa mduara, kutumia kile ambacho ni sawa na?/6. Wacha tutengeneze mduara na radius OB. Hebu tuangalie nadharia kona nik, ambapo OA = OB = R - radius ya mduara, wapi kona OAB = digrii 30. Acha OE iwe urefu wa pembetatu hii ya isosceles kona nik, na, kwa hivyo, sehemu yake ya pili na wastani. Kisha kona AOE = digrii 15, na, kwa mujibu wa fomula ya nusu-angle, sin(15o) = (sqrt(3)-1)/(2*sqrt(2)).Kwa hiyo, AE = R*sin(15o). Kwa hiyo, AB = 2AE = 2R*dhambi(15o). Kwa kuunda mduara wa radius BA na kituo katika hatua B, tunapata hatua ya makutano A ya mduara huu na ya awali. Angle AOB itakuwa digrii 30.

6. Ikiwa tunaweza kuamua urefu wa arcs kwa njia fulani, basi, tukiweka kando safu ya urefu?*R/6, pia tunapata kona kwa digrii 30.

Kumbuka!
Lazima tukumbuke kwamba katika aya ya 5 tunaweza tu kujenga angle takriban, kwa sababu nambari zisizo na maana zitaonekana katika mahesabu.

Hexagon inayoitwa kesi maalum ya poligoni - takwimu inayoundwa na pointi nyingi za ndege, iliyopunguzwa na polyline iliyofungwa. Hexagon chanya (hexagon), kwa upande wake, pia ni kesi maalum - ni poligoni yenye pande sita sawa na pembe sawa. Takwimu hii ni muhimu kwa kuwa urefu wa pande zake zote ni sawa na radius ya duara iliyoelezwa karibu na takwimu.

Utahitaji

  • - dira;
  • - mtawala;
  • - penseli;
  • - karatasi.

Maagizo

1. Chagua urefu wa upande wa hexagon. Kuchukua dira na kuweka umbali kati ya mwisho wa sindano, iko kwenye moja ya miguu yake, na mwisho wa risasi, iko kwenye mguu mwingine, sawa na urefu wa upande wa takwimu inayotolewa. Ili kufanya hivyo, unaweza kutumia mtawala au kuchagua umbali wa nasibu ikiwa wakati huu sio muhimu. Salama miguu ya dira na screw, ikiwa inawezekana.

2. Chora duara kwa kutumia dira. Umbali uliochaguliwa kati ya miguu itakuwa radius ya mduara.

3. Gawanya mduara katika sehemu sita sawa na dots. Pointi hizi zitakuwa wima za pembe za hexagon na, ipasavyo, miisho ya sehemu zinazowakilisha pande zake.

4. Weka mguu wa dira na sindano kwenye hatua ya kiholela iko kwenye mstari wa mduara ulioainishwa. Sindano inapaswa kutoboa mstari kwa usahihi. Usahihi wa ujenzi moja kwa moja inategemea usahihi wa ufungaji wa dira. Chora arc na dira ili iweze kuingilia mduara uliochorwa kwanza kwa alama 2.

5. Sogeza mguu wa dira na sindano kwa moja ya pointi za makutano ya arc inayotolewa na mduara wa awali. Chora arc nyingine, pia kuingilia mduara kwa pointi 2 (moja yao itafanana na hatua ya eneo la awali la sindano ya dira).

6. Kwa njia hiyo hiyo, panga upya sindano ya dira na kuchora arcs mara nne zaidi. Sogeza mguu wa dira na sindano katika mwelekeo mmoja kuzunguka mduara (kila wakati wa saa au kinyume chake). Matokeo yake, pointi sita za makutano ya arcs na mduara uliojengwa awali lazima zitambuliwe.

7. Chora heksagoni chanya. Hatua kwa hatua, kwa jozi, unganisha pointi sita zilizopatikana katika hatua ya awali na makundi. Chora sehemu kwa kutumia penseli na mtawala. Matokeo yake yatakuwa hexagon sahihi. Baada ya kukamilisha ujenzi, unaweza kufuta vipengele vya msaidizi (arcs na miduara).

Kumbuka!
Ni busara kuchagua umbali kati ya miguu ya dira ili pembe kati yao ni digrii 15-30, kinyume chake, wakati wa kufanya ujenzi, umbali huu unaweza kupotea kwa urahisi.

Wakati wa kujenga au kuendeleza mipango ya kubuni nyumba, mara nyingi ni muhimu kujenga kona, sawa na iliyopo. Sampuli na ujuzi wa jiometri ya shule huja kusaidia.

Maagizo

1. Pembe huundwa na mistari miwili iliyonyooka inayotoka kwa nukta moja. Hatua hii itaitwa vertex ya angle, na mistari itakuwa pande za pembe.

2. Tumia herufi tatu kuwakilisha pembe: moja juu, mbili kando. Imeitwa kona, kuanzia na barua inayosimama upande mmoja, kisha barua iliyosimama juu inaitwa, na baada ya hapo barua kwa upande mwingine. Tumia njia zingine za kuashiria pembe ikiwa uko sawa zaidi kinyume. Mara kwa mara, barua moja tu inaitwa, ambayo iko juu. Na inaruhusiwa kuashiria pembe na barua za Kigiriki, sema, α, β, γ.

3. Kuna hali wakati unahitaji kuchora kona, ili iwe sawa na pembe iliyotolewa. Ikiwa hakuna nafasi ya kutumia protractor wakati wa kujenga kuchora, unaweza kupata tu na mtawala na dira. Inawezekana, kwenye mstari wa moja kwa moja ulioonyeshwa katika kuchora na barua MN, ni muhimu kujenga kona kwa uhakika K, ili iwe sawa na angle B. Hiyo ni, kutoka kwa uhakika K unahitaji kuteka mstari wa moja kwa moja unaounda na mstari MN. kona, ile ambayo itakuwa sawa na pembe B.

4. Kwanza, weka alama kwenye upande mzima wa pembe fulani, sema, pointi A na C, kisha uunganishe pointi C na A kwa mstari wa moja kwa moja. Pata tre kona ni ABC.

5. Sasa jenga tre hiyo hiyo kwenye mstari ulionyooka MN kona ili vertex B yake iko kwenye mstari kwenye hatua ya K. Tumia kanuni kwa ajili ya kujenga pembetatu kona kwa pande tatu. Ondoa sehemu ya KL kutoka kwa alama K. Lazima iwe sawa na sehemu BC. Pata pointi ya L.

6. Kutoka kwa uhakika K, chora mduara na radius sawa na sehemu ya BA. Kutoka L, chora duara yenye radius CA. Kuchanganya hatua ya kusababisha (P) ya makutano ya miduara 2 na K. Pata tatu kona nik KPL, moja ambayo itakuwa sawa na tatu kona Kitabu cha ABC. Hivi ndivyo unavyopata kona K. Itakuwa sawa na angle B. Ili kufanya ujenzi huu vizuri zaidi na kwa kasi zaidi, weka sehemu sawa kutoka kwa vertex B, ukitumia suluhisho la dira moja, bila kusonga miguu, eleza mduara na radius sawa kutoka kwa uhakika K.

Video kwenye mada

Kumbuka!
Epuka kubadilisha kwa bahati umbali kati ya miguu ya dira. Katika kesi hii, hexagon inaweza kugeuka kuwa sahihi.

Ushauri wa manufaa
Ana ustadi wa kutengeneza miundo kwa kutumia dira yenye risasi iliyoinuliwa kikamilifu. Kwa njia hii miundo itakuwa sahihi hasa.

Je, kuna penseli karibu na wewe? Angalia sehemu yake ya msalaba - ni hexagon ya kawaida au, kama inaitwa pia, hexagon. Sehemu ya msalaba ya nati, uwanja wa chess ya hexagonal, molekuli kadhaa za kaboni ngumu (kwa mfano, grafiti), theluji ya theluji, asali na vitu vingine pia vina sura hii. Heksagoni kubwa ya kawaida iligunduliwa hivi majuzi katika Je, haionekani kuwa ya ajabu kwamba asili mara nyingi hutumia miundo ya umbo hili kwa ubunifu wake? Hebu tuangalie kwa karibu.

Heksagoni ya kawaida ni poligoni yenye pande sita sawa na pembe sawa. Kutoka kwa kozi ya shule tunajua kuwa ina sifa zifuatazo:

  • Urefu wa pande zake unalingana na radius ya duara iliyozungushwa. Kati ya yote, ni hexagon ya kawaida tu inayo mali hii.
  • Pembe ni sawa kwa kila mmoja, na kila kipimo ni 120 °.
  • Mzunguko wa hexagon unaweza kupatikana kwa kutumia formula P = 6 * R, ikiwa radius ya mviringo iliyoelezwa karibu nayo inajulikana, au P = 4 * √ (3) * r, ikiwa mduara umeandikwa ndani yake. R na r ni radii ya duara iliyozungushwa na iliyoandikwa.
  • Eneo linalokaliwa na heksagoni ya kawaida huamuliwa kama ifuatavyo: S=(3*√(3)*R 2)/2. Ikiwa radius haijulikani, badilisha urefu wa moja ya pande - kama inavyojulikana, inalingana na urefu wa radius ya duara iliyozungushwa.

Hexagon ya kawaida ina kipengele kimoja cha kuvutia, shukrani ambayo imeenea sana katika asili - ina uwezo wa kujaza uso wowote wa ndege bila kuingiliana au mapungufu. Kuna hata ile inayoitwa Pal lemma, kulingana na ambayo hexagons ya kawaida, ambayo upande wake ni sawa na 1/√(3), ni kifuniko cha ulimwengu wote, yaani, inaweza kufunika seti yoyote kwa kipenyo cha kitengo kimoja. .

Sasa hebu tuangalie kujenga hexagon ya kawaida. Kuna njia kadhaa, rahisi zaidi ambayo inahusisha kutumia dira, penseli na mtawala. Kwanza, tunatoa mduara wa kiholela na dira, kisha tunafanya uhakika mahali pa kiholela kwenye mduara huu. Bila kubadilisha angle ya dira, tunaweka ncha katika hatua hii, alama alama inayofuata kwenye mduara, na uendelee hili mpaka tupate pointi zote 6. Sasa kinachobakia ni kuwaunganisha pamoja na makundi ya moja kwa moja, na utapata takwimu inayotaka.

Katika mazoezi, kuna matukio wakati unahitaji kuteka hexagon kubwa. Kwa mfano, kwenye dari ya plasterboard ya ngazi mbili, karibu na eneo la kuongezeka kwa chandelier ya kati, unahitaji kufunga taa sita ndogo kwenye ngazi ya chini. Compass za ukubwa huu zitakuwa vigumu sana kupata. Nini cha kufanya katika kesi hii? Unachoraje hata mduara mkubwa? Rahisi sana. Unahitaji kuchukua thread yenye nguvu ya urefu uliohitajika na kuunganisha moja ya mwisho wake kinyume na penseli. Sasa kilichobaki ni kupata msaidizi ambaye angebonyeza mwisho wa pili wa uzi hadi dari kwenye sehemu inayotaka. Kwa kweli, katika kesi hii, makosa madogo yanawezekana, lakini hakuna uwezekano wa kuonekana kwa mtu wa nje hata kidogo.

Ujenzi wa hexagon ya kawaida iliyoandikwa kwenye mduara. Ujenzi wa hexagon ni msingi wa ukweli kwamba upande wake ni sawa na radius ya mzunguko wa mzunguko. Kwa hiyo, ili kuijenga, inatosha kugawanya mduara katika sehemu sita sawa na kuunganisha pointi zilizopatikana kwa kila mmoja (Mchoro 60, a).

Hexagon ya kawaida inaweza kujengwa kwa kutumia makali ya moja kwa moja na mraba 30X60 °. Ili kutekeleza ujenzi huu, tunachukua kipenyo cha usawa cha mduara kama sehemu mbili za pembe 1 na 4 (Mchoro 60, b), jenga pande 1 -6, 4-3, 4-5 na 7-2, baada ya hapo. tunachora pande 5-6 na 3-2.

Kuunda pembetatu ya usawa iliyoandikwa kwenye mduara. Vipeo vya pembetatu hiyo vinaweza kujengwa kwa kutumia dira na mraba yenye pembe za 30 na 60 ° au dira moja tu.

Wacha tuchunguze njia mbili za kuunda pembetatu ya usawa iliyoandikwa kwenye duara.

Njia ya kwanza(Mchoro 61, a) inategemea ukweli kwamba pembe zote tatu za pembetatu 7, 2, 3 zina 60 °, na mstari wa wima unaotolewa kupitia hatua ya 7 ni urefu na sehemu ya pembetatu 1. Tangu angle. ni 0-1- 2 ni sawa na 30 °, kisha kupata upande

1-2, inatosha kujenga angle ya 30 ° kutoka hatua ya 1 na upande wa 0-1. Ili kufanya hivyo, sasisha upau wa msalaba na mraba kama inavyoonyeshwa kwenye takwimu, chora mstari 1-2, ambayo itakuwa moja ya pande za pembetatu inayotaka. Ili kujenga upande wa 2-3, weka upau katika nafasi iliyoonyeshwa na mistari iliyopigwa, na kuchora mstari wa moja kwa moja kupitia hatua ya 2, ambayo itaamua vertex ya tatu ya pembetatu.

Njia ya pili inategemea ukweli kwamba ikiwa utaunda hexagon ya kawaida iliyoandikwa kwenye mduara na kisha kuunganisha wima kupitia moja, utapata pembetatu ya equilateral.

Ili kujenga pembetatu (Mchoro 61, b), alama ya vertex-kumweka 1 kwenye kipenyo na kuteka mstari wa diametrical 1-4. Ifuatayo, kutoka kwa hatua ya 4 na radius sawa na D / 2, tunaelezea arc mpaka inapoingiliana na mduara kwenye pointi 3 na 2. Pointi zinazosababisha zitakuwa wima nyingine mbili za pembetatu inayotaka.

Kuunda mraba ulioandikwa kwenye mduara. Ujenzi huu unaweza kufanywa kwa kutumia mraba na dira.

Njia ya kwanza inategemea ukweli kwamba diagonals ya mraba huingilia katikati ya mduara uliozunguka na huelekezwa kwa axes zake kwa pembe ya 45 °. Kulingana na hili, tunaweka msalaba na mraba na pembe za 45 ° kama inavyoonyeshwa kwenye Mtini. 62, a, na alama pointi 1 na 3. Kisha, kupitia pointi hizi tunachora pande za usawa za mraba 4-1 na 3-2 kwa kutumia crossbar. Kisha, kwa kutumia makali ya moja kwa moja, tunatoa pande za wima za mraba 1-2 na 4-3 kando ya mguu wa mraba.

Njia ya pili inategemea ukweli kwamba vertices za mraba hupunguza arcs ya mduara iliyofungwa kati ya mwisho wa kipenyo (Mchoro 62, b). Tunaweka alama A, B na C kwenye ncha za vipenyo viwili vya perpendicular na kutoka kwao kwa radius y tunaelezea arcs mpaka zinaingiliana.

Ifuatayo, kupitia sehemu za makutano ya arcs tunachora mistari ya moja kwa moja ya msaidizi, iliyowekwa alama kwenye takwimu na mistari thabiti. Pointi za makutano yao na mduara zitaamua wima 1 na 3; 4 na 2. Tunaunganisha wima ya mraba inayotaka iliyopatikana kwa njia hii mfululizo kwa kila mmoja.

Ujenzi wa pentagon ya kawaida iliyoandikwa kwenye mduara.

Ili kuunganisha pentagon ya kawaida kwenye mduara (Mchoro 63), tunafanya ujenzi wafuatayo.

Tunaweka alama 1 kwenye mduara na kuichukua kama moja ya wima ya pentagon. Tunagawanya sehemu ya AO kwa nusu. Ili kufanya hivyo, tunaelezea arc kutoka kwa hatua A na radius AO mpaka inapoingiliana na mduara kwenye pointi M na B. Kwa kuunganisha pointi hizi kwa mstari wa moja kwa moja, tunapata uhakika K, ambayo sisi kisha tunaunganisha kwa uhakika 1. Na. radius sawa na sehemu ya A7, tunaelezea arc kutoka hatua ya K hadi inapoingiliana na mstari wa diametrical AO kwenye hatua H. Kwa kuunganisha hatua ya 1 na hatua H, tunapata upande wa pentagon. Kisha, kwa kutumia suluhisho la dira sawa na sehemu ya 1H, inayoelezea arc kutoka vertex 1 hadi makutano na mduara, tunapata wima 2 na 5. Baada ya kutengeneza noti kutoka kwa wima 2 na 5 na suluhisho sawa la dira, tunapata iliyobaki. wima 3 na 4. Tunaunganisha pointi zilizopatikana kwa mlolongo na kila mmoja.

Kujenga pentagon ya kawaida kando ya upande fulani.

Ili kujenga pentagon ya kawaida kando ya upande fulani (Mchoro 64), tunagawanya sehemu ya AB katika sehemu sita sawa. Kutoka kwa pointi A na B na radius AB tunaelezea arcs, makutano ambayo yatatoa uhakika K. Kupitia hatua hii na mgawanyiko wa 3 kwenye mstari wa AB tunatoa mstari wa wima.

Tunapata uhakika wa 1-vertex ya pentagon. Kisha, kwa radius sawa na AB, kutoka kwa hatua ya 1 tunaelezea arc mpaka inapoingiliana na arcs zilizotolewa hapo awali kutoka kwa pointi A na B. Sehemu za makutano ya arcs huamua vertices ya pentagon 2 na 5. Tunaunganisha vertices zilizopatikana katika mfululizo na kila mmoja.

Ujenzi wa heptagon ya kawaida iliyoandikwa kwenye mduara.

Hebu mduara wa kipenyo D upewe; unahitaji kuingiza heptagon ya kawaida ndani yake (Mchoro 65). Gawanya kipenyo cha wima cha duara katika sehemu saba sawa. Kutoka hatua ya 7 na radius sawa na kipenyo cha mduara D, tunaelezea arc mpaka inapoingiliana na kuendelea kwa kipenyo cha usawa kwenye hatua F. Tunaita hatua F pole ya poligoni. Kuchukua hatua ya VII kama moja ya wima ya heptagon, tunachora mionzi kutoka kwa pole F kupitia mgawanyiko hata wa kipenyo cha wima, makutano ambayo kwa mduara itaamua wima VI, V na IV ya heptagon. Ili kupata wima / - // - /// kutoka kwa pointi IV, V na VI, chora mistari ya usawa hadi inapoingiliana na mduara. Tunaunganisha wima zilizopatikana kwa mlolongo kwa kila mmoja. Heptagoni inaweza kujengwa kwa kuchora miale kutoka kwa nguzo ya F na kupitia migawanyiko isiyo ya kawaida ya kipenyo cha wima.

Njia iliyo hapo juu inafaa kwa kuunda poligoni za kawaida na idadi yoyote ya pande.

Mgawanyiko wa duara katika idadi yoyote ya sehemu sawa unaweza pia kufanywa kwa kutumia data katika Jedwali. 2, ambayo hutoa coefficients ambayo inafanya uwezekano wa kuamua vipimo vya pande za polygons za kawaida zilizoandikwa.

Gridi za heksagoni (gridi za hexagonal) hutumiwa katika baadhi ya michezo, lakini si rahisi au kawaida kama gridi za mstatili. Nimekuwa nikikusanya rasilimali kwenye meshes za hex kwa karibu miaka 20, na niliandika mwongozo huu kwa njia za kifahari zaidi, zinazotekelezwa kwa nambari rahisi zaidi. Nakala hii inatumia sana miongozo ya Charles Fu na Clark Verbrugge. Nitaelezea njia tofauti za kuunda meshes ya hexagon, uhusiano wao, na algorithms ya kawaida. Sehemu nyingi za kifungu hiki zinaingiliana: kuchagua aina ya gridi hubadilisha michoro, msimbo na maandishi yanayolingana. (Kumbuka kwa.: hii inatumika tu kwa asili, nakushauri uisome. Katika tafsiri, habari zote za asili huhifadhiwa, lakini bila mwingiliano.).

Mifano ya kanuni katika makala imeandikwa katika pseudocode, hivyo ni rahisi kusoma na kuelewa ili kuandika utekelezaji wako mwenyewe.

Jiometri

Heksagoni ni poligoni zenye pande sita. Hexagoni za kawaida zina pande zote (kingo) za urefu sawa. Tutafanya kazi tu na hexagons za kawaida. Kwa kawaida, meshes ya hexagon hutumia mielekeo ya mlalo (pointy top) na wima (gorofa ya juu).


Hexagoni zenye sehemu bapa (kushoto) na vilele vyenye ncha kali (kulia).

Hexagoni ina nyuso 6. Kila uso ni wa kawaida kwa hexagons mbili. Hexagons wana pointi 6 za kona. Kila sehemu ya kona ni ya kawaida kwa hexagons tatu. Unaweza kusoma zaidi juu ya vituo, kingo, na sehemu za kona katika nakala yangu juu ya sehemu za matundu (mraba, hexagons, na pembetatu).

Pembe

Katika hexagon ya kawaida, pembe za ndani ni 120 °. Kuna "wedge" sita, ambayo kila moja ni pembetatu ya equilateral na pembe za ndani za 60 °. Sehemu ya kona i iko katika umbali wa (60 ° * i) + 30 °, vitengo vya ukubwa kutoka katikati ya kituo. Katika kanuni:

Kazi hex_corner(katikati, ukubwa, 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) )
Ili kujaza heksagoni, unahitaji kupata vipeo vya poligoni kutoka hex_corner(…, 0) hadi hex_corner(…, 5) . Ili kuchora muhtasari wa hexagon, unahitaji kutumia wima hizi na kisha kuchora mstari tena katika hex_corner(..., 0) .

Tofauti kati ya mielekeo miwili ni kwamba x na y hubadilishwa, na kusababisha mabadiliko katika pembe: heksagoni za gorofa-juu zina pembe za 0 °, 60 °, 120 °, 180 °, 240 °, 300 ° na juu-iliyoelekezwa. hexagoni zina pembe za 30 °, 90 °, 150 °, 210 °, 270 °, 330 °.


Pembe za hexagons na vilele vya gorofa na kali

Ukubwa na eneo

Sasa tunataka kuweka hexagons kadhaa pamoja. Katika mwelekeo wa usawa, urefu wa hexagon ni urefu = ukubwa * 2 . Umbali wa wima kati ya hexagoni zilizo karibu ni vert = urefu * 3/4 ​​​​.

Upana wa upana wa heksagoni = sqrt(3)/2 * urefu . Umbali wa mlalo kati ya heksagoni zilizo karibu ni horiz = width .

Baadhi ya michezo hutumia sanaa ya pikseli kwa hexagoni, ambayo hailingani kabisa na hexagoni za kawaida. Njia za pembe na uwekaji zilizofafanuliwa katika sehemu hii hazitalingana na vipimo vya heksagoni kama hizo. Makala mengine yanayoelezea algoriti za wavu wa heksi hutumika hata kama heksagoni zimenyoshwa kidogo au kubanwa.



Mifumo ya kuratibu

Wacha tuanze kukusanya hexagons kwenye gridi ya taifa. Katika kesi ya grids ya mraba, kuna njia moja tu ya wazi ya kukusanyika. Kwa hexagons, kuna mbinu nyingi. Ninapendekeza kutumia kuratibu za ujazo kama uwakilishi wako wa msingi. Viwianishi vya Axial au viwianishi vya kukabiliana vinapaswa kutumiwa kuhifadhi ramani na kuonyesha viwianishi kwa mtumiaji.

Kuratibu za kukabiliana

Njia ya kawaida ni kurekebisha kila safu au safu inayofuata. Safu wima zimeteuliwa col au q. Safu mlalo huonyeshwa kwa safu mlalo au r . Unaweza kurekebisha safu/safu isiyo ya kawaida au hata safu wima, kwa hivyo heksagoni za mlalo na wima kila moja ina chaguo mbili.


Mpangilio wa mlalo "odd-r"


Mpangilio wa mlalo "hata-r"


Mpangilio wa "odd-q" wima


Mpangilio wa wima "hata-q"

Kuratibu za ujazo

Njia nyingine ya kuangalia gridi za hexagons ni kuziona kama tatu shoka kuu, sivyo mbili, kama katika gridi za mraba. Wanaonyesha ulinganifu wa kifahari.

Hebu tuchukue gridi ya cubes na tuikate ndege ya mlalo katika x + y + z = 0. Hili ni wazo geni, lakini litatusaidia kurahisisha algoriti za matundu ya heksagoni. Hasa, tutaweza kutumia shughuli za kawaida kutoka kwa kuratibu za Cartesian: muhtasari na kupunguza kuratibu, kuzidisha na kugawanya kwa wingi wa scalar, pamoja na umbali.

Angalia shoka tatu kuu kwenye gridi ya cubes na uhusiano wao na sita diagonal maelekezo ya gridi ya hexagon. Axes ya diagonal ya gridi ya taifa inalingana na mwelekeo kuu wa gridi ya hexagon.


Hexagoni


cubes

Kwa kuwa tayari tunayo algoriti za meshes za mraba na mchemraba, kutumia viwianishi vya ujazo huturuhusu kurekebisha algoriti hizi kwa wavu wa heksagoni. Nitatumia mfumo huu kwa algoriti nyingi za makala. Ili kutumia algorithms na mfumo tofauti wa kuratibu, mimi hubadilisha kuratibu za ujazo, kuendesha algorithm, na kisha kuzibadilisha nyuma.

Jifunze jinsi viwianishi vya ujazo hufanya kazi kwa matundu ya heksagoni. Unapochagua hexagons, kuratibu za ujazo zinazohusiana na axes tatu zinasisitizwa.

  1. Kila mwelekeo wa gridi ya mchemraba inafanana na mistari kwenye gridi ya hexagons. Jaribu kuchagua heksagoni yenye z sawa na 0, 1, 2, 3 ili kuona muunganisho. Mstari umewekwa alama ya bluu. Jaribu vivyo hivyo kwa x (kijani) na y (zambarau).
  2. Kila mwelekeo wa gridi ya hexagon ni mchanganyiko wa pande mbili za gridi ya mchemraba. Kwa mfano, "kaskazini" ya gridi ya hexagons iko kati ya +y na -z , kwa hivyo kila hatua ya "kaskazini" huongezeka y kwa 1 na kupungua z kwa 1.
Kuratibu za ujazo ni chaguo linalofaa kwa mfumo wa kuratibu wa gridi ya hexagon. Hali ni x + y + z = 0, hivyo ni lazima ihifadhiwe katika algorithms. Hali hiyo pia inahakikisha kwamba daima kutakuwa na uratibu wa kisheria kwa kila heksagoni.

Kuna mifumo mingi tofauti ya kuratibu kwa cubes na hexagoni. Katika baadhi yao hali ni tofauti na x + y + z = 0. Nilionyesha moja tu ya mifumo mingi. Unaweza pia kuunda kuratibu za ujazo na x-y , y-z , z-x , ambazo zina seti yao ya mali ya kupendeza, lakini sitaingia ndani yao hapa.

Lakini unaweza kubishana kuwa hutaki kuhifadhi nambari 3 za kuratibu kwa sababu hujui jinsi ya kuhifadhi ramani kwa njia hiyo.

Kuratibu za Axial

Mfumo wa kuratibu wa axial, wakati mwingine huitwa mfumo wa kuratibu wa "trapezoidal", hujengwa kutoka kwa kuratibu mbili au tatu kutoka kwa mfumo wa kuratibu wa cubic. Kwa kuwa tuna hali x + y + z = 0, uratibu wa tatu hauhitajiki. Viwianishi vya Axial ni muhimu kwa kuhifadhi ramani na kuonyesha viwianishi kwa mtumiaji. Kama ilivyo kwa kuratibu za ujazo, unaweza kutumia shughuli za kawaida za kuongeza, kupunguza, kuzidisha na kugawanya kuratibu za Cartesian.

Kuna mifumo mingi ya kuratibu za ujazo na nyingi za axial. Sitashughulikia kila mchanganyiko kwenye mwongozo huu. Nitachagua vigezo viwili, q (safu) na r (safu). Katika michoro katika kifungu hiki, q inalingana na x na r inalingana na z, lakini mawasiliano haya ni ya kiholela kwa sababu unaweza kuzungusha na kuzungusha michoro ili kupata mawasiliano tofauti.

Faida ya mfumo huu juu ya gridi za uhamishaji ni kwamba kanuni zinaeleweka zaidi. Upande wa chini wa mfumo ni kwamba kuhifadhi kadi ya mstatili ni ajabu kidogo; tazama sehemu ya kuhifadhi ramani. Baadhi ya algoriti ziko wazi zaidi katika kuratibu za ujazo, lakini kwa kuwa tuna hali x + y + z = 0, tunaweza kukokotoa uratibu wa tatu uliodokezwa na kuutumia katika algoriti hizi. Katika miradi yangu mimi huita shoka q, r, s, kwa hivyo hali inaonekana kama q + r + s = 0, na ninaweza kuhesabu s = -q - r inapohitajika.

Ekseli

Viwianishi vya kukabiliana ndicho jambo la kwanza ambalo watu wengi hufikiria kwa sababu ni sawa na viwianishi vya kawaida vya Cartesian vinavyotumiwa kwa gridi za miraba. Kwa bahati mbaya, moja ya shoka mbili lazima kukimbia dhidi ya nafaka, na hii inaishia kuwa magumu mambo. Mifumo ya mchemraba na mhimili huenda umbali na ina algorithms rahisi, lakini uhifadhi wa kadi ni ngumu zaidi. Kuna mfumo mwingine unaoitwa "alternating" au "dual", lakini hatutazingatia hapa; wengine huona ni rahisi kufanya kazi nao kuliko ujazo au axial.


Kuratibu za kukabiliana, ujazo na axial

Mhimili ni mwelekeo ambao uratibu sambamba unaongezeka. Perpendicular kwa mhimili ni mstari ambao uratibu unabaki mara kwa mara. Michoro ya gridi hapo juu inaonyesha mistari ya pembeni.

Kuratibu mabadiliko

Kuna uwezekano kwamba utatumia kuratibu za axial au kukabiliana katika muundo wako, lakini algoriti nyingi zinaonyeshwa kwa urahisi zaidi katika kuratibu za ujazo. Kwa hivyo, tunahitaji kuwa na uwezo wa kubadilisha kuratibu kati ya mifumo.

Kuratibu za Axial zinahusiana kwa karibu na kuratibu za ujazo, kwa hivyo ubadilishaji ni rahisi:

# badilisha viwianishi vya ujazo kuwa axial q = x r = z # badilisha axial kuwa viwianishi vya ujazo x = q z = r y = -x-z
Kwa kificho, kazi hizi mbili zinaweza kuandikwa kama ifuatavyo:

Kazi ya mchemraba_to_hex(h): # axial var q = h.x var r = h.z rudisha Hex(q, r) kitendakazi hex_to_cube(h): # cubic var x = h.q var z = h.r var y = -x-z kurudi Mchemraba(x, y) , z)
Kuratibu za kukabiliana ni ngumu zaidi:

Hexagoni za karibu

Kwa kuzingatia heksagoni moja, iko karibu na heksagoni gani sita? Kama unavyoweza kutarajia, jibu ni rahisi zaidi katika kuratibu za ujazo, rahisi sana katika kuratibu za axial, na ni ngumu zaidi katika kuratibu za uhamishaji. Unaweza pia kuhitaji kuhesabu hexagoni sita za "diagonal".

Kuratibu za ujazo

Kusonga nafasi moja katika kuratibu hex husababisha moja ya viwianishi vitatu vya ujazo kubadilika hadi +1 na nyingine hadi -1 (jumla lazima ibaki 0). Kwa +1, kuratibu tatu zinazowezekana zinaweza kubadilika, na kwa -1, mbili zilizobaki. Hii inatupa mabadiliko sita iwezekanavyo. Kila moja inalingana na moja ya mwelekeo wa hexagon. Njia rahisi na ya haraka sana ni kutayarisha mabadiliko na kuyaweka kwenye jedwali la ujazo la kuratibu Cube(dx, dy, dz) kwa wakati wa kukusanya:

Maelekezo ya Var = [ Mchemraba(+1, -1, 0), Mchemraba(+1, 0, -1), Mchemraba(0, +1, -1), Mchemraba(-1, +1, 0), Mchemraba( -1, 0, +1), Mchemraba(0, -1, +1) ] chaguo za kukokotoa mchemraba_mwelekeo(mwelekeo): utendakazi wa maelekezo ya mchemraba_neighbor(hex, mwelekeo): rudisha mchemraba_add(hex, mchemraba_direction(mwelekeo))

Kuratibu za Axial

Kama hapo awali, tunatumia mfumo wa ujazo kuanza. Wacha tuchukue jedwali la Cube(dx, dy, dz) na tuibadilishe kuwa jedwali la Hex(dq, dr):

Maelekezo ya Var = [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0, +1) ] chaguo za kukokotoa hex_direction(mwelekeo): chaguo za kukokotoa za maelekezo hex_neighbor(hex, mwelekeo): var dir = hex_direction(mwelekeo) rudisha Hex(hex.q + dir.q, hex.r + dir.r)

Kuratibu za kukabiliana

Katika kuratibu za axial, tunafanya mabadiliko kulingana na mahali tulipo kwenye gridi ya taifa. Ikiwa tuko katika safu wima / safu, basi sheria ni tofauti na kesi ya safu / safu bila kukabiliana.

Kama hapo awali, tunaunda jedwali la nambari ambazo zinahitaji kuongezwa kwa col na row . Walakini, wakati huu tutakuwa na safu mbili, moja kwa safu / safu zisizo za kawaida na nyingine kwa zile zilizo sawa. Angalia (1,1) katika picha ya ramani ya gridi hapo juu na utambue jinsi safu na safu mlalo inavyobadilika unaposogea katika kila moja ya mielekeo sita. Sasa wacha turudie mchakato wa (2,2) . Jedwali na msimbo zitakuwa tofauti kwa kila aina nne za gridi za uhamishaji hapa kuna nambari inayolingana kwa kila aina ya gridi ya taifa.

Isiyo ya kawaida-r
var maelekezo = [ [ 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) ] ] chaguo za kukokotoa offset_neighbor(hex, mwelekeo): var parity = hex.row & 1 var dir = maelekezo ya kurudi Hex(hex.col + dir.col, hex.row + dir.row)


Hata-r
var maelekezo = [ [ 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) ] ] chaguo za kukokotoa offset_neighbor(hex, mwelekeo): var parity = hex.row & 1 var dir = maelekezo ya kurudi Hex(hex.col + dir.col, hex.row + dir.row)


Gridi ya safu sawia (EVEN) na isiyo ya kawaida (ODD).

Isiyo ya kawaida-q
var maelekezo = [ [ 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) ] ] chaguo za kukokotoa offset_neighbor(hex, mwelekeo): var parity = hex.col & 1 var dir = maelekezo ya kurudi Hex(hex.col + dir.col, hex.row + dir.row)


Hata-q
var maelekezo = [ [ 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) ] ] chaguo za kukokotoa offset_neighbor(hex, mwelekeo): var parity = hex.col & 1 var dir = maelekezo ya kurudi Hex(hex.col + dir.col, hex.row + dir.row)


Gridi ya safu wima sawa (EVEN) na isiyo ya kawaida (ODD).

Milalo

Kusonga katika nafasi ya "diagonal" katika kuratibu za heksi hubadilisha moja ya viwianishi vitatu vya ujazo na ±2 na vingine viwili kwa ∓1 (jumla lazima ibaki 0).

Var diagonals = [ Mchemraba(+2, -1, -1), Mchemraba(+1, +1, -2), Mchemraba(-1, +2, -1), Mchemraba(-2, +1, +1) ), Mchemraba(-1, -1, +2), Mchemraba(+1, -2, +1) ] kitendakazi mchemraba_diagonal_neighbor(hex, mwelekeo): return cube_add(hex, diagonals)
Kama hapo awali, tunaweza kubadilisha viwianishi hivi kuwa viwianishi vya axial kwa kudondosha moja ya viwianishi vitatu, au kuvibadilisha kuwa viwianishi vya kukabiliana kwa kukokotoa matokeo kwanza.


Umbali

Kuratibu za ujazo

Katika mfumo wa kuratibu wa ujazo, kila hexagon ni mchemraba katika nafasi tatu-dimensional. Heksagoni zinazokaribiana zimewekwa kwa nafasi 1 katika gridi ya heksi, lakini zimewekwa kwa nafasi 2 katika gridi ya mchemraba. Hii inafanya kuhesabu umbali kuwa rahisi. Katika gridi ya miraba, umbali wa Manhattan ni abs(dx) + abs(dy) . Katika gridi ya cubes, umbali wa Manhattan ni abs(dx) + abs(dy) + abs(dz) . Umbali katika gridi ya hexagon ni sawa na nusu yao:

Umbali wa mchemraba wa kazi(a, b): kurudi (a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) / 2
Sawa na nukuu hii itakuwa kusema kwamba moja ya viwianishi vitatu lazima iwe jumla ya hizo mbili, na kisha kuchukua hiyo kama umbali. Unaweza kuchagua fomu ya kupunguza nusu au fomu ya thamani ya juu hapa chini, lakini hutoa matokeo sawa:

Umbali_wa_wa kazi wa mchemraba(a, b): upeo wa juu wa kurudisha(a.x - b.x), abs(a.y - b.y), abs(a.z - b.z))
Katika takwimu, maadili ya juu yanaonyeshwa kwa rangi. Kumbuka pia kwamba kila rangi inawakilisha mojawapo ya maelekezo sita ya "diagonal".

GIF


Kuratibu za Axial

Katika mfumo wa axial, uratibu wa tatu unaonyeshwa kwa uwazi. Wacha tubadilishe kutoka axial hadi cubic ili kuhesabu umbali:

Umbali_wa_utendakazi (a, b): var ac = hex_to_cube(a) var bc = hex_to_cube(b) rudisha mchemraba_umbali(ac, bc)
Ikiwa mkusanyaji aliye ndani (inline) hex_to_cube na cube_distance katika kesi yako, basi itatoa nambari kama hii:

Umbali_wa_utendakazi (a, b): kurudi (a.q - b.q) + abs(a.q + a.r - b.q - b.r) + abs(a.r - b.r)) / 2
Kuna njia nyingi tofauti za kuandika umbali kati ya hexagons katika kuratibu za axial, lakini bila kujali njia ya uandishi. umbali kati ya hexagoni katika mfumo wa axial hutolewa kutoka umbali wa Manhattan katika mfumo wa ujazo. Kwa mfano, "tofauti ya tofauti" iliyoelezwa hupatikana kwa kuandika a.q + a.r - b.q - b.r kama a.q - b.q + a.r - b.r na kutumia fomu ya thamani ya juu badala ya fomu ya mgawanyiko cube_distance . Zote zinafanana ikiwa unaona unganisho na kuratibu za ujazo.

Kuratibu za kukabiliana

Kama ilivyo kwa kuratibu za axial, tunabadilisha kuratibu za kukabiliana na kuratibu za ujazo na kisha kutumia umbali wa ujazo.

Umbali_wa_utendakazi(a, b): var ac = offset_to_cube(a) var bc = offset_to_cube(b) return cube_distance(ac, bc)
Tutatumia muundo sawa kwa algoriti nyingi: badilisha kutoka hexagoni hadi cubes, endesha toleo la ujazo la algoriti, na ubadilishe matokeo ya ujazo kuwa viwianishi vya heksagoni (viwianishi vya axial au kukabiliana).

Kuchora mistari

Jinsi ya kuchora mstari kutoka hexagon moja hadi nyingine? Ninatumia ukalimani wa mstari kuchora mistari. Laini huchukuliwa sampuli kwa usawa katika nukta N+1 na inakokotolewa sampuli hizi ziko katika heksagoni zipi.

GIF


  1. Kwanza tunahesabu N, ambayo itakuwa umbali katika hexagons kati ya ncha.
  2. Kisha tunafanya sampuli sawasawa za pointi za N+1 kati ya pointi A na B. Kwa kutumia tafsiri ya mstari, tunaamua kwamba kwa maadili ya i kutoka 0 hadi N ikiwa ni pamoja na, kila pointi itakuwa A + (B - A) * 1.0/N * i. Katika takwimu, pointi hizi za udhibiti zinaonyeshwa kwa bluu. Matokeo yake ni kuratibu za sehemu zinazoelea.
  3. Wacha tubadilishe kila sehemu ya kudhibiti (kuelea) kurudi kwa hexagons (int). Algorithm inaitwa cube_round (tazama hapa chini).
Weka kila kitu pamoja ili kuchora mstari kutoka A hadi B:

Kazi ya lerp(a, b, t): // kwa kuelea inarudi a + (b - a) * t kitendakazi cube_lerp(a, b, t): // kwa hexagoni inarudi Cube(lep(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)) chaguo za kukokotoa cube_linedraw(a, b): var N = mchemraba_distance(a, b) var matokeo = kwa kila 0 ≤ i ≤ N: matokeo.append( mchemraba_mviringo(cube_lerp(a, b, 1.0/N * i))) rudisha matokeo
Vidokezo:

  • Kuna hali ambapo cube_lerp inarudisha nukta ambayo iko kwenye ukingo kati ya hexagoni mbili. Kisha mchemraba_pande zote unaisogeza kwa mwelekeo mmoja au mwingine. Mistari inaonekana bora ikiwa inahamishwa kwa mwelekeo mmoja. Hii inaweza kufanywa kwa kuongeza "epsilon" -Mchemraba wa hexagonal(1e-6, 1e-6, -2e-6) kwenye ncha moja au zote mbili kabla ya kuanza kitanzi. Hii "itagusa" mstari kwa mwelekeo mmoja ili isigonge kingo.
  • Algorithm ya mstari wa DDA katika gridi za mraba inalingana na N hadi umbali wa juu zaidi kwenye kila shoka. Tunafanya vivyo hivyo katika nafasi ya ujazo, ambayo ni sawa na umbali katika gridi ya hexagon.
  • Kazi ya mchemraba_lerp inapaswa kurudisha mchemraba na viwianishi vya kuelea. Ikiwa unapanga programu katika lugha iliyochapishwa kwa takwimu, hutaweza kutumia aina ya Mchemraba. Unaweza kufafanua aina ya FloatCube badala yake, au kuweka kitendakazi katika mstari wa msimbo wako wa kuchora ikiwa hutaki kufafanua aina nyingine.
  • Unaweza kuboresha msimbo kwa cube_lerp ya ndani kisha ukokotoa B.x-A.x , B.x-A.y na 1.0/N nje ya kitanzi. Kuzidisha kunaweza kubadilishwa kuwa muhtasari unaorudiwa. Matokeo yake yatakuwa kitu kama algoriti ya mstari wa DDA.
  • Ninatumia kuratibu za axial au cubic kuchora mistari, lakini ikiwa unataka kufanya kazi na kuratibu za kukabiliana, angalia.
  • Kuna chaguzi nyingi za kuchora mistari. Wakati mwingine "overcoating" inahitajika. Nilitumiwa nambari ya kuchora mistari iliyofunikwa sana katika hexagoni, lakini bado sijaiangalia.

Masafa ya kusonga

Kuratibu mbalimbali

Kwa kuzingatia kituo cha heksagoni na safu N, ni heksagoni zipi ziko ndani ya hatua N yake?

Tunaweza kufanya kinyume kutoka kwa fomula ya umbali kati ya hexagoni umbali = max(abs(dx), abs(dy), abs(dz)) . Ili kupata heksagoni zote ndani ya N tunahitaji max(abs(dx), abs(dy), abs(dz)) ≤ N . Hii inamaanisha kuwa thamani zote tatu zinahitajika: abs(dx) ≤ N na abs(dy) ≤ N na abs(dz) ≤ N . Kuondoa thamani kamili, tunapata -N ≤ dx ≤ N na -N ≤ dy ≤ N na -N ≤ dz ≤ N . Kwa nambari hii itakuwa kitanzi kilichowekwa:

Var matokeo = kwa kila -N ≤ dx ≤ N: kwa kila -N ≤ dy ≤ N: kwa kila -N ≤ dz ≤ N: ikiwa dx + dy + dz = 0: matokeo.ongeza(cube_add(katikati, Cube(dx) , dy, dz)))
Mzunguko huu utafanya kazi, lakini hautakuwa na ufanisi kabisa. Kati ya thamani zote za dz ambazo tunapitia, ni moja tu inayokidhi hali ya mchemraba dx + dy + dz = 0. Badala yake, tutahesabu moja kwa moja thamani ya dz kukidhi hali:

Var matokeo = kwa kila -N ≤ dx ≤ N: kwa kila max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy results.append(cube_add( kituo, Mchemraba(dx, dy, dz)))
Mzunguko huu unapita tu kando ya kuratibu zinazohitajika. Katika takwimu, kila safu ni jozi ya mistari. Kila mstari ni usawa. Tunachukua hexagons zote zinazokidhi ukosefu wa usawa sita.

GIF


Masafa yanayopishana

Ikiwa unahitaji kupata heksagoni ambazo ziko katika safu nyingi, unaweza kukatiza safu kabla ya kutoa orodha ya heksagoni.

Unaweza kukabiliana na tatizo hili kutoka kwa mtazamo wa algebra au jiometri. Kwa algebra, kila eneo linaonyeshwa kama hali ya usawa ya fomu -N ≤ dx ≤ N , na tunahitaji kupata makutano ya masharti haya. Kijiometri, kila eneo ni mchemraba katika nafasi ya 3D, na tutakatiza cubes mbili katika nafasi ya 3D ili kupata cuboid katika nafasi ya 3D. Kisha tunairejesha kwenye ndege ya x + y + z = 0 ili kupata hexagoni. Nitasuluhisha shida hii kwa algebra.

Kwanza, tunaandika upya hali -N ≤ dx ≤ N kwa fomu ya jumla zaidi x min ≤ x ≤ x max , na kuchukua x min = center.x - N na x max = center.x + N . Wacha tufanye vivyo hivyo kwa y na z, na kusababisha muundo wa jumla wa nambari kutoka kwa sehemu iliyotangulia:

Var matokeo = kwa kila xmin ≤ x ≤ xmax: kwa kila max(ymin, -x-zmax) ≤ y ≤ min(ymax, -x-zmin): var z = -x-y matokeo.append(Cube(x, y, z))
Makutano ya safu mbili a ≤ x ≤ b na c ≤ x ≤ d ni max(a, c) ≤ x ≤ min(b, d) . Kwa kuwa eneo la hexagoni limeonyeshwa kama safu juu ya x, y, z, tunaweza kukatiza kila safu x, y, z kando na kisha kutumia kitanzi kilichowekwa ili kutoa orodha ya hexagoni kwenye makutano. Kwa eneo moja la hexagoni tunachukua x min = H.x - N na x max = H.x + N , vile vile kwa y na z . Kwa makutano ya mikoa miwili ya hexagons, tunachukua x min = max (H1.x - N, H2.x - N) na x max = min(H1.x + N, H2.x + N), vile vile kwa y na z . Mchoro sawa hufanya kazi kwa makutano ya maeneo matatu au zaidi.

GIF


Vikwazo

Ikiwa kuna vikwazo, njia rahisi ni kujaza kizuizi cha umbali (utafutaji wa upana-kwanza). Katika takwimu hapa chini tunajizuia kwa hatua nne. Katika msimbo, pindo[k] ni safu ya hexagoni zote zinazoweza kufikiwa kwa hatua k. Kila wakati tunapitia kitanzi kikuu, tunapanua kiwango cha k-1 kwa kiwango cha k.

Kazi cube_reachable(anza, harakati): var alitembelea = set() ongeza anza kwenye var fringes = fringes.append() kwa kila 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

Inageuka

Kwa kuzingatia vekta ya heksagoni (tofauti kati ya heksagoni mbili), huenda tukahitaji kuizungusha ili ielekeze kwenye heksagoni nyingine. Hii ni rahisi kufanya na kuratibu za ujazo ikiwa unashikamana na mzunguko wa mzunguko wa 1/6.

Mzunguko wa 60° kwenda kulia husogeza kila kuratibu nafasi moja kwenda kulia:

[ x, y, z] hadi [-z, -x, -y]
Mzunguko wa 60° kuelekea kushoto husogeza kila moja kuratibu nafasi moja kwenda kushoto:

[ x, y, z] hadi [-y, -z, -x]



“Baada ya kucheza” [katika makala asili] na mchoro, unaweza kuona kwamba kila mzunguko ni 60° mabadiliko ishara na kimwili "huzunguka" kuratibu. Baada ya mzunguko wa 120 °, ishara zinakuwa sawa tena. Mzunguko wa 180° hubadilisha ishara, lakini viwianishi hurudi kwenye nafasi yao ya asili.

Hapa kuna mlolongo kamili wa mzunguko wa nafasi P kuzunguka nafasi ya kati C, na kusababisha nafasi mpya R:

  1. Badilisha nafasi za P na C kuwa viwianishi vya ujazo.
  2. Kuhesabu vekta kwa kutoa katikati: P_from_C = P - C = Cube(P.x - C.x, P.y - C.y, P.z - C.z) .
  3. Zungusha vekta P_from_C kama ilivyoelezwa hapo juu na upe vekta ya mwisho jina R_from_C .
  4. Kurejesha vekta kwenye nafasi kwa kuongeza kituo: 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. Hugeuza nafasi ya ujazo R kurudi kwenye mfumo unaotaka wa kuratibu.
Kuna hatua kadhaa za mabadiliko, lakini kila moja ni rahisi sana. Inawezekana kufupisha baadhi ya hatua hizi kwa kufafanua mzunguko moja kwa moja katika kuratibu za axial, lakini veta za hex hazifanyi kazi na kuratibu za kukabiliana, na sijui jinsi ya kufupisha hatua za kuratibu za kukabiliana. Tazama pia majadiliano juu ya stackexchange kwa njia zingine za kukokotoa mzunguko.

Pete

Pete rahisi

Ili kujua ikiwa hexagon iliyopewa ni ya pete ya radius iliyopewa, unahitaji kuhesabu umbali kutoka kwa hexagon hii hadi katikati, na ujue ikiwa ni sawa na radius. Ili kupata orodha ya hexagons zote kama hizo, unahitaji kuchukua hatua za radius kutoka katikati, na kisha ufuate vekta zinazozunguka kwenye njia kando ya pete.

Function cube_ring(katikati, radius): var results = # nambari hii haifanyi kazi kwa radius == 0; unaelewa kwanini? var mchemraba = mchemraba_add(katikati, mchemraba_mwelekeo(mchemraba_mwelekeo(4), radius)) kwa kila 0 ≤ i< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
Katika kanuni hii, mchemraba huanza kwenye pete, iliyoonyeshwa kwa mshale mkubwa kutoka katikati hadi kona ya mchoro. Nilichagua angle 4 kuanza nayo kwa sababu inalingana na njia ambayo nambari za mwelekeo wangu zinasonga. Huenda ukahitaji pembe tofauti ya kuanzia. Katika kila hatua ya kitanzi cha ndani, mchemraba husogeza hexagoni moja kuzunguka pete. Baada ya hatua 6 * za radius anaishia pale alipoanzia.


Pete za ond

Kwa kupitia pete katika muundo wa ond, tunaweza kujaza sehemu za ndani za pete:

Kazi ya mchemraba_spiral(katikati, radius): var results = kwa kila 1 ≤ k ≤ radius: matokeo = matokeo + mchemraba_ring(katikati, k) matokeo ya kurejesha



Eneo la hexagon kubwa ni jumla ya miduara yote pamoja na 1 ya katikati. Tumia fomula hii kuhesabu eneo.

Kuvuka hexagoni kwa njia hii pia inaweza kutumika kuhesabu anuwai ya harakati (tazama hapo juu).

Eneo la kuonekana

Ni nini kinachoonekana kutoka kwa nafasi iliyopewa kwa umbali fulani, na haijazuiwa na vizuizi? Njia rahisi zaidi ya kuamua hii ni kuchora mstari kwa kila heksagoni katika safu fulani. Ikiwa mstari haukutana na kuta, basi unaona hexagon. Sogeza kipanya chako juu ya heksagoni [kwenye mchoro katika makala asili] ili kuona jinsi mistari inavyochorwa kwa hexagoni hizi na kuta ambazo mistari hukutana.

Algorithm hii inaweza kuwa polepole juu ya maeneo makubwa, lakini ni rahisi kutekeleza, kwa hiyo napendekeza kuanza nayo.

GIF



Kuna fasili nyingi tofauti za mwonekano. Je, ungependa kuona katikati ya heksagoni nyingine kutoka katikati ya ile ya asili? Je, ungependa kuona sehemu yoyote ya heksagoni nyingine kutoka katikati ya ile ya asili? Labda sehemu yoyote ya hexagons nyingine kutoka kwa hatua yoyote ya ile ya kwanza? Vikwazo vinavyozuia mtazamo wako ni vidogo kuliko hexagon kamili? Upeo ni dhana gumu na tofauti zaidi kuliko inavyoonekana mwanzoni. Wacha tuanze na algorithm rahisi zaidi, lakini tarajia kuwa hakika itahesabu jibu kwa usahihi katika mradi wako. Kuna hata matukio wakati algorithm rahisi hutoa matokeo yasiyo na mantiki.

Ninataka kupanua mwongozo huu katika siku zijazo. Nimewahi