Kā uzzīmēt taisnu 6 kvadrātu. Regulāru daudzstūru veidošana ap apli. Perimetrs un platība

Dažās spēlēs tiek izmantoti sešstūra režģi (sešstūra režģi), taču tie nav tik vienkārši vai izplatīti kā taisnstūra režģi. Es esmu apkopojis resursus par sešstūra sietu gandrīz 20 gadus, un es uzrakstīju šo rokasgrāmatu par elegantākajām pieejām, kas ieviestas vienkāršākajā kodā. Šajā rakstā plaši izmantotas Čārlza Fu un Klārka Verbrudža rokasgrāmatas. Es aprakstīšu dažādus sešstūra tīklu veidošanas veidus, to attiecības un visbiežāk izmantotos algoritmus. Daudzas šī raksta daļas ir interaktīvas: izvēloties režģa veidu, tiek mainītas atbilstošās diagrammas, kods un teksti. (Piezīme per.: tas attiecas tikai uz oriģinālu, iesaku to izpētīt. Tulkojumā tiek saglabāta visa oriģināla informācija, bet bez interaktivitātes.).

Rakstā iekļautie kodu piemēri ir rakstīti pseidokodā, tāpēc tos ir vieglāk lasīt un saprast, lai varētu izveidot savu implementāciju.

Ģeometrija

Sešstūri ir sešu malu daudzstūri. Regulāriem sešstūriem visas malas (malas) ir vienāda garuma. Mēs strādāsim tikai ar parastajiem sešstūriem. Parasti sešstūra acīm tiek izmantota horizontāla (smaila augšdaļa) un vertikāla (līdzena augšdaļa) orientācija.


Sešstūri ar plakanām (pa kreisi) un asām (labajām) virsotnēm

Sešstūriem ir 6 skaldnes. Katra seja ir kopīga diviem sešstūriem. Sešstūriem ir 6 stūra punkti. Katrs stūra punkts ir kopīgs trim sešstūriem. Vairāk par centriem, malām un stūra punktiem varat lasīt manā rakstā par sieta daļām (kvadrātiem, sešstūriem un trīsstūriem).

Leņķi

Regulārā sešstūrī iekšējie leņķi ir 120°. Ir seši "ķīļi", no kuriem katrs ir vienādmalu trīsstūris ar 60° iekšējiem leņķiem. Stūra punkts i atrodas attālumā (60° * i) + 30°, izmēra vienības no centra centra. Kodā:

Funkcija hex_corner(center, size, i): var leņķis_deg = 60 * i + 30 var leņķis_rad = PI / 180 * leņķa_grāds return Point(centrs.x + izmērs * cos(leņķis_rad), centrs.y + izmērs * sin(leņķa_rad) )
Lai aizpildītu sešstūri, jums jāiegūst daudzstūra virsotnes no hex_corner(…, 0) līdz hex_corner(…, 5). Lai uzzīmētu sešstūra kontūru, jāizmanto šīs virsotnes un pēc tam vēlreiz jānovelk līnija hex_corner(..., 0) .

Atšķirība starp abām orientācijām ir tāda, ka x un y tiek apmainīti, kā rezultātā mainās leņķi: sešstūriem ar plakanu augšdaļu ir leņķi 0°, 60°, 120°, 180°, 240°, 300° un ar smailo augšdaļu. sešstūriem ir 30°, 90°, 150°, 210°, 270°, 330° leņķi.


Sešstūru stūri ar plakanām un asām virsotnēm

Izmērs un atrašanās vieta

Tagad mēs vēlamies novietot vairākus sešstūrus kopā. Horizontālā orientācijā sešstūra augstums ir augstums = izmērs * 2 . Vertikālais attālums starp blakus esošajiem sešstūriem ir vert = augstums * 3/4.

Sešstūra platums platums = sqrt(3)/2 * augstums . Horizontālais attālums starp blakus esošajiem sešstūriem ir horizonts = platums.

Dažās spēlēs sešstūriem tiek izmantots pikseļu attēls, kas precīzi neatbilst parastajiem sešstūriem. Šajā sadaļā aprakstītās leņķa un izvietojuma formulas neatbilst šādu sešstūru izmēriem. Pārējā raksta daļa, kurā aprakstīti sešstūra tīkla acs algoritmi, ir spēkā pat tad, ja sešstūri ir nedaudz izstiepti vai saspiesti.



Koordinātu sistēmas

Sāksim sešstūru salikšanu režģī. Kvadrātu režģu gadījumā ir tikai viens acīmredzams montāžas veids. Sešstūriem ir daudz pieeju. Kā primāro attēlojumu iesaku izmantot kubiskās koordinātas. Aksiālās koordinātas vai nobīdes koordinātas ir jāizmanto, lai saglabātu kartes un parādītu koordinātas lietotājam.

Nobīdes koordinātas

Visizplatītākā pieeja ir katras nākamās kolonnas vai rindas nobīde. Kolonnas ir apzīmētas ar kolonnu vai q. Rindas tiek apzīmētas ar rindu vai r . Varat nobīdīt nepāra vai pāra kolonnas/rindas, tāpēc horizontālajiem un vertikālajiem sešstūriem ir divas iespējas.


Horizontālais izvietojums "nepāra-r"


Horizontālais izvietojums “vienmērīgs-r”


Vertikāls "nepāra-q" izvietojums


Vertikālais izvietojums “vienmērīgs-q”

Kubiskās koordinātas

Vēl viens veids, kā aplūkot sešstūra režģus, ir redzēt tos kā trīs galvenās asis, nevis divi, tāpat kā kvadrātu režģī. Tie parāda elegantu simetriju.

Ņemsim kubu režģi un izgriezīsim to diagonālā plakne pie x + y + z = 0. Šī ir dīvaina ideja, taču tā palīdzēs mums vienkāršot sešstūra tīkla algoritmus. Jo īpaši varēsim izmantot standarta darbības no Dekarta koordinātām: koordinātu summēšanu un atņemšanu, reizināšanu un dalīšanu ar skalāru lielumu, kā arī attālumus.

Ievērojiet trīs galvenās asis kubu režģī un to saistību ar sešām diagonāli sešstūra režģa virzieni. Režģa diagonālās asis atbilst sešstūra režģa galvenajam virzienam.


Sešstūri


kubiņos

Tā kā mums jau ir algoritmi kvadrātveida un kuba acīm, kubisko koordinātu izmantošana ļauj pielāgot šos algoritmus sešstūra acīm. Es izmantošu šo sistēmu lielākajai daļai raksta algoritmu. Lai izmantotu algoritmus ar citu koordinātu sistēmu, es konvertēju kubiskās koordinātas, izpildu algoritmu un pēc tam konvertēju tās atpakaļ.

Uzziniet, kā darbojas kubiskās koordinātas sešstūra tīklam. Atlasot sešstūrus, tiek izceltas kubiskās koordinātas, kas atbilst trim asīm.

  1. Katrs kuba režģa virziens atbilst līnijas uz sešstūru režģa. Mēģiniet atlasīt sešstūri ar z, kas vienāds ar 0, 1, 2, 3, lai redzētu savienojumu. Līnija ir atzīmēta zilā krāsā. Izmēģiniet to pašu ar x (zaļš) un y (violeta).
  2. Katrs sešstūra režģa virziens ir divu kuba režģa virzienu kombinācija. Piemēram, sešstūra režģa "ziemeļi" atrodas starp +y un -z , tāpēc katrs solis "ziemeļos" palielina y par 1 un samazina z par 1.
Kubiskās koordinātas ir saprātīga izvēle sešstūra režģa koordinātu sistēmai. Nosacījums ir x + y + z = 0, tāpēc tas ir jāsaglabā algoritmos. Nosacījums arī nodrošina, ka katram sešstūrim vienmēr būs kanoniskā koordināte.

Tur ir daudz dažādas sistēmas kubu un sešstūru koordinātas. Dažos no tiem nosacījums atšķiras no x + y + z = 0. Es parādīju tikai vienu no daudzajām sistēmām. Varat arī izveidot kubiskās koordinātas ar x-y , y-z , z-x , kurām ir savs interesantu īpašību kopums, bet es šeit neiedziļināšos.

Bet jūs varētu iebilst, ka nevēlaties saglabāt 3 skaitļus koordinātām, jo ​​jūs nezināt, kā saglabāt karti šādā veidā.

Aksiālās koordinātas

Aksiālā koordinātu sistēma, ko dažreiz sauc par "trapecveida" koordinātu sistēmu, tiek veidota no divām vai trim koordinātām no kubiskās koordinātu sistēmas. Tā kā mums ir nosacījums x + y + z = 0, trešā koordināta nav vajadzīga. Aksiālās koordinātas ir noderīgas karšu saglabāšanai un koordinātu parādīšanai lietotājam. Tāpat kā ar kubiskām koordinātām, varat izmantot standarta darbības, saskaitot, atņemot, reizinot un dalot Dekarta koordinātas.

Ir daudz kubisko koordinātu sistēmu un daudzas aksiālās. Šajā rokasgrāmatā es neapskatīšu visas kombinācijas. Es atlasīšu divus mainīgos, q (kolonna) un r (rinda). Šī raksta diagrammās q atbilst x un r atbilst z, taču šī atbilstība ir patvaļīga, jo varat pagriezt un pagriezt diagrammas, lai iegūtu dažādas atbilstības.

Šīs sistēmas priekšrocība salīdzinājumā ar pārvietošanas režģiem ir tā, ka algoritmi ir saprotamāki. Sistēmas mīnuss ir tāds, ka taisnstūrveida kartes glabāšana ir nedaudz dīvaina; skatiet sadaļu par karšu saglabāšanu. Daži algoritmi ir vēl skaidrāki kubiskajās koordinātēs, taču, tā kā mums ir nosacījums x + y + z = 0, mēs varam aprēķināt trešo netiešo koordinātu un izmantot to šajos algoritmos. Savos projektos es saucu asis q, r, s, tāpēc nosacījums izskatās kā q + r + s = 0, un es varu aprēķināt s = -q - r, kad nepieciešams.

Asis

Nobīdes koordinātas ir pirmā lieta, par ko cilvēki domā, jo tās ir tādas pašas kā standarta Dekarta koordinātas, ko izmanto kvadrātu režģiem. Diemžēl vienai no divām asīm ir jāskrien pret graudu, un tas galu galā visu sarežģī. Kubu un asu sistēmas iet tālumā, un tām ir vienkāršāki algoritmi, taču karšu glabāšana ir nedaudz sarežģītāka. Ir vēl viena sistēma, ko sauc par “mainīgo” vai “duālo”, taču mēs to šeit neapskatīsim; dažiem ir vieglāk strādāt nekā ar kubisku vai aksiālu.


Nobīdes koordinātas, kubiskās un aksiālās

Ass ir virziens, kurā pieaug atbilstošā koordināte. Perpendikulāra asij ir līnija, uz kuras koordinātas paliek nemainīgas. Iepriekš redzamās režģa diagrammas parāda perpendikulāras līnijas.

Koordinātu transformācija

Visticamāk, ka savā dizainā izmantosit aksiālās vai nobīdes koordinātas, taču daudzus algoritmus ir vieglāk izteikt kubiskajās koordinātēs. Tāpēc mums ir jāspēj konvertēt koordinātas starp sistēmām.

Aksiālās koordinātas ir cieši saistītas ar kubiskajām koordinātām, tāpēc pārveidošana ir vienkārša:

# pārvērst kubiskās koordinātas aksiālās koordinātes q = x r = z # konvertēt aksiālās koordinātas kubiskajās koordinātes x = q z = r y = -x-z
Kodā šīs divas funkcijas var uzrakstīt šādi:

Funkcija cube_to_hex(h): # aksiālā var q = h.x var r = h.z return Hex(q, r) funkcija hex_to_cube(h): # kub.var x = h.q var z = h.r var y = -x-z return Cube(x, y) , z)
Nobīdes koordinātas ir nedaudz sarežģītākas:

Blakus esošie sešstūri

Ja ir dots viens sešstūris, kādiem sešiem sešstūriem tas atrodas blakus? Kā jūs varētu gaidīt, atbilde ir visvieglākā kubiskajās koordinātēs, diezgan vienkārša aksiālās koordinātās un nedaudz grūtāka pārvietošanās koordinātās. Jums var būt nepieciešams arī aprēķināt sešus "diagonālos" sešstūrus.

Kubiskās koordinātas

Pārvietojot vienu atstarpi hex koordinātēs, viena no trim kubiskajām koordinātām mainās uz +1, bet otra uz -1 (summai jāpaliek 0). Pie +1 var mainīties trīs iespējamās koordinātas, bet pie -1 — atlikušās divas. Tas dod mums sešas iespējamās izmaiņas. Katrs atbilst vienam no sešstūra virzieniem. Vienkāršākais un ātrākais veids- iepriekš aprēķiniet izmaiņas un kompilēšanas laikā ievietojiet tās kubisko koordinātu tabulā Cube(dx, dy, dz):

Var virzieni = [ Kubs(+1, -1, 0), Kubs(+1, 0, -1), Kubs(0, +1, -1), Kubs(-1, +1, 0), Kubs( -1, 0, +1), Cube(0, -1, +1) ] funkcija cube_direction(direction): atgriešanās virzieni funkcija cube_neighbor(hex, direction): return cube_add(hex, cube_direction(direction))

Aksiālās koordinātas

Tāpat kā iepriekš, mēs sākam izmantot kubisko sistēmu. Ņemsim tabulu Cube(dx, dy, dz) un pārveidosim to par Hex(dq, dr) tabulu:

Var virzieni = [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0, +1) ] funkcija hex_direction(direction): atgriešanās virzieni funkcija hex_neighbor(hex, direction): var dir = hex_direction(direction) return Hex(hex.q + dir.q, hex.r + dir.r)

Nobīdes koordinātas

Aksiālās koordinātās mēs veicam izmaiņas atkarībā no tā, kur mēs atrodamies režģī. Ja atrodamies nobīdes kolonnā/rindā, tad noteikums atšķiras no kolonnas/rindas bez nobīdes gadījuma.

Tāpat kā iepriekš, mēs izveidojam skaitļu tabulu, kas jāpievieno kolonnai un rindai . Tomēr šoreiz mums būs divi masīvi, viens nepāra kolonnām/rindām un otrs pāra kolonnām/rindām. Apskatiet (1,1) iepriekš redzamajā režģa kartes attēlā un ievērojiet, kā mainās kolonna un rinda, pārvietojoties katrā no sešiem virzieniem. Tagad atkārtosim procesu ar (2,2) . Tabulas un kods būs atšķirīgi katram no četriem pārvietošanas režģu veidiem. Šeit ir katram tīkla veidam atbilstošais kods.

Odd-r
vari virzieni = [ [ 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) ] ] funkcija offset_neighbor(hex, direction): var parity = hex.row & 1 var dir = virzieni return Hex(hex.col + dir.col, hex.row + dir.row)


Even-r
vari virzieni = [ [ 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) ] ] funkcija offset_neighbor(hex, direction): var parity = hex.row & 1 var dir = virzieni return Hex(hex.col + dir.col, hex.row + dir.row)


Režģis pāra (PĀRĀ) un nepāra (ODD) rindām

Nepāra q
vari virzieni = [ [ 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) ] ] funkcija offset_neighbor(hex, direction): var parity = hex.col & 1 var dir = virzieni return Hex(hex.col + dir.col, hex.row + dir.row)


Pat-q
vari virzieni = [ [ 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) ] ] funkcija offset_neighbor(hex, direction): var parity = hex.col & 1 var dir = virzieni return Hex(hex.col + dir.col, hex.row + dir.row)


Režģis pāra (PĀRĀ) un nepāra (ODD) kolonnām

Diagonāles

Pārvietojoties "diagonālajā" telpā heksadesimālajās koordinātēs, viena no trim kubiskajām koordinātām mainās par ±2 un pārējās divas par ∓1 (summai jāpaliek 0).

Var diagonāles = [ Kubs(+2, -1, -1), Kubs(+1, +1, -2), Kubs(-1, +2, -1), Kubs(-2, +1, +1 ), Cube(-1, -1, +2), Cube(+1, -2, +1) ] funkcija cube_diagonal_neighbor(hex, direction): return cube_add(hex, diagonals)
Tāpat kā iepriekš, mēs varam pārvērst šīs koordinātas par aksiālām koordinātām, nometot vienu no trim koordinātām, vai pārvērst tās par nobīdes koordinātām, vispirms aprēķinot rezultātus.


Attālumi

Kubiskās koordinātas

Kubiskajā koordinātu sistēmā katrs sešstūris ir kubs trīsdimensiju telpā. Blakus esošie sešstūri sešstūra režģī ir izvietoti 1 attālumā viens no otra, bet kubu režģī - 2 attālumā. Tas padara attāluma aprēķināšanu vienkāršu. Kvadrātu režģī Manhetenas attālumi ir abs(dx) + abs(dy) . Kubu režģī Manhetenas attālumi ir abs(dx) + abs(dy) + abs(dz) . Attālums sešstūra režģī ir vienāds ar pusi no tiem:

Funkcija cube_distance(a, b): atgriešanās (abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) / 2
Šī apzīmējuma ekvivalents būtu teikt, ka vienai no trim koordinātām ir jābūt pārējo divu summu summai, un pēc tam ņemt to par attālumu. Tālāk varat izvēlēties pusi sadalīšanas formu vai maksimālās vērtības formu, taču tās dod tādu pašu rezultātu:

Funkcija cube_distance(a, b): atgriešanās maks.(abs(a.x - b.x), abs(a.y - b.y), abs(a.z - b.z))
Attēlā maksimālās vērtības ir izceltas krāsā. Ņemiet vērā arī to, ka katra krāsa apzīmē vienu no sešiem "diagonāles" virzieniem.

GIF


Aksiālās koordinātas

Aksiālajā sistēmā trešā koordināta ir izteikta netieši. Pārvērsīsim no aksiālās uz kubisko, lai aprēķinātu attālumu:

Funkcija hex_distance(a, b): var ac = hex_to_cube(a) var bc = hex_to_cube(b) return cube_distance(ac, bc)
Ja jūsu gadījumā kompilators inline (inline) hex_to_cube un cube_distance, tas ģenerēs šādu kodu:

Funkcija hex_distance(a, b): atgriešanās (abs(a.q - b.q) + abs(a.q + a.r - b.q - b.r) + abs(a.r - b.r)) / 2
Ir daudz dažādu veidu, kā ierakstīt attālumus starp sešstūriem aksiālās koordinātēs, taču neatkarīgi no rakstīšanas metodes attālums starp sešstūriem aksiālajā sistēmā tiek iegūts no Manhetenas attāluma kubiskajā sistēmā. Piemēram, aprakstīto "atšķirību starpību" iegūst, rakstot a.q + a.r - b.q - b.r kā a.q - b.q + a.r - b.r un sadalīšanas formas kuba_attālums vietā izmantojot maksimālās vērtības formu. Tie visi ir līdzīgi, ja redzat saikni ar kubiskām koordinātām.

Nobīdes koordinātas

Tāpat kā ar aksiālajām koordinātām, mēs pārvēršam nobīdes koordinātas kubiskajās koordinātēs un pēc tam izmantojam kubisko attālumu.

Funkcija offset_distance(a, b): var ac = nobīde_uz kubu(a) var bc = nobīde_kubam(b) return cube_distance(ac, bc)
Mēs izmantosim to pašu modeli daudziem algoritmiem: konvertējiet no sešstūriem kubos, palaidiet algoritma kubisko versiju un pārveidosim kubiskos rezultātus sešstūra koordinātēs (aksiālās vai nobīdes koordinātēs).

Līniju zīmēšana

Kā novilkt līniju no viena sešstūra uz otru? Es izmantoju lineāro interpolāciju, lai zīmētu līnijas. Līnijai tiek vienmērīgi paraugi N+1 punktos un tiek aprēķināts, kuros sešstūros šie paraugi atrodas.

GIF


  1. Vispirms mēs aprēķinām N, kas būs attālums sešstūros starp galapunktiem.
  2. Pēc tam vienmērīgi paraugam N+1 punktu starp punktiem A un B. Izmantojot lineāro interpolāciju, mēs nosakām, ka i vērtībām no 0 līdz N, ieskaitot tās, katrs punkts būs A + (B - A) * 1,0/N * es . Attēlā šie kontroles punkti ir parādīti zilā krāsā. Rezultāts ir peldošā punkta koordinātas.
  3. Pārvērsim katru kontrolpunktu (pludiņu) atpakaļ sešstūros (int). Algoritmu sauc par cube_round (skat. zemāk).
Salieciet visu, lai novilktu līniju no A līdz B:

Funkcija lerp(a, b, t): // pludiņa atgriešanai a + (b - a) * t funkcija cube_lerp(a, b, t): // sešstūriem atgriež Cube(lerp(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)) funkcija cube_linedraw(a, b): var N = cube_distance(a, b) var rezultāti = katram 0 ≤ i ≤ N: results.append( cube_round(cube_lerp(a, b, 1.0/N * i))) atgriež rezultātus
Piezīmes:

  • Ir gadījumi, kad cube_lerp atgriež punktu, kas atrodas tieši uz malas starp diviem sešstūriem. Tad cube_round pārvieto to vienā vai otrā virzienā. Līnijas izskatās labāk, ja tās tiek pārvietotas vienā virzienā. To var izdarīt, pirms cilpas sākšanas vienam vai abiem galapunktiem pievienojot "epsilona" sešstūra kubu (1e-6, 1e-6, -2e-6). Tas "nobīdīs" līniju vienā virzienā, lai tā nesaskartos pret malām.
  • DDA līniju algoritms kvadrātveida režģos pielīdzina N maksimālajam attālumam pa katru no asīm. Mēs darām to pašu kubiskajā telpā, kas ir līdzīga attālumam sešstūra režģī.
  • Funkcijai cube_lerp ir jāatgriež kubs ar peldošās koordinātām. Ja programmējat statiski drukātā valodā, nevarēsit izmantot Cube tipu. Tā vietā varat definēt FloatCube tipu vai iekļaut funkciju līnijas zīmēšanas kodā, ja nevēlaties definēt citu veidu.
  • Varat optimizēt kodu, izmantojot inline cube_lerp, un pēc tam ārpus cilpas aprēķināt B.x-A.x , B.x-A.y un 1.0/N. Reizināšanu var pārvērst par atkārtotu summēšanu. Rezultāts būs kaut kas līdzīgs DDA līnijas algoritmam.
  • Es izmantoju aksiālās vai kubiskās koordinātas, lai zīmētu līnijas, bet, ja vēlaties strādāt ar nobīdes koordinātām, pārbaudiet .
  • Līniju zīmēšanai ir daudz iespēju. Dažreiz ir nepieciešama "pārklāšana". Man tika nosūtīts kods īpaši pārklātu līniju zīmēšanai sešstūros, bet es to vēl neesmu apskatījis.

Kustības diapazons

Koordinātu diapazons

Kuri sešstūri atrodas N soļu rādiusā, ņemot vērā sešstūra centru un diapazonu N?

Mēs varam izdarīt apgriezto no attāluma formulas starp sešstūriem attālums = max(abs(dx), abs(dy), abs(dz)) . Lai atrastu visus sešstūrus N robežās, mums ir nepieciešams max(abs(dx), abs(dy), abs(dz)) ≤ N . Tas nozīmē, ka ir vajadzīgas visas trīs vērtības: abs(dx) ≤ N un abs(dy) ≤ N un abs(dz) ≤ N . Noņemot absolūto vērtību, iegūstam -N ≤ dx ≤ N un -N ≤ dy ≤ N un -N ≤ dz ≤ N . Kodā tā būs ligzdota cilpa:

Var rezultāti = katram -N ≤ dx ≤ N: katram -N ≤ dy ≤ N: katram -N ≤ dz ≤ N: ja dx + dy + dz = 0: rezultāti.append(cube_add(centrs, Cube(dx) , dy, dz)))
Šis cikls darbosies, taču tas būs diezgan neefektīvs. No visām dz vērtībām, kurām mēs cilpa, tikai viena faktiski atbilst kuba nosacījumam dx + dy + dz = 0. Tā vietā mēs tieši aprēķināsim dz vērtību, kas atbilst nosacījumam:

Var rezultāti = katram -N ≤ dx ≤ N: katram max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy rezultāti.append(cube_add( centrs, kubs(dx, dy, dz)))
Šis cikls iet tikai pa nepieciešamajām koordinātām. Attēlā katrs diapazons ir līniju pāris. Katra rinda ir nevienlīdzība. Mēs ņemam visus sešstūrus, kas atbilst sešām nevienādībām.

GIF


Diapazoni pārklājas

Ja jums ir jāatrod sešstūri, kas atrodas vairākos diapazonos, pirms sešstūru saraksta izveides varat šķērsot diapazonus.

Šai problēmai var pieiet no algebras vai ģeometrijas viedokļa. Algebriski katrs apgabals tiek izteikts kā nevienlīdzības nosacījumi formā -N ≤ dx ≤ N , un mums ir jāatrod šo nosacījumu krustpunkts. Ģeometriski katrs apgabals ir kubs 3D telpā, un mēs krustosim divus kubus 3D telpā, lai iegūtu kuboīdu 3D telpā. Pēc tam mēs to projicējam atpakaļ uz x + y + z = 0 plakni, lai iegūtu sešstūrus. Es atrisināšu šo uzdevumu algebriski.

Vispirms mēs pārrakstām nosacījumu -N ≤ dx ≤ N vispārīgākā formā x min ≤ x ≤ x max , un ņemam x min = centrs.x - N un x max = centrs.x + N . Darīsim to pašu ar y un z, iegūstot iepriekšējās sadaļas koda vispārējo formu:

Var rezultāti = katram xmin ≤ x ≤ xmax: katram max(ymin, -x-zmax) ≤ y ≤ min(ymax, -x-zmin): var z = -x-y rezultāti.append(Cube(x, y, z))
Divu diapazonu a ≤ x ≤ b un c ≤ x ≤ d krustpunkts ir max(a, c) ≤ x ≤ min(b, d) . Tā kā sešstūru laukums ir izteikts kā diapazoni virs x, y, z, mēs varam krustot katru no diapazoniem x, y, z atsevišķi un pēc tam izmantot ligzdotu cilpu, lai izveidotu sešstūru sarakstu krustojumā. Vienam sešstūru laukumam mēs ņemam x min = H.x - N un x max = H.x + N , līdzīgi y un z . Divu sešstūra apgabalu krustpunktam mēs ņemam x min = max(H1.x - N, H2.x - N) un x max = min (H1.x + N, H2.x + N), līdzīgi y un z . Tas pats modelis darbojas trīs vai vairāku apgabalu krustojumā.

GIF


Šķēršļi

Ja ir šķēršļi, vienkāršākais veids ir aizpildīt ar attāluma ierobežojumu (meklēšana pēc platuma). Zemāk redzamajā attēlā mēs aprobežojamies ar četrām kustībām. Kodā bārkstis[k] ir visu sešstūru masīvs, ko var sasniegt ar k soļiem. Katru reizi, izejot cauri galvenajai cilpai, mēs paplašinam līmeni k-1 par līmeni k.

Funkcija cube_reachable(sākums, kustība): var apmeklētais = set() pievienot sākumu apmeklētajam var fringes = fringes.append() katram 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

Pagriezieni

Ņemot vērā sešstūra vektoru (atšķirību starp diviem sešstūriem), mums tas var būt jāpagriež tā, lai tas norādītu uz citu sešstūri. To ir viegli izdarīt ar kubiskām koordinātām, ja pieturaties pie 1/6 apļa rotācijas.

60° pagriešana pa labi pārvieto katru koordinātu par vienu pozīciju pa labi:

[x, y, z] līdz [-z, -x, -y]
60° pagriešana pa kreisi pārvieto katru koordinātu par vienu pozīciju pa kreisi:

[x, y, z] līdz [-y, -z, -x]



“Paspēlējoties” [sākotnējā rakstā] ar diagrammu, var redzēt, ka katrs pagrieziens ir 60° izmaiņas zīmē un fiziski “pagriež” koordinātas. Pēc 120° pagriešanas zīmes atkal kļūst tādas pašas. 180° pagriešana maina zīmes, bet koordinātas atgriežas sākotnējā pozīcijā.

Šeit ir redzama pilnīga pozīcijas P rotācijas secība ap centrālo pozīciju C, kā rezultātā tiek iegūta jauna pozīcija R:

  1. Pārvērtiet P un C pozīcijas kubiskās koordinātēs.
  2. Vektora aprēķināšana, atņemot centru: P_no_C = P - C = Kubs(P.x - C.x, P.y - C.y, P.z - C.z) .
  3. Pagrieziet vektoru P_from_C, kā aprakstīts iepriekš, un piešķiriet galīgajam vektoram apzīmējumu R_from_C.
  4. Vektora pārvēršana atpakaļ pozīcijā, pievienojot centru: R = R_no_C + C = Kubs(R_no_C.x + C.x, R_no_C.y + C.y, R_no_C.z + C.z) .
  5. Pārvērš kubisko pozīciju R atpakaļ vēlamajā koordinātu sistēmā.
Ir vairāki transformācijas posmi, taču katrs no tiem ir diezgan vienkāršs. Dažas no šīm darbībām ir iespējams saīsināt, definējot rotāciju tieši aksiālās koordinātēs, taču hex vektori nedarbojas ar nobīdes koordinātām, un es nezinu, kā saīsināt nobīdes koordinātām paredzētās darbības. Skatiet arī diskusiju par stackexchange, lai uzzinātu par citiem rotācijas aprēķināšanas veidiem.

Gredzeni

Vienkāršs gredzens

Lai noskaidrotu, vai dotais sešstūris pieder gredzenam ar noteikta rādiusa rādiusu, jāaprēķina attālums no šī sešstūra līdz centram un jānoskaidro, vai tas ir vienāds ar rādiusu. Lai iegūtu visu šādu sešstūru sarakstu, jums jāveic rādiusa soļi no centra un pēc tam jāseko pagrieztajiem vektoriem pa ceļu gar gredzenu.

Funkcija cube_ring(centrs, rādiuss): var rezultāti = # šis kods nedarbojas rādiusam == 0; saproti kāpēc? var kubs = kubs_pievienot(centrs, kuba_mērogs(kuba_virziens(4), rādiuss)) katram 0 ≤ i< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
Šajā kodā kubs sākas ar gredzenu, kas parādīts ar lielu bultiņu no diagrammas centra līdz stūrim. Sākumā es izvēlējos leņķi 4, jo tas atbilst ceļam, pa kuru virzās mani virzienu numuri. Jums var būt nepieciešams cits sākuma leņķis. Katrā iekšējās cilpas posmā kubs pārvieto vienu sešstūri ap gredzenu. Pēc 6 * rādiusa soļiem viņš nonāk tur, kur sāka.


Spirālveida gredzeni

Ejot cauri gredzeniem spirālveida veidā, mēs varam aizpildīt gredzenu iekšējās daļas:

Funkcija cube_spiral(centrs, rādiuss): var rezultāti = katram 1 ≤ k ≤ rādiuss: rezultāti = rezultāti + cube_ring(centrs, k) atgriež rezultātus



Liela sešstūra laukums ir visu apļu summa plus 1 centram. Izmantojiet šo formulu, lai aprēķinātu laukumu.

Šādā veidā šķērsojot sešstūrus, var arī aprēķināt kustības diapazonu (skatīt iepriekš).

Redzamības zona

Kas ir redzams no noteiktas pozīcijas noteiktā attālumā un nav bloķēts ar šķēršļiem? Vienkāršākais veids lai to noteiktu, ir jānovelk līnija katram sešstūrim dotajā diapazonā. Ja līnija nesaskaras ar sienām, tad redzat sešstūri. Pārvietojiet peles kursoru virs sešstūriem [sākotnējā raksta diagrammā], lai redzētu, kā līnijas tiek novilktas uz šiem sešstūriem un sienām, ar kurām līnijas saskaras.

Šis algoritms var būt lēns lielos apgabalos, taču to ir viegli ieviest, tāpēc iesaku sākt ar to.

GIF



Ir daudz dažādu redzamības definīciju. Vai vēlaties redzēt cita sešstūra centru no sākotnējā sešstūra centra? Vai vēlaties redzēt kādu cita sešstūra daļu no sākotnējā sešstūra centra? Varbūt kāda cita sešstūra daļa no jebkura sākotnējā punkta? Šķēršļi, kas traucē jūsu skatu, ir mazāki par pilnu sešstūri? Darbības joma ir sarežģītāks un daudzveidīgāks jēdziens, nekā šķiet no pirmā acu uzmetiena. Sāksim ar vienkāršāko algoritmu, taču gaidiet, ka tas noteikti pareizi aprēķinās atbildi jūsu projektā. Ir pat gadījumi, kad vienkāršs algoritms rada neloģiskus rezultātus.

Nākotnē vēlos paplašināt šo rokasgrāmatu. man ir

Saturs:

Parastajam sešstūrim, ko sauc arī par perfektu sešstūri, ir sešas vienādas malas un seši vienādi leņķi. Jūs varat uzzīmēt sešstūri ar mērlenti un transportieri, aptuvenu sešstūri ar apaļu priekšmetu un lineālu vai vēl rupjāku sešstūri, izmantojot tikai zīmuli un nelielu intuīciju. Ja vēlaties uzzināt, kā uzzīmēt sešstūri Dažādi ceļi- vienkārši lasiet tālāk.

Soļi

1 Uzzīmējiet perfektu sešstūri, izmantojot kompasu

  1. 1 Izmantojot kompasu, uzzīmējiet apli. Ievietojiet zīmuli kompasā. Izstiepiet kompasu līdz vēlamajam apļa rādiusa platumam. Rādiuss var būt no pāris līdz desmit centimetriem plats. Pēc tam uz papīra novietojiet kompasu un zīmuli un uzzīmējiet apli.
    • Dažreiz ir vieglāk vispirms uzzīmēt pusi apļa un pēc tam otru pusi.
  2. 2 Pārvietojiet kompasa adatu uz apļa malu. Novietojiet to apļa augšpusē. Nemainiet kompasa leņķi vai pozīciju.
  3. 3 Apļa malā izveidojiet nelielu zīmuļa atzīmi. Padariet to atšķirīgu, bet ne pārāk tumšu, jo vēlāk to izdzēsīsit. Atcerieties saglabāt kompasam iestatīto leņķi.
  4. 4 Pārvietojiet kompasa adatu uz tikko izveidoto atzīmi. Novietojiet adatu tieši uz atzīmes.
  5. 5 Apļa malā izveidojiet vēl vienu zīmuļa atzīmi. Tādā veidā jūs veiksiet otro atzīmi noteiktā attālumā no pirmās atzīmes. Turpiniet kustēties vienā virzienā.
  6. 6 Izmantojiet to pašu metodi, lai izveidotu vēl četras atzīmes. Jums jāatgriežas pie sākotnējās atzīmes. Ja nē, tad, visticamāk, ir mainījies leņķis, kurā turējāt kompasu un izdarījāt atzīmes. Tas var būt noticis tāpēc, ka jūs to saspiedāt pārāk cieši vai, gluži pretēji, nedaudz atbrīvojāt.
  7. 7 Savienojiet zīmes, izmantojot lineālu. Sešas vietas, kur jūsu atzīmes krustojas ar apļa malu, ir sešstūra virsotnes. Izmantojot lineālu un zīmuli, zīmējiet taisnas līnijas, kas savieno blakus esošās zīmes.
  8. 8 Izdzēsiet apli, atzīmes uz apļa malām un visas citas atzīmes, ko esat izveidojis. Kad esat izdzēsis visas konstrukcijas līnijas, jūsu ideālajam sešstūrim vajadzētu būt gatavam.

2 Uzzīmējiet aptuvenu sešstūri, izmantojot apaļu priekšmetu un lineālu

  1. 1 Izsekojiet glāzes malu ar zīmuli. Tādā veidā jūs uzzīmēsit apli. Ir ļoti svarīgi zīmēt ar zīmuli, jo vēlāk jums būs jāizdzēš visas palīglīnijas. Varat arī izsekot apgrieztu glāzi, burku vai jebko citu, kam ir apaļa pamatne.
  2. 2 Zīmējiet horizontālas līnijas caur apļa centru. Var izmantot lineālu, grāmatu – jebko ar taisnu malu. Ja jums ir lineāls, varat atzīmēt vidu, aprēķinot apļa vertikālo garumu un sadalot to uz pusēm.
  3. 3 Uzzīmējiet "X" pāri pusei apļa, sadalot to sešās vienādās daļās. Tā kā jūs jau esat novilcis līniju cauri apļa vidum, X ir jābūt platākam, nekā tas ir augsts, lai daļas būtu vienādas. Iedomājieties, ka sadalāt picu sešās daļās.
  4. 4 No katras sadaļas izveidojiet trīsstūrus. Lai to izdarītu, izmantojiet lineālu, lai zem katras sadaļas izliektās daļas novilktu taisnu līniju, savienojot to ar pārējām divām līnijām, veidojot trīsstūri. Dariet to ar atlikušajām piecām sadaļām. Padomājiet par to kā garozas izveidošanu ap picas šķēlēm.
  5. 5 Dzēst visas palīgrindas. Vadlīnijās ir iekļauts jūsu aplis, trīs līnijas, kas sadalīja apli daļās, un citas atzīmes, kuras esat izveidojis pa ceļam.

3. Uzzīmējiet aptuvenu sešstūri, izmantojot vienu zīmuli

  1. 1 Zīmējiet horizontālu līniju. Lai novilktu taisnu līniju bez lineāla, vienkārši uzzīmējiet horizontālās līnijas sākuma un beigu punktu. Pēc tam novietojiet zīmuli sākuma punktā un novelciet līniju līdz galam. Šīs līnijas garums var būt tikai pāris centimetri.
  2. 2 No horizontālās līnijas galiem novelciet divas diagonālas līnijas. Kreisajā pusē esošajai diagonālajai līnijai jābūt vērstai uz āru tāpat kā diagonālajai līnijai labajā pusē. Varat iedomāties, ka šīs līnijas veido 120 grādu leņķi attiecībā pret horizontālo līniju.
  3. 3 Uzzīmējiet vēl divas horizontālas līnijas, kas nāk no pirmajām uz iekšu novilktajām horizontālajām līnijām. Tādējādi tiks izveidots pirmo divu diagonālo līniju spoguļattēls. Apakšējai kreisajai līnijai ir jāatspoguļo augšējā kreisā līnija, bet apakšējā labajā - augšējās labās līnijas atspoguļojumā. Augšējām horizontālajām līnijām ir jāskatās uz āru, bet apakšējām jābūt uz iekšu uz pamatni.
  4. 4 Uzzīmējiet vēl vienu horizontālu līniju, kas savieno divas apakšējās diagonālās līnijas. Tādā veidā jūs uzzīmēsit sešstūra pamatu. Ideālā gadījumā šai līnijai jābūt paralēlai augšējai horizontālajai līnijai. Tagad esat pabeidzis savu sešstūri.
  • Zīmulim un kompasam jābūt asam, lai samazinātu kļūdas no pārāk platām atzīmēm.
  • Izmantojot kompasa metodi, savienojot katru atzīmi, nevis visas sešas, jūs iegūsit vienādmalu trīsstūri.

Brīdinājumi

  • Kompass ir diezgan ass priekšmets, esiet ar to ļoti uzmanīgi.

Darbības princips

  • Katra metode palīdzēs uzzīmēt sešstūri, ko veido seši vienādmalu trīsstūri ar rādiusu vienāds ar garumu visas puses. Seši uzzīmētie rādiusi ir vienāda garuma, un visas līnijas, lai izveidotu sešstūri, arī ir vienāda garuma, jo kompasa platums nemainījās. Sakarā ar to, ka seši trīsstūri ir vienādmalu, leņķi starp to virsotnēm ir 60 grādi.

Kas jums būs nepieciešams

  • Papīrs
  • Zīmulis
  • Lineāls
  • Kompasu pāris
  • Kaut kas, ko var likt zem papīra, lai kompasa adata neslīdētu.
  • Dzēšgumija

Ģeometriskie raksti ir ļoti populāri Nesen. Šodienas nodarbībā mēs uzzināsim, kā izveidot kādu no šiem modeļiem. Izmantojot pāreju, tipogrāfiju un modernas krāsas, mēs izveidosim rakstu, ko varēsiet izmantot tīmekļa un drukas dizainā.

Rezultāts

2. darbība
Uzzīmējiet vēl vienu sešstūri, šoreiz mazāku — izvēlieties rādiusu 20pt.

2. Pāreja starp sešstūriem

1. darbība
Atlasiet abus sešstūrus un izlīdziniet tos centrā (vertikāli un horizontāli). Izmantojot rīku Sajaukšana/pāreja (W), atlasiet abus sešstūrus un piešķiriet tiem pāreju uz 6 soļi. Lai būtu vieglāk saskatīt, pirms pārvietošanas mainiet formu krāsu.

3. Sadaliet sadaļās

1. darbība
Rīks Līnijas segments (\) novelciet līniju, kas šķērso sešstūrus centrā no galējā kreisā stūra līdz galējam labajam stūrim. Uzzīmējiet vēl divas līnijas, kas šķērso sešstūrus centrā no pretējiem stūriem.

4. Krāsojiet sekcijas

1. darbība
Pirms sākam krāsot sekcijas, pieņemsim lēmumu par paleti. Šeit ir palete no piemēra:

  • Zils: C 65 M 23 Y 35 K 0
  • Bēšs: C 13 M 13 Y 30 K 0
  • Persiks: C 0 M 32 Y 54 K 0
  • Gaiši rozā: C 0 M 64 Y 42 K 0
  • Tumši rozā: C 30 M 79 Y 36 K 4

Piemērā nekavējoties tika izmantots CMYK režīms, lai rakstu varētu izdrukāt bez izmaiņām.

5. Apdare un raksts

1. darbība
Grupa (Control-G) visas sadaļas un sešstūri pēc tam, kad esat pabeidzis to krāsošanu. Kopēt (Control-C) Un Ielīmēt (Control-V) sešstūru grupa. Nosauksim sākotnējo grupu Sešstūris A, un tā kopija Sešstūris B. Izlīdziniet grupas.


2. darbība
Pieteikties Lineārs gradients uz grupu Sešstūris B. Paletē Gradients iestatiet aizpildījumu uz purpursarkanu ( C60 M86 Y45 K42) līdz krēmkrāsai ( C0 M13 Y57 K0).

Mācīsimies uzzīmēt sešstūra prizmu dažādās pozīcijās.

Izpētiet dažādus regulāra sešstūra konstruēšanas veidus, veidojiet sešstūru rasējumus, pārbaudiet to konstrukcijas pareizību. Konstruējiet sešstūra prizmas, pamatojoties uz sešstūriem.

Apsveriet sešstūra prizmu attēlā. 3.52 un tā ortogonālās projekcijas att. 3.53. Sešstūra prizmas (sešstūra) pamatnē ir regulāri sešstūri, sānu malas ir identiski taisnstūri. Lai pareizi attēlotu sešstūri perspektīvā, vispirms jāiemācās pareizi attēlot tā pamatni perspektīvā (3.54. att.). Sešstūrī attēlā. 3,55 virsotnes ir apzīmētas ar cipariem no viena līdz sešiem. Ja savienojat punktus 1 un 3, 4 un 6 ar vertikālām taisnēm, pamanīsit, ka šīs taisnes kopā ar apļa centra punktu sadala diametru 5 - 2 četros vienādos segmentos (šie segmenti ir apzīmēti ar lokiem ). Sešstūra pretējās malas ir paralēlas viena otrai un līnijai, kas iet caur tā centru un savieno divas virsotnes (piemēram, malas 6 - 1 un 4 - 3 ir paralēlas līnijai 5 - 2). Šie novērojumi palīdzēs jums izveidot sešstūri perspektīvā, kā arī pārbaudīt šīs konstrukcijas pareizību. Būvēt regulārs sešstūris saskaņā ar attēlojumu ir divi veidi: pamatojoties uz ierobežotu apli un pamatojoties uz kvadrātu.

Pamatojoties uz ierobežotu apli. Apskatiet att. 3.56. Visas regulāra sešstūra virsotnes pieder apli, kura rādiuss ir vienāds ar sešstūra malu.


Horizontālais sešstūris. Uzzīmējiet horizontālu elipsi ar patvaļīgu atvērumu, t.i., perspektīvā norobežotu apli. Tagad uz tā jāatrod seši punkti, kas ir sešstūra virsotnes. Caur tā centru novelciet jebkuru dotā apļa diametru (3.57. att.). Diametra galējie punkti - 5 un 2, kas atrodas uz elipses, ir sešstūra virsotnes. Lai atrastu atlikušās virsotnes, šis diametrs ir jāsadala četros vienādos segmentos. Diametrs jau ir sadalīts ar apļa centra punktu divos rādiusos, atliek tikai sadalīt katru rādiusu uz pusēm. Perspektīvā zīmējumā visi četri segmenti vienmērīgi saraujas, attālinoties no skatītāja (3.58. att.). Tagad izvelciet cauri rādiusu viduspunktiem - punkti A un B - taisnas līnijas, kas ir perpendikulāras taisnei 5 - 2. To virzienu var atrast, izmantojot elipses pieskares punktos 5 un 2 (3.59. att.). Šīs pieskares būs perpendikulāras diametram 5 - 2, un līnijas, kas novilktas caur punktiem A un B paralēli šīm pieskarēm, arī būs perpendikulāras taisnei 5 - 2. Apzīmējiet punktus, kas iegūti šo līniju krustpunktā ar elipsi kā 1, 3, 4, 6 (3.60. att.). Savieno visas sešas virsotnes ar taisnēm (3.61. att.).

Pārbaudiet, vai konstrukcija ir pareiza Dažādi ceļi. Ja konstrukcija ir pareiza, tad taisnes, kas savieno sešstūra pretējās virsotnes, krustojas apļa centrā (3.62. att.), un sešstūra pretējās malas ir paralēlas atbilstošajiem diametriem (3.63. att.). Cita pārbaudes metode ir parādīta attēlā. 3.64.

Vertikāls sešstūris. Šādā sešstūrī taisnēm, kas savieno punktus 7 un 3, b un 4, kā arī ierobežotā apļa pieskares punktos 5 un 2, ir vertikāls virziens un tas tiek saglabāts perspektīvas zīmējumā. Tādējādi, novelkot divas elipses vertikālās pieskares, mēs atrodam punktus 5 un 2 (pieskares punktus). Savienojiet tos ar taisnu līniju un pēc tam sadaliet iegūto diametru 5 - 2 4 vienādos segmentos, ņemot vērā to perspektīvos samazinājumus (3.65. att.). Novelciet vertikālas līnijas caur punktiem A un B, un to krustpunktā ar elipsi atrodiet punktus 1,3,6l4. Pēc tam secīgi savienojiet punktus 1 - 6 ar taisnām līnijām (3.66. att.). Pārbaudiet sešstūra konstrukcijas pareizību tāpat kā iepriekšējā piemērā.

Aprakstītā sešstūra konstruēšanas metode ļauj iegūt šo skaitli, pamatojoties uz apli, kuru ir vieglāk attēlot perspektīvā nekā kvadrātu ar noteiktām proporcijām. Tāpēc šī metode sešstūra konstruēšana šķiet visprecīzākā un universālākā. Kvadrātveida konstrukcijas metode ļauj ērti attēlot sešstūri gadījumā, ja zīmējumā jau ir kubs, citiem vārdiem sakot, kad tiek noteiktas kvadrāta proporcijas un tā malu virziens.

Pamatojoties uz kvadrātu. Apskatiet att. 3.67. Kvadrātiņā ierakstīts sešstūris ir vienāds ar kvadrāta malu horizontālā virzienā 5 - 2 un mazāks par tā garumu vertikālā virzienā.

Vertikāls sešstūris. Uzzīmējiet vertikālu kvadrātu perspektīvā. Novelciet taisnu līniju caur diagonāļu krustpunktu paralēli tās horizontālajām malām. Sadaliet iegūto segmentu 5 - 2 četrās vienādās daļās un novelciet vertikālas līnijas caur punktiem A un B (3.68. att.). Līnijas, kas norobežo sešstūri augšā un apakšā, nesakrīt ar kvadrāta malām. Zīmējiet tos noteiktā attālumā (1114 a) no kvadrāta horizontālajām malām un paralēli tām. Savienojot šādā veidā atrastos punktus 1 un 3 ar punktu 2, bet punktus 6 un 4 ar punktu 5, iegūstam sešstūri (3.69. att.).

Tādā pašā secībā tiek uzbūvēts horizontāls sešstūris (3.70. un 3.71. att.).

Šī konstrukcijas metode ir piemērota tikai sešstūriem ar pietiekamu atvērumu. Ja sešstūra atvērums ir nenozīmīgs, labāk ir izmantot metodi, kuras pamatā ir ierobežots aplis. Lai pārbaudītu sešstūri, kas izveidots caur kvadrātu, varat izmantot jums jau zināmas metodes.

Turklāt ir vēl viens veids - aprakstīt apli ap iegūto sešstūri (jūsu zīmējumā - elipsi). Visām sešstūra virsotnēm ir jāpieder šai elipsei.

Kad būsiet apguvis sešstūra zīmēšanas prasmes, varēsiet brīvi pāriet uz sešstūra prizmas zīmēšanu. Uzmanīgi apskatiet diagrammu attēlā. 3.72, kā arī shēmas sešstūra prizmu konstruēšanai, pamatojoties uz ierobežotu apli (3.73. att.; 3.74. un 3.75. att.) un pamatojoties uz kvadrātu (3.76. att.; 3.77. un 3.78. att.). Zīmējiet vertikālos un horizontālos sešstūrus dažādos veidos. Vertikālā sešstūra zīmējumā sānu virsmu garās malas būs vertikālas taisnas līnijas, kas ir paralēlas viena otrai, un pamatnes sešstūris būs atvērtāks, jo tālāk tas atrodas no horizonta līnijas. Horizontāla sešstūra zīmējumā sānu virsmu garās malas saplūdīs pazušanas punktā pie horizonta, un pamata sešstūra atvērums būs lielāks, jo tālāk tas atrodas no skatītāja. Attēlojot sešstūri, arī jāpārliecinās, ka abu pamatu paralēlās malas perspektīvā saplūst (3.79. att.; 3.80.).

Ģeometriskās konstrukcijas ir viena no galvenajām apmācību daļām. Tie veido telpisko un loģisko domāšanu, kā arī ļauj izprast primitīvu un dabisku ģeometrisko derīgumu. Konstrukcijas tiek veidotas plaknē, izmantojot kompasu un lineālu. Šos rīkus var izmantot, lai izveidotu lielu skaitu ģeometriskās formas. Tajā pašā laikā daudzas figūras, kas šķiet diezgan sarežģītas, tiek konstruētas, izmantojot visvienkāršākos noteikumus. Piemēram, kā izveidot regulāru sešstūri, var aprakstīt dažos vārdos.

Jums būs nepieciešams

  • Kompasi, lineāls, zīmulis, papīra lapa.

Instrukcijas

1. Uzzīmējiet apli. Iestatiet zināmu attālumu starp kompasa kājām. Šis attālums būs apļa rādiuss. Izvēlieties rādiusu tā, lai apļa zīmēšana būtu diezgan ērta. Aplim pilnībā jāietilpst uz papīra lapas. Pārāk liels vai pārāk liels neliels attālums starp kompasa kājām var izraisīt tā izmaiņas zīmēšanas laikā. Optimālais attālums būs tāds, kurā leņķis starp kompasa kājām ir 15-30 grādi.

2. Izveidojiet regulāra sešstūra stūru virsotnes punktus. Novietojiet kompasa kāju, kurā ir fiksēta adata, jebkurā apļa punktā. Adatai vajadzētu caurdurt novilkto līniju. Jo precīzāk ir uzstādīts kompass, jo precīzāka būs konstrukcija. Uzzīmējiet apļveida loku tā, lai tas krustotu iepriekš uzzīmēto apli. Pārvietojiet kompasa adatu uz tikko uzzīmētā loka krustošanās punktu ar apli. Uzzīmējiet vēl vienu loku, kas krusto apli. Atkal pārvietojiet kompasa adatu uz loka un apļa krustošanās punktu un vēlreiz uzzīmējiet loku. Atkārtojiet šo darbību vēl trīs reizes, virzoties vienā virzienā ap apli. Katram jābūt sešiem lokiem un sešiem krustošanās punktiem.

3. Izveidojiet pozitīvu sešstūri. Pakāpeniski apvienojiet visus sešus loku krustpunktus ar sākotnēji uzzīmēto apli. Savienojiet punktus ar taisnām līnijām, kas novilktas, izmantojot lineālu un zīmuli. Pēc šīm darbībām tiks iegūts pareizs sešstūris, kas ierakstīts aplī.

Sešstūris Tiek uzskatīts, ka daudzstūrim ir seši leņķi un sešas malas. Daudzstūri var būt izliekti vai ieliekti. Izliektam sešstūrim visi iekšējie leņķi ir neasi, savukārt ieliektam sešstūrim ir viens vai vairāki asi leņķi. Sešstūri ir diezgan viegli uzbūvēt. Tas tiek darīts pāris soļos.

Jums būs nepieciešams

  • Zīmulis, papīra lapa, lineāls

Instrukcijas

1. Paņemiet papīra lapu un atzīmējiet uz tās aptuveni 6 punktus, kā parādīts attēlā. 1.

2. Kad punkti ir atzīmēti, paņemiet lineālu un zīmuli un ar to palīdzību soli pa solim vienu pēc otra savienojiet punktus, kā tas izskatās attēlā. 2.

Video par tēmu

Piezīme!
Visu sešstūra iekšējo leņķu summa ir 720 grādi.

Sešstūris ir daudzstūris, kuram ir seši leņķi. Lai uzzīmētu patvaļīgu sešstūri, jums ir jāveic 2 soļi katrā.

Jums būs nepieciešams

  • Zīmulis, lineāls, papīra lapa.

Instrukcijas

1. Rokā jāpaņem zīmulis un uz lapas jāatzīmē 6 nejauši punktiņi. Nākotnē šie punkti spēlēs stūru lomu sešstūrī. (1. att.)

2. Paņemiet lineālu un uz šiem punktiem uzzīmējiet 6 segmentus, kas savienotos viens ar otru pa iepriekš uzzīmētajiem punktiem (2. att.)

Video par tēmu

Piezīme!
Īpašs sešstūra veids ir pozitīvais sešstūris. To sauc par tādu, jo visas tās malas un leņķi ir vienādi viens ar otru. Jūs varat aprakstīt vai ierakstīt apli ap šādu sešstūri. Ir vērts atzīmēt, ka punktos, kas iegūti, pieskaroties ierakstītajam aplim un sešstūra malām, pozitīvā sešstūra malas tiek sadalītas uz pusēm.

Noderīgs padoms
Dabā pozitīvie sešstūri ir ļoti populāri. Piemēram, visai šūnveida struktūrai ir pozitīva sešstūra forma. Or kristāla šūna grafēnam (oglekļa modifikācija) ir arī pozitīva sešstūra forma.

Kā uzbūvēt vienu vai otru stūrī- liels jautājums. Bet dažiem leņķiem uzdevums ir nemanāmi vienkāršots. Viens no šiem leņķiem ir stūrī 30 grādos. Tas ir vienāds ar?/6, tas ir, skaitlis 30 ir dalītājs ar 180. Turklāt ir zināms tā sinuss. Tas palīdz tā konstrukcijā.

Jums būs nepieciešams

  • transportieris, kvadrāts, kompass, lineāls

Instrukcijas

1. Pirmkārt, aplūkosim īpaši primitīvu situāciju, kad jūsu rokās ir transportieri. Pēc tam taisnu līniju 30 grādu leņķī pret to var viegli novietot malā ar atbalstu.

2. Papildus transportierim ir arī stūrī arkas, kuru viens no leņķiem ir vienāds ar 30 grādiem. Tad vēl viens stūrī stūrī leņķis būs vienāds ar 60 grādiem, tas ir, jums ir nepieciešams vizuāli mazāks stūrī lai izveidotu vajadzīgo taisni.

3. Tagad pāriesim pie netriviāliem veidiem, kā izveidot 30 grādu leņķi. Kā zināms, 30 grādu leņķa sinuss ir vienāds ar 1/2. Lai to izveidotu, mums ir jākonstruē tieši stūrī nacionālais stūrī nik. Iespējams, ka mēs varam izveidot divas perpendikulāras līnijas. Bet 30 grādu tangenss ir iracionāls skaitlis, tāpēc mēs varam tikai aptuveni aprēķināt attiecību starp kājām (tikai, ja nav kalkulatora), un tāpēc konstruēt stūrī aptuveni 30 grādi.

4. Šajā gadījumā ir iespējams veikt precīzu konstrukciju. Atkal izveidosim divas perpendikulāras taisnes, uz kurām kājas atradīsies taisni stūrī nogo stūrī nika. Noliksim vienu taisnu kāju BC noteiktā garumā ar kompasa atbalstu (B – taisni stūrī). Pēc tam mēs palielināsim garumu starp kompasa kājām 2 reizes, kas ir elementāri. Zīmējot apli ar centru C punktā ar šāda garuma rādiusu, mēs atrodam apļa krustošanās punktu ar citu taisni. Šis punkts būs tieši punkts A stūrī nogo stūrī ABC un stūrī A būs vienāds ar 30 grādiem.

5. Uzcelt stūrī pie 30 grādiem ir atļauts un ar apļa atbalstu, pieliekot ar ko tas ir vienāds ar?/6. Konstruēsim apli ar rādiusu OB. Apskatīsim teoriju stūrī nik, kur OA = OB = R – apļa rādiuss, kur stūrī OAB = 30 grādi. Lai OE ir šī vienādsānu trīsstūra augstums stūrī nik, un līdz ar to tā bisektrise un mediāna. Tad stūrī AOE = 15 grādi, un saskaņā ar pusleņķa formulu sin(15o) = (sqrt(3)-1)/(2*sqrt(2)). Līdz ar to AE = R*sin(15o). Tātad AB = 2AE = 2R*sin(15o). Konstruējot apli ar rādiusu BA ar centru punktā B, mēs atrodam šī apļa krustošanās punktu A ar sākotnējo. Leņķis AOB būs 30 grādi.

6. Ja varam kaut kādā veidā noteikt loku garumu, tad, atmetot garuma loku?*R/6, iegūstam arī stūrī 30 grādos.

Piezīme!
Jāatceras, ka 5. punktā leņķi varam konstruēt tikai aptuveni, jo aprēķinos parādīsies neracionāli skaitļi.

Sešstūris sauc par daudzstūra īpašo gadījumu - figūru, ko veido lielākā daļa plaknes punktu, ko ierobežo slēgta polilīnija. Savukārt pozitīvs sešstūris (hexagon) ir arī īpašs gadījums - tas ir daudzstūris ar sešiem vienādas puses un vienādi leņķi. Šis skaitlis ir nozīmīgs ar to, ka tā visu malu garums ir vienāds ar ap figūru aprakstītā apļa rādiusu.

Jums būs nepieciešams

  • - kompass;
  • - lineāls;
  • - zīmulis;
  • - papīrs.

Instrukcijas

1. Izvēlieties sešstūra sānu garumu. Paņemiet kompasu un iestatiet attālumu starp adatas galu, kas atrodas vienā no tās kājiņām, un vadu galu, kas atrodas otrā kājā, vienādu ar zīmējamās figūras malas garumu. Lai to izdarītu, varat izmantot lineālu vai izvēlēties nejaušu attālumu, ja šis brīdis nav nozīmīgs. Ja iespējams, nostipriniet kompasa kājas ar skrūvi.

2. Uzzīmējiet apli, izmantojot kompasu. Izvēlētais attālums starp kājām būs apļa rādiuss.

3. Sadaliet apli sešās vienādās daļās ar punktiem. Šie punkti būs sešstūra stūru virsotnes un attiecīgi segmentu gali, kas attēlo tā malas.

4. Novietojiet kompasa kāju ar adatu patvaļīgā punktā, kas atrodas uz iezīmētā apļa līnijas. Adatai pareizi vajadzētu caurdurt līniju. Konstrukcijas precizitāte tieši ir atkarīga no kompasa uzstādīšanas precizitātes. Novelciet loku ar kompasu tā, lai tas 2 punktos krustotu vispirms novilkto apli.

5. Pārvietojiet kompasa kāju ar adatu uz vienu no zīmētā loka krustošanās punktiem ar sākotnējo apli. Uzzīmējiet vēl vienu loku, arī krustojot apli 2 punktos (viens no tiem sakritīs ar kompasa adatas iepriekšējās atrašanās vietas punktu).

6. Tādā pašā veidā pārkārtojiet kompasa adatu un velciet lokus vēl četras reizes. Pārvietojiet kompasa kāju ar adatu vienā virzienā ap apli (vienmēr pulksteņrādītāja virzienā vai pretēji pulksteņrādītāja virzienam). Rezultātā ir jānosaka seši loku krustošanās punkti ar sākotnēji izveidoto apli.

7. Uzzīmējiet pozitīvu sešstūri. Pakāpeniski pa pāriem apvienojiet sešus iepriekšējā solī iegūtos punktus ar segmentiem. Zīmējiet segmentus, izmantojot zīmuli un lineālu. Rezultāts būs pareizs sešstūris. Pēc konstrukcijas pabeigšanas jūs varat izdzēst palīgelementus (lokus un apļus).

Piezīme!
Ir lietderīgi izvēlēties attālumu starp kompasa kājām, lai leņķis starp tiem būtu 15-30 grādi, gluži pretēji, veicot konstrukcijas, šis attālums var viegli pazust.

Būvējot vai izstrādājot mājas dizaina plānus, bieži vien ir nepieciešams būvēt stūrī, vienāds ar esošo. Paraugi un skolas ģeometrijas prasmes nāk palīgā.

Instrukcijas

1. Leņķi veido divas taisnas līnijas, kas izplūst no viena punkta. Šis punkts tiks saukts par leņķa virsotni, un līnijas būs leņķa malas.

2. Izmantojiet trīs burtus, lai attēlotu stūrus: vienu augšpusē, divus sānos. Zvanīja stūrī, sākot ar burtu, kas stāv vienā pusē, tad tiek saukts burts, kas stāv augšā, un pēc tam burts otrā pusē. Izmantojiet citas metodes stūru marķēšanai, ja jums ir ērtāk pretī. Reizēm tiek nosaukts tikai viens burts, kas atrodas augšpusē. Un leņķus ir atļauts apzīmēt ar grieķu burtiem, teiksim, α, β, γ.

3. Ir situācijas, kad vajag zīmēt stūrī, lai tas būtu vienāds ar doto leņķi. Ja, veidojot zīmējumu, nav iespēju izmantot transportieri, jūs varat iztikt tikai ar lineālu un kompasu. Iespējams, uz taisnes, kas zīmējumā norādīta ar burtiem MN, ir jābūvē stūrī punktā K, lai tas būtu vienāds ar leņķi B. Tas ir, no punkta K ir jānovelk taisna līnija, kas veido līniju MN stūrī, tas, kas būs vienāds ar leņķi B.

4. Vispirms atzīmējiet punktu visā dotā leņķa malā, teiksim, punktus A un C, pēc tam savienojiet punktus C un A ar taisnu līniju. Get tre stūrī nik ABC.

5. Tagad izveidojiet to pašu tre uz taisnes MN stūrī tā, lai tās virsotne B būtu uz taisnes punktā K. Izmantojiet trijstūra konstruēšanas noteikumu stūrī no trim pusēm. Noņemiet segmentu KL no punkta K. Tam jābūt vienādam ar segmentu BC. Iegūstiet L punktu.

6. No punkta K uzzīmējiet apli ar rādiusu, kas vienāds ar segmentu BA. No L uzzīmējiet apli ar rādiusu CA. Apvienojiet iegūto 2 apļu krustošanās punktu (P) ar K. Iegūstiet trīs stūrī nik KPL, tas, kas būs vienāds ar trīs stūrī ABC grāmata. Šādi jūs saņemat stūrī K. Tas būs vienāds ar leņķi B. Lai šo konstrukciju padarītu ērtāku un ātrāku, no virsotnes B izvelciet vienādus segmentus, izmantojot vienu kompasa risinājumu, nekustinot kājas, aprakstiet apli ar tādu pašu rādiusu no punkta K.

Video par tēmu

Piezīme!
Izvairieties no nejaušas attāluma maiņas starp kompasa kājām. Šajā gadījumā sešstūris var izrādīties nepareizs.

Noderīgs padoms
Viņam ir prasme veidot konstrukcijas, izmantojot kompasu ar perfekti uzasinātu vadu. Tādā veidā konstrukcijas būs īpaši precīzas.