ჩვენ ვისწავლით თუ როგორ უნდა გამოსახოს ექვსკუთხა პრიზმა სხვადასხვა პოზიციებზე.

ისწავლეთ რეგულარული ექვსკუთხედის აგების სხვადასხვა ხერხი, დახაზეთ ექვსკუთხედის ნახატები, შეამოწმეთ ისინი სწორია. დახაზეთ ექვსკუთხედებიდან ექვსკუთხა პრიზმები.

განვიხილოთ ექვსკუთხა პრიზმი ნახ. 3.52 და მისი ორთოგონალური პროგნოზები ნახ. 3.53. რეგულარული ექვსკუთხედები ექვსკუთხა პრიზმის ბაზაზეა (ექვსკუთხედი), გვერდითი სახეები იდენტური მართკუთხედებია. ექვსკუთხედის პერსპექტივაში სწორად გამოსახვის მიზნით, თქვენ ჯერ უნდა ისწავლოთ როგორ სწორად ასახოს მისი ბაზა პერსპექტივაში (სურ. 3.54). ექვსკუთხედში ნახ. 3.55 ზედა ნაწილში აღინიშნება რიცხვები ერთიდან ექვსამდე. თუ თქვენ აკავშირებთ წერტილებს 1 და 3, 4 და 6 ვერტიკალურ ხაზებთან, ხედავთ, რომ ეს ხაზები, წრის ცენტრალურ წერტილთან ერთად, დიამეტრს 5 - 2 ყოფს ოთხ თანაბარ სეგმენტად (ეს სეგმენტები მითითებულია რკალებით). ექვსკუთხედის მოპირდაპირე მხარეები ერთმანეთის პარალელურია და ხაზი, რომელიც გადის მის ცენტრში და აკავშირებს ორ წვეროს (მაგალითად, 6 - 1 და 4 - 3 მხარეები პარალელურად ხაზი 5 - 2). ეს დაკვირვებები დაგეხმარებათ შექმნათ ექვსკუთხედი პერსპექტივაში, ასევე შეამოწმოთ ამ კონსტრუქციის სისწორე. რეპრეზენტაციისგან რეგულარული ექვსკუთხედის აგების ორი გზა არსებობს: წრეწირის და კვადრატის საფუძველზე.

შემოსაზღვრული წრის საფუძველზე. განვიხილოთ ნახ. 3.56. რეგულარული ექვსკუთხედის ყველა წვერო მიეკუთვნება წრეწირს, რომლის რადიუსი ექვსკუთხედის გვერდის ტოლია.


ჰორიზონტალური ექვსკუთხედი. დახაზეთ ჰორიზონტალური, თავისუფალი ელიფსი, ანუ შემოხაზული წრე პერსპექტივაში. ახლა თქვენ უნდა იპოვოთ მასზე ექვსი წერტილი, რომლებიც ექვსკუთხედის წვეროებია. დახაზეთ მოცემული წრის ნებისმიერი დიამეტრი მის ცენტრში (სურ. 3.57). დიამეტრის უკიდურესი წერტილები - 5 და 2, ელიფსზე დევს, ექვსკუთხედის წვეროებია. დანარჩენი წვეროების მოსაძებნად, თქვენ უნდა გაყოთ ეს დიამეტრი ოთხ თანაბარ ნაწილად. დიამეტრი უკვე გაყოფილია წრის ცენტრალური წერტილით ორ რადიუსზე, რჩება თითოეული რადიუსის ნახევრად გაყოფა. პერსპექტიულ ნახაზში ოთხივე სეგმენტი თანაბრად მცირდება მაყურებლისგან დაშორებით (სურ. 3.58). ახლა დახაზეთ რადიუსების შუა წერტილები - წერტილები A და B - სწორი ხაზები პერპენდიკულარულად სწორი ხაზის 5 - 2. თქვენ შეგიძლიათ იპოვოთ მათი მიმართულება ელიფსის ტანგენტების გამოყენებით 5 და 2 წერტილებში (სურ. 3.59). ეს ტანგენტები იქნება პერპენდიკულარული დიამეტრის 5 - 2, ხოლო A და B წერტილების გავლით ხაზები ამ ტანგენტების პარალელურად ასევე იქნება პერპენდიკულარული 5 - 2 ხაზის მიმართ. 1, 3, 4, 6 ((იხ. სურათი 3.60) შეაერთეთ ექვსივე წვერო სწორი ხაზებით (სურ. 3.61).

შეამოწმეთ თქვენი კონსტრუქციის სისწორე სხვადასხვა გზით. თუ კონსტრუქცია სწორია, მაშინ ექვსკუთხედის საპირისპირო წვეროების დამაკავშირებელი ხაზები იკვეთება წრის ცენტრში (სურ. 3.62), ხოლო ექვსკუთხედის მოპირდაპირე მხარეები შესაბამისი დიამეტრის პარალელურად (სურ. 3.63). შემოწმების კიდევ ერთი გზა ნაჩვენებია ნახ. 3.64.

ვერტიკალური ექვსკუთხედი. ასეთ ექვსკუთხედში, 7 და 3, b და 4 წერტილების დამაკავშირებელი სწორი ხაზები, ასევე 5 და 2 პუნქტებში შემოსაზღვრული წრეების ტანგენტები აქვს ვერტიკალური მიმართულება და ინარჩუნებს მას პერსპექტიულ ნახაზში. ამრიგად, ელიფსზე ორი ვერტიკალური ტანგენტის დახატვა, ჩვენ ვპოულობთ წერტილებს 5 და 2 (ტანგენტის წერტილები). შეაერთეთ ისინი სწორი ხაზით, შემდეგ კი მიღებული დიამეტრი 5 - 2 გაყავით 4 თანაბარ ნაწილად, მათი პერსპექტიული ჭრის გათვალისწინებით (სურ. 3.65). დახაზეთ ვერტიკალური ხაზები A და B წერტილებში და ელიფსასთან მათ გადაკვეთაზე იპოვეთ 1,3,6L4 წერტილები. შემდეგ დააკავშირეთ 1 - 6 წერტილები სერიაში სწორი ხაზებით (სურ. 3.66). შეამოწმეთ ექვსკუთხედის კონსტრუქციის სისწორე ისევე, როგორც წინა მაგალითში.

ექვსკუთხედის აგების აღწერილი მეთოდი საშუალებას გაძლევთ მიიღოთ ეს ფიგურა წრის საფუძველზე, რაც უფრო ადვილია პერსპექტივაში დახატვა, ვიდრე მოცემული პროპორციების კვადრატი. აქედან გამომდინარე, ექვსკუთხედის აგების ეს მეთოდი ყველაზე ზუსტი და მრავალმხრივი ჩანს. კვადრატზე დაფუძნებული მშენებლობის მეთოდი აადვილებს ექვსკუთხედის გამოსახვას იმ შემთხვევაში, როდესაც ნახატზე უკვე არის კუბი, სხვა სიტყვებით რომ ვთქვათ, როდესაც განისაზღვრება კვადრატის პროპორციები და მისი გვერდების მიმართულება.

კვადრატზე დაყრდნობით. განვიხილოთ ნახ. 3.67. კვადრატში ჩაწერილი ექვსკუთხედი ჰორიზონტალური მიმართულებით 5 - 2 უდრის კვადრატის გვერდს, ხოლო ვერტიკალური მიმართულებით ის ნაკლებია ვიდრე მისი სიგრძე.

ვერტიკალური ექვსკუთხედი. დახაზეთ ვერტიკალური კვადრატი პერსპექტივაში. დახაზეთ სწორი ხაზი დიაგონალების კვეთაზე მისი ჰორიზონტალური მხარეების პარალელურად. მიღებული სეგმენტი 5 - 2 გაყავით ოთხ თანაბარ ნაწილად და დახაზეთ ვერტიკალური ხაზები A და B წერტილებით (სურ. 3.68). ექვსკუთხედის ზედა და ქვედა ხაზები არ ემთხვევა კვადრატის გვერდებს. დახაზეთ ისინი კვადრატის ჰორიზონტალური მხარეებიდან რაღაც მანძილზე (1114 ა) და მათ პარალელურად. ამ გზით ნაპოვნი 1 და 3 წერტილების დაკავშირება მე –2 პუნქტთან, ხოლო მე –6 და მე –4 წერტილები 5 – ით, ჩვენ ვიღებთ ექვსკუთხედს (სურ. 3.69).

ჰორიზონტალური ექვსკუთხედი აგებულია იმავე თანმიმდევრობით (სურ. 3.70 და 3.71).

მშენებლობის ეს მეთოდი განკუთვნილია მხოლოდ ექვსკუთხედებისთვის საკმარისი გახსნით. თუ ექვსკუთხედის გამჟღავნება უმნიშვნელოა, უმჯობესია გამოიყენოთ წრეწირის მეთოდი. თქვენ შეგიძლიათ გამოიყენოთ უკვე ნაცნობი მეთოდები კვადრატში აგებული ექვსკუთხედის შესამოწმებლად.

გარდა ამისა, არის კიდევ ერთი - აღწეროთ წრე მიღებული ექვსკუთხედის გარშემო (თქვენს ნახატზე - ელიფსი). ექვსკუთხედის ყველა წვერო უნდა ეკუთვნოდეს ამ ელიფსს.

ექვსკუთხედის ხატვის უნარების დაუფლების შემდეგ, თქვენ თავისუფლად გადახვალთ ექვსკუთხა პრიზმის დახატვაზე. ყურადღებით დააკვირდით დიაგრამას ლეღვში. 3.72, ასევე ექვსკუთხა პრიზმების აგების სქემები შემოსაზღვრული წრის საფუძველზე (სურ. 3.73; 3.74 და 3.75) და კვადრატის საფუძველზე (სურ. 3.76; 3.77 და 3.78). დახაზეთ ვერტიკალური და ჰორიზონტალური ექვსკუთხედები სხვადასხვა გზით. ვერტიკალური ექვსკუთხედის სურათზე, გვერდითი მხარეების გრძელი მხარეები ერთმანეთის პარალელურად ვერტიკალური სწორი ხაზები იქნება, ხოლო ფუძის ექვსკუთხედი უფრო ღია იქნება, რაც უფრო შორს არის ჰორიზონტის ხაზისგან. ჰორიზონტალური ექვსკუთხედის ნახაზზე, გვერდითი მხარეების გრძელი მხარეები გაერთიანდება ჰორიზონტზე გაქრობის წერტილში, ხოლო ფუძის ექვსკუთხედის გახსნა რაც უფრო დიდი იქნება მნახველისგან. ექვსკუთხედის გამოსახვისას, ასევე დარწმუნდით, რომ ორივე ფუძის პარალელური სახეები იკრიბებიან პერსპექტივაში (სურ. 3.79; 3.80).

ქმნის წრეში ჩაწერილ რეგულარულ ექვსკუთხედს. აგებს რეგულარულ პენტაგონს მოცემული გვერდის გასწვრივ. გადაიტანეთ კომპასის ნემსი რკალის კვეთაზე, რომელიც ახლახან დახატეთ წრეზე. ეს მშენებლობა შეიძლება გაკეთდეს კვადრატისა და კომპასის გამოყენებით. რეგულარული ექვსკუთხედი შეიძლება აშენდეს რკინიგზის და 30X60 ° კვადრატის გამოყენებით. დავხატოთ რეგულარული ექვსკუთხედის კუთხეების მწვერვალი.


წრეში ჩაწერილი ტოლგვერდა სამკუთხედის აგება. ასეთი სამკუთხედის წვეროები შეიძლება აშენდეს კომპასის და კვადრატის გამოყენებით 30 და 60 ° კუთხეებით, ან მხოლოდ ერთი კომპასი. 2-3 მხარის ასაშენებლად, დააყენეთ სარბენი ბილიკი იმ პოზიციაზე, რომელიც ნაჩვენებია დაშლილი ხაზებით და დახაზეთ სწორი ხაზი მე –2 წერტილში, რომელიც განსაზღვრავს სამკუთხედის მესამე წვერს.

მეთოდი 1 – დან 3 – დან: დახაზეთ სრულყოფილი ექვსკუთხედი კომპასის გამოყენებით

ჩვენ ვნიშნავთ წერტილს 1 წრეზე და ვიღებთ მას როგორც ხუთკუთხედის ერთ წვერო. მიეცით D დიამეტრის წრე; თქვენ უნდა ჩაწეროთ მასში რეგულარული ექვსკუთხედი (სურათი 65). ჩვენ წრის ვერტიკალურ დიამეტრს ვყოფთ შვიდ თანაბარ ნაწილად. წრიდან 7 დიამეტრის ტოლი რადიუსით, ჩვენ აღვწერთ რკალს კვეთაზე ჰორიზონტალური დიამეტრის გაგრძელებით F. წერტილში F წერტილს ეწოდება მრავალკუთხედის პოლუსი.

სწორედ კუთხეების ბისექტორებისა და სეგმენტების საშუალო პერპენდიკულარების აგების უნარზეა დაფუძნებული რეგულარული მრავალკუთხედების აგების ტექნიკა.

ამ ცხრილის პირველ სვეტში ნაჩვენებია რეგულარული წარწერიანი მრავალკუთხედის გვერდების რაოდენობა, ხოლო მეორე - კოეფიციენტები. მოცემული მრავალკუთხედის გვერდის სიგრძე მიიღება მოცემული წრის რადიუსის გამრავლებით ამ მრავალკუთხედის გვერდების რაოდენობის შესაბამისი ფაქტორით.

ამ ვიდეო გაკვეთილის თემაა "რეგულარული მრავალკუთხედების აგება". ჩვენ ასევე კიდევ ერთხელ განვსაზღვრავთ რეგულარულ მრავალკუთხედს, ვხატავთ მას გრაფიკულად და შემდეგ კიდევ ერთხელ დავრწმუნდებით, რომ ასეთი ფიგურის გარშემო ჩაწერილი და შემოსაზღვრული წრეების ცენტრები დაემთხვევა. თქვენ ყოველთვის შეგიძლიათ ჩაწეროთ წრე ამ პოლიგონში და ყოველთვის შეგიძლიათ აღწეროთ წრე მის გარშემო. წინა გაკვეთილების მსვლელობისას ჩვენ აღმოვაჩინეთ, რომ მრავალკუთხედის თვისებების აღწერის ძირითად როლს ასრულებენ მისი კუთხეების ბისექტორები და მისი შუალედური პერპენდიკულარები.

4. მიიღო საჭირო რეგულარული სამკუთხედი ABC. პრობლემა მოგვარებულია. 3. კომპასის ერთი ფეხი მოათავსეთ წრეზე თვითნებურ წერტილში A1, მეორე ფეხის გამოყენებით, აღნიშნეთ წერტილი A2 იმავე წრეზე და დააკავშირეთ იგი A1 წერტილთან. ჩვენ ვიღებთ ექვსკუთხედის პირველ მხარეს. 3. O პუნქტიდან ჩამოშვებული მრავალკუთხედის შუა პერპენდიკულარული გვერდების გამოყენებით, ჩვენ ვყოფთ მის ყველა გვერდს და წრის ყველა რკალს, რომელიც მოთავსებულია მის მიმდებარე წვეროებს შორის, ნახევარში.

გეომეტრიული კონსტრუქცია არის ტრენინგის ერთ -ერთი მნიშვნელოვანი ნაწილი. ნემსმა უნდა დახვრიტოს შედგენილი ხაზი. რაც უფრო ზუსტად არის კომპასი დაყენებული, მით უფრო ზუსტი იქნება კონსტრუქცია. დახაზეთ სხვა რკალი, რომელიც კვეთს წრეს. ზედიზედ დაუკავშირეთ რკალების გადაკვეთის ექვსივე წერტილი თავდაპირველად შედგენილ წრეს. ამ შემთხვევაში, ექვსკუთხედი შეიძლება მცდარი აღმოჩნდეს.

წვეროების მისაღებად / - // - /// IV, V და VI წერტილებიდან, დახაზეთ ჰორიზონტალური ხაზები წრეზე კვეთაზე

ჩვენ ერთმანეთთან სერიულად ვპოულობთ ნაპოვნი წვეროებს. ჰეპტაგონის აგება შესაძლებელია F პოლუსიდან სხივების ამოღებით და ვერტიკალური დიამეტრის უცნაური განყოფილებებით. ორივე წრის ცენტრები ემთხვევა (წერტილი O ნახ. 1). ფიგურა ასევე აჩვენებს შემოსაწერი (R) და ჩაწერილი (r) წრეების რადიუსებს.

ექვსკუთხედის აგება ემყარება იმ ფაქტს, რომ მისი მხარე ტოლია შემოსაზღვრული წრის რადიუსის. ამ გაკვეთილში ჩვენ განვიხილავთ კომპასისა და მმართველის გამოყენებით რეგულარული მრავალკუთხედების აგების გზებს. მეორე მეთოდი ემყარება იმ ფაქტს, რომ თუ თქვენ ააგებთ წრეში ჩაწერილ რეგულარულ ექვსკუთხედს, შემდეგ კი მის წვერებს ერთის საშუალებით დააკავშირებთ, მიიღებთ ტოლგვერდა სამკუთხედს. მოცემული მეთოდი შესაფერისია რეგულარული მრავალკუთხედების ასაგებად ნებისმიერი რაოდენობის გვერდით.

ექვსკუთხა ბადეები (ექვსკუთხა ბადეები) გამოიყენება ზოგიერთ თამაშში, მაგრამ ისინი არ არიან ისეთი მარტივი და გავრცელებული, როგორც ოთხკუთხედის ბადეები. მე თითქმის 20 წელია ვაგროვებ რესურსებს hex ბადეებზე და დავწერე ეს სახელმძღვანელო ზოგიერთი ყველაზე ელეგანტური მიდგომისთვის, რომელიც განხორციელებულია უმარტივეს კოდში. ეს სტატია ხშირად იყენებს ჩარლზ ფუს და კლარკ ვერბრუგის გაკვეთილებს. მე აღვწერ ექვსკუთხედების ბადეების შექმნის სხვადასხვა გზებს, მათ ურთიერთობას, ასევე ყველაზე ზოგად ალგორითმებს. ამ სტატიის ბევრი ნაწილი არის ინტერაქტიული: ბადის ტიპის არჩევა ცვლის შესაბამის სქემებს, კოდს და ტექსტებს. (დაახლოებით. შესახვევი: ეს ეხება მხოლოდ ორიგინალს, გირჩევთ შეისწავლოთ იგი. თარგმანში დაცულია ორიგინალის ყველა ინფორმაცია, მაგრამ ინტერაქტიულობის გარეშე.).

ამ სტატიაში კოდის მაგალითები დაწერილია ფსევდოკოდით, ამიტომ მათი წაკითხვა და გაგება უფრო ადვილია იმისათვის, რომ დაწეროთ საკუთარი განხორციელება.

გეომეტრია

ექვსკუთხედები არის ექვსკუთხა პოლიგონები. რეგულარულ ექვსკუთხედებს აქვთ ერთი და იგივე სიგრძის ყველა მხარე (სახე). ჩვენ ვიმუშავებთ მხოლოდ რეგულარული ექვსკუთხედებით. როგორც წესი, ექვსკუთხა ბადეები იყენებენ ჰორიზონტალურ (წვეტიანი ზედა) და ვერტიკალური (ბრტყელი ზედა) ორიენტაციებს.


ბრტყელი (მარცხნივ) და წვეტიანი (მარჯვენა) ზედა ექვსკუთხედები

ექვსკუთხედს აქვს 6 სახე. თითოეული სახე საერთოა ექვსკუთხედისათვის. ექვსკუთხედებს აქვთ 6 კუთხური წერტილი. თითოეული კუთხის წერტილი იზიარებს სამ ექვსკუთხედს. თქვენ შეგიძლიათ წაიკითხოთ მეტი ცენტრის, კიდეების და კუთხის წერტილების შესახებ ჩემს სტატიაში ბადის ნაწილებზე (კვადრატები, ექვსკუთხედები და სამკუთხედები).

კუთხეები

რეგულარულ ექვსკუთხედში შიდა კუთხეები 120 ° -ია. არსებობს ექვსი "სოლი", რომელთაგან თითოეული არის ტოლგვერდა სამკუთხედი შიდა კუთხეებით 60 °. კუთხის წერტილი მეარის მანძილი (60 ° * i) + 30 °, ზომის ერთეულები ცენტრიდან. კოდში:

ფუნქცია hex_corner (ცენტრი, ზომა, 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) )
ექვსკუთხედის შესავსებად, თქვენ უნდა მიიღოთ პოლიგონის წვეროები hex_corner (..., 0) - დან hex_corner (..., 5). ექვსკუთხედის მონახაზის დასახატად გამოიყენეთ ეს წვეროები და შემდეგ კვლავ დახაზეთ ხაზი hex_corner (..., 0).

ორ ორიენტაციას შორის განსხვავება ისაა, რომ x და y პირიქით ხდება, რაც იწვევს კუთხეების შეცვლას: ბრტყელი ექვსკუთხედების კუთხეები არის 0 °, 60 °, 120 °, 180 °, 240 °, 300 ° და მკვეთრი ზედა ექვსკუთხედები არის 30 °, 90 °, 150 °, 210 °, 270 °, 330 °.


ბრტყელი და მკვეთრი ზედა ექვსკუთხედის კუთხეები

ზომა და ადგილმდებარეობა

ახლა ჩვენ გვინდა რამდენიმე ექვსკუთხედის ერთად განთავსება. ჰორიზონტალური ორიენტაციისას, ექვსკუთხედის სიმაღლე არის სიმაღლე = ზომა * 2. ვერტიკალური მანძილი მიმდებარე ექვსკუთხედებს შორის vert = სიმაღლე * 3/4.

ექვსკუთხედის სიგანე არის სიგანე = sqrt (3) / 2 * სიმაღლე. ჰორიზონტალური მანძილი მიმდებარე ექვსკუთხედებს შორის horiz = სიგანე.

ზოგიერთი თამაში იყენებს პიქსელ ხელოვნებას ექვსკუთხედებისთვის, რომელიც ზუსტად არ ემთხვევა ჩვეულებრივ ექვსკუთხედებს. ამ ნაწილში აღწერილი კუთხისა და პოზიციის ფორმულები არ ემთხვევა ამ ექვსკუთხედის ზომებს. დანარჩენი სტატია, რომელიც აღწერს ჰექს ბადის ალგორითმებს, გამოიყენება მაშინაც კი, თუ ექვსკუთხედები ოდნავ გაწელილი ან შეკუმშულია.



საკოორდინაციო სისტემები

დავიწყოთ ექვსკუთხედების შეკრება ბადეში. კვადრატების ბადეების შემთხვევაში, შეკრების მხოლოდ ერთი აშკარა გზა არსებობს. ექვსკუთხედებისთვის, ბევრი მიდგომაა. მე გირჩევთ გამოიყენოთ კუბური კოორდინატები, როგორც ძირითადი წარმომადგენლობა. ღერძის კოორდინატები ან ოფსეტური კოორდინატები უნდა იქნას გამოყენებული მომხმარებლისთვის რუქების შესანახად და კოორდინატების საჩვენებლად.

ოფსეტური კოორდინატები

ყველაზე გავრცელებული მიდგომაა ყოველი მომდევნო სვეტის ან რიგის კომპენსირება. სვეტები მითითებულია სვეტად ან q. რიგები მითითებულია მწკრივზე ან r. კენტი ან ლუწი სვეტები / სტრიქონები შეიძლება გადაინაცვლოს, ამიტომ ჰორიზონტალურ და ვერტიკალურ ექვსკუთხედებს აქვთ ორი ვარიანტი.


კენტი-რ ჰორიზონტალური განლაგება


თანაბარი- r ჰორიზონტალური მოწყობა


უცნაური q ვერტიკალური მოწყობა


კი- q ვერტიკალური მოწყობა

კუბური კოორდინატები

ექვსკუთხედის ბადეების გადახედვის კიდევ ერთი გზაა მათში დანახვა სამიძირითადი ღერძი, არა ორიროგორც კვადრატების ბადეებში. ისინი აჩვენებენ ელეგანტურ სიმეტრიას.

აიღეთ კუბების ბადე და ამოჭრადიაგონალური სიბრტყე x + y + z = 0. ეს უცნაური იდეაა, მაგრამ ის გვეხმარება გავამარტივოთ ჰექსექსუალური ქსელის ალგორითმები. კერძოდ, ჩვენ გვექნება საშუალება გამოვიყენოთ სტანდარტული ოპერაციები კარტეზიული კოორდინატებიდან: კოორდინატების შეკრება და გამოკლება, სკალარით გამრავლება და გაყოფა და დისტანციები.

შენიშნეთ სამი ძირითადი ღერძი კუბების ბადეზე და მათი ურთიერთობა ექვსთან. დიაგონალიექვსკუთხედების ბადის მიმართულებები. ქსელის დიაგონალური ღერძი შეესაბამება ექვსექსუიანი ბადის ძირითად მიმართულებას.


ექვსკუთხედები


კუბა

ვინაიდან ჩვენ უკვე გვაქვს ალგორითმები კვადრატებისა და კუბების ბადეებისთვის, კუბური კოორდინატების გამოყენება საშუალებას გვაძლევს ეს ალგორითმები მოვათავსოთ ექვსკუთხედის ბადეს. ამ სისტემას გამოვიყენებ სტატიაში არსებული ალგორითმების უმეტესობისთვის. სხვადასხვა კოორდინატთა სისტემის ალგორითმების გამოსაყენებლად, მე ვცვლი კუბურ კოორდინატებს, ვასრულებ ალგორითმს და შემდეგ ვაბრუნებ მათ უკან.

გამოიკვლიეთ როგორ მუშაობს კუბური კოორდინატები ექვსკუთხედების ქსელისთვის. ექვსკუთხედის არჩევისას, ხაზგასმულია სამი ღერძის შესაბამისი კუბური კოორდინატები.

  1. კუბების ბადის თითოეული მიმართულება შეესაბამება ხაზებიექვსკუთხედების ბადეზე. შეეცადეთ შეარჩიოთ ექვსკუთხედი z ტოლი 0, 1, 2, 3 რომ ნახოთ კავშირი. ხაზი აღინიშნება ლურჯში. სცადეთ იგივე x (მწვანე) და y (მეწამული).
  2. თითოეული ექვსკუთხა ბადის მიმართულება არის ორი კუბის ქსელის მიმართულების კომბინაცია. მაგალითად, ექვსკუთხა ბადის ჩრდილოეთით არის + y და -z შორის, ასე რომ თითოეული ნაბიჯი ჩრდილოეთით ზრდის y– ს 1 – ით და ამცირებს z– ს 1 – ით.
კუბური კოორდინატები გონივრული არჩევანია ექვსკუთხა ქსელის კოორდინატთა სისტემისთვის. მდგომარეობა არის x + y + z = 0, ამიტომ ის უნდა იყოს დაცული ალგორითმებში. მდგომარეობა ასევე უზრუნველყოფს იმას, რომ ყოველთვის იქნება კანონიკური კოორდინატი თითოეული ექვსკუთხედისთვის.

კუბებისა და ექვსკუთხედების მრავალი განსხვავებული საკოორდინატო სისტემა არსებობს. ზოგიერთ მათგანში მდგომარეობა განსხვავდება x + y + z = 0 – ისგან. მე ვაჩვენე მრავალი სისტემადან მხოლოდ ერთი. თქვენ ასევე შეგიძლიათ შექმნათ კუბური კოორდინატები x-y, y-z, z-x, რომელსაც ექნება საკუთარი საინტერესო თვისებების ნაკრები, მაგრამ მე მათ აქ არ განვიხილავ.

მაგრამ თქვენ შეიძლება ამტკიცოთ, რომ თქვენ არ გსურთ შეინახოთ 3 ნომერი კოორდინატებისთვის, რადგან თქვენ არ იცით როგორ შეინახოთ რუკა ასე.

ღერძული კოორდინატები

ღერძული საკოორდინატო სისტემა, რომელსაც ზოგჯერ "ტრაპეციული" კოორდინატთა სისტემას უწოდებენ, აგებულია კუბური კოორდინატული სისტემის ორი ან სამი კოორდინატისგან. ვინაიდან გვაქვს პირობა x + y + z = 0, მესამე კოორდინატი არ არის საჭირო. ღერძის კოორდინატები სასარგებლოა რუქების შესანახად და მომხმარებლისთვის კოორდინატების ჩვენებისათვის. ისევე როგორც კუბური კოორდინატები, თქვენ შეგიძლიათ გამოიყენოთ სტანდარტული კარტეზიული დამატება, გამოკლება, გამრავლება და გაყოფა მათთან.

არსებობს მრავალი კუბური საკოორდინატო სისტემა და მრავალი ღერძული. მე არ გავაშუქებ ამ გაკვეთილის ყველა კომბინაციას. მე შევარჩევ ორ ცვლადს, q (სვეტი) და r (მწკრივი). ამ სტატიის დიაგრამებში q შეესაბამება x- ს, ხოლო r შეესაბამება z- ს, მაგრამ ეს კორესპონდენცია არის თვითნებური, რადგან თქვენ შეგიძლიათ გადააკეთოთ და გადააბრუნოთ დიაგრამები, მიიღოთ სხვადასხვა შესაბამისობა.

ამ სისტემის უპირატესობა გადაადგილების ბადეებთან შედარებით არის ის, რომ ალგორითმები უფრო გასაგებია. სისტემის მინუსი ის არის, რომ მართკუთხა რუქის შენახვა ცოტა უცნაურია; იხილეთ რუქების შენახვის განყოფილება. ზოგიერთი ალგორითმი კიდევ უფრო ნათელია კუბურ კოორდინატებში, მაგრამ ვინაიდან ჩვენ გვაქვს მდგომარეობა x + y + z = 0, შეგვიძლია გამოვთვალოთ მესამე ნაგულისხმევი კოორდინატი და გამოვიყენოთ იგი ამ ალგორითმებში. ჩემს პროექტებში მე ღერძებს ვუწოდებ q, r, s, ასე რომ მდგომარეობა ჰგავს q + r + s = 0 და საჭიროების შემთხვევაში შემიძლია გამოვთვალო s = -q - r.

ღერძები

ოფსეტური კოორდინატები არის პირველი, რაც ადამიანების უმეტესობას ჰგონია, რადგან ისინი იგივეა, რაც სტანდარტული კარტეზიული კოორდინატები, რომლებიც გამოიყენება კვადრატული ბადეებისთვის. სამწუხაროდ, ორი ღერძიდან ერთი უნდა წავიდეს მარცვლეულის საწინააღმდეგოდ და ეს ართულებს ყველაფერს შედეგად. კუბური და ღერძული სისტემები მიდიან მარცვლეულის გასწვრივ და აქვთ უფრო მარტივი ალგორითმები, მაგრამ რუქების შენახვა ცოტა უფრო რთულია. არსებობს სხვა სისტემა სახელწოდებით "ალტერნატიული" ან "ორმაგი", მაგრამ ჩვენ არ განვიხილავთ მას აქ; ზოგს უფრო უადვილდება მუშაობა ვიდრე კუბურ ან ღერძულ.


ოფსეტური კოორდინატები, კუბური და ღერძული

ღერძიარის მიმართულება, რომელშიც იზრდება შესაბამისი კოორდინატი. ღერძის პერპენდიკულარულია ის ხაზი, რომელზედაც კოორდინატი მუდმივი რჩება. ბადის დიაგრამები აჩვენებს პერპენდიკულარულ ხაზებს.

კოორდინაციის ტრანსფორმაცია

სავარაუდოა, რომ თქვენ გამოიყენებთ ღერძულ კოორდინატებს ან ოფსეტურ კოორდინატებს თქვენს პროექტში, მაგრამ ბევრი ალგორითმი უფრო ადვილად გამოხატულია კუბურ კოორდინატებში. ამიტომ, ჩვენ უნდა შეგვეძლოს სისტემებს შორის კოორდინატების გარდაქმნა.

ღერძული კოორდინატები მჭიდროდაა დაკავშირებული კუბურ კოორდინატებთან, ამიტომ ტრანსფორმაცია მარტივია:

# გადაიყვანე კუბური ღერძულ კოორდინატებზე q = x r = z # გადაიყვანე ღერძული კუბურ კოორდინატებში x = q z = r y = -x -z
კოდში ეს ორი ფუნქცია შეიძლება დაიწეროს შემდეგნაირად:

ფუნქცია cube_to_hex (h): # ღერძული var q = hx var r = hz დაბრუნება Hex (q, r) ფუნქცია hex_to_cube (h): # კუბური var x = hq var z = hr var y = -xz დაბრუნების კუბი (x, y , ზ)
ოფსეტური კოორდინატები საკმაოდ რთულია:

მიმდებარე ექვსკუთხედები

ერთი ექვსკუთხედის გათვალისწინებით, რომელ ექვსკუთხედს აქვს ის მიმდებარე? როგორც თქვენ შეიძლება მოელოდეთ, პასუხი ყველაზე იოლია კუბურ კოორდინატებში, საკმაოდ პირდაპირ ღერძულ კოორდინატებში და ოდნავ უფრო რთულია ოფსეტური კოორდინატებში. თქვენ ასევე შეიძლება დაგჭირდეთ ექვსი "დიაგონალური" ექვსკუთხედის გამოთვლა.

კუბური კოორდინატები

ექვსკუთხედების კოორდინატებში ერთი სივრცის გადატანა ცვლის ერთ სამ კუბურ კოორდინატს +1 -ით, ხოლო მეორეს -1 -ით (ჯამი უნდა დარჩეს 0 -ის ტოლი). სამი შესაძლო კოორდინატი შეიძლება შეიცვალოს +1 -ით, ხოლო დანარჩენი ორი შეიძლება შეიცვალოს -1 -ით. ეს გვაძლევს ექვს შესაძლო ცვლილებას. თითოეული შეესაბამება ექვსკუთხედის ერთ -ერთ მიმართულებას. უმარტივესი და უსწრაფესი გზაა ცვლილებების წინასწარ გამოთვლა და შედგენის დროს კუბი (dx, dy, dz) ცხრილში:

ვარ მიმართულებები = [კუბი (+1, -1, 0), კუბი (+1, 0, -1), კუბი (0, +1, -1), კუბი (-1, +1, 0), კუბი ( -1, 0, +1), კუბი (0, -1, +1)] ფუნქცია cube_direction (მიმართულება): მიმართულებების დაბრუნების ფუნქცია cube_neighbor (hex, direction): დაბრუნება cube_add (hex, cube_direction (მიმართულება))

ღერძული კოორდინატები

როგორც ადრე, ჩვენ ვიწყებთ კუბურ სისტემას. აიღეთ კუბის ცხრილი (dx, dy, dz) და გადააკეთეთ იგი Hex ცხრილში (dq, dr):

ვარ მიმართულებები = [Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, 0), Hex (-1, +1), Hex (0, +1)] ფუნქცია hex_direction (მიმართულება): მიმართულებების დაბრუნების ფუნქცია hex_neighbor (hex, direction): var dir = hex_direction (direction) return Hex (hex.q + dir.q, hex.r + dir.r)

ოფსეტური კოორდინატები

ღერძულ კოორდინატებში ჩვენ ვაკეთებთ ცვლილებებს იმისდა მიხედვით, თუ სად ვართ ქსელში. თუ ჩვენ ვართ სვეტის / სტრიქონის ოფსეტში, მაშინ წესი განსხვავდება სვეტის / სტრიქონის შემთხვევისგან ოფსეტური გარეშე.

როგორც ადრე, ჩვენ ვქმნით რიცხვების ცხრილს სვეტსა და მწკრივში დასამატებლად. თუმცა, ამჯერად ჩვენ გვექნება ორი მასივი, ერთი კენტი სვეტებისთვის / რიგები და მეორე კი ლუწი. შეხედეთ ზემოთ (1,1) ბადის რუქაზე და შენიშნეთ, როგორ იცვლება სვეტი და მწკრივი ექვსივე მიმართულებით მოძრაობისას. ახლა ჩვენ ვიმეორებთ პროცესს (2,2). ცხრილები და კოდი განსხვავებული იქნება გადაადგილების ოთხივე ტიპისთვის, აქ არის შესაბამისი კოდი თითოეული ტიპის ბადისათვის.

კენტი-რ
var მიმართულებები = [[Hex (+1, 0), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (-1, +1), Hex (0 , +1)], [Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, 0), Hex (0, +1), Hex ( +1, +1)]] ფუნქცია offset_neighbor (hex, მიმართულება): var parity = hex.row & 1 var dir = მიმართულებების დაბრუნება Hex (hex.col + dir.col, hex.row + dir.row)


კი-რ
var მიმართულებები = [[Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, 0), Hex (0, +1), Hex (+1 , +1)], [Hex (+1, 0), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (-1, +1), Hex (0, +1)]] ფუნქცია offset_neighbor (hex, მიმართულება): var parity = hex.row & 1 var dir = მიმართულებების დაბრუნება Hex (hex.col + dir.col, hex.row + dir.row)


ბადე ლუწი (EVEN) და კენტი (ODD) რიგებისათვის

კენტი-ქ
var მიმართულებები = [[Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (0 , +1)], [Hex (+1, +1), Hex (+1, 0), Hex (0, -1), Hex (-1, 0), Hex (-1, +1), Hex (0, +1)]] ფუნქცია offset_neighbor (hex, მიმართულება): var parity = hex.col & 1 var dir = მიმართულებების დაბრუნება Hex (hex.col + dir.col, hex.row + dir.row)


თუნდაც-ქ
var მიმართულებები = [[Hex (+1, +1), Hex (+1, 0), Hex (0, -1), Hex (-1, 0), Hex (-1, +1), Hex (0 , +1)], [Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (0, +1)]] ფუნქცია offset_neighbor (hex, მიმართულება): var parity = hex.col & 1 var dir = მიმართულებების დაბრუნება Hex (hex.col + dir.col, hex.row + dir.row)


ბადე ლუწი (EVEN) და კენტი (ODD) სვეტებისთვის

დიაგონალები

ექვსკუთხედების კოორდინატებში "დიაგონალურ" სივრცეში გადაადგილება ცვლის ერთ -ერთ სამ კუბურ კოორდინატს ± 2 -ით, ხოლო მეორე ორს ∓1 -ით (ჯამი უნდა დარჩეს 0 -ის ტოლი).

ვარ დიაგონალები = [კუბი (+2, -1, -1), კუბი (+1, +1, -2), კუბი (-1, +2, -1), კუბი (-2, +1, +1 ), კუბი (-1, -1, +2), კუბი (+1, -2, +1)] ფუნქცია კუბი_დიაგონალური_მეზობელი (ექვსკუთხედი, მიმართულება): დაბრუნების კუბი_დამატება (ექვსკუთხედი, დიაგონალები)
როგორც ადრე, ჩვენ შეგვიძლია გადავაქციოთ ეს კოორდინატები ღერძულზე, სამივე კოორდინატიდან ერთის უგულებელყოფა, ან გადავიყვანოთ ოფსეტურ კოორდინატებზე, შედეგების გამოთვლის შემდეგ.


დისტანციები

კუბური კოორდინატები

კუბურ კოორდინატთა სისტემაში თითოეული ექვსკუთხედი არის კუბი სამ განზომილებაში. მიმდებარე ექვსკუთხედები არის 1 ექვსკუთხა ქსელში, მაგრამ 2 კუბის ბადეში. ეს აადვილებს მანძილების გამოთვლას. კვადრატების ქსელში მანჰეტენის მანძილი არის abs (dx) + abs (dy). კუბების ქსელში მანჰეტენის მანძილი არის abs (dx) + abs (dy) + abs (dz). მანძილი ექვსკუთხედების ბადეში უდრის მათ ნახევარს:

ფუნქცია cube_distance (a, b): return (abs (a.x - b.x) + abs (a.y - b.y) + abs (a.z - b.z)) / 2
ამ აღნიშვნის ექვივალენტი იქნება გამოხატვა იმისა, რომ სამი კოორდინატიდან ერთი უნდა იყოს დანარჩენი ორის ჯამი და შემდეგ მიიღება ის დისტანციის სახით. თქვენ შეგიძლიათ აირჩიოთ ორმხრივი ფორმა ან მაქსიმალური მნიშვნელობის ფორმა ქვემოთ, მაგრამ ისინი იძლევა ერთსა და იმავე შედეგს:

ფუნქცია cube_distance (a, b): დაბრუნების მაქსიმალური (abs (a.x - b.x), abs (a.y - b.y), abs (a.z - b.z))
ფიგურაში, მაქსიმალური მნიშვნელობები მონიშნულია ფერით. ასევე გაითვალისწინეთ, რომ თითოეული ფერი წარმოადგენს ექვს "დიაგონალურ" მიმართულებას.

GIF


ღერძული კოორდინატები

ღერძულ სისტემაში მესამე კოორდინატი ნაგულისხმევად არის გამოხატული. მოდით გადავიყვანოთ ღერძულიდან კუბურზე, რომ გამოვთვალოთ მანძილი:

ფუნქცია hex_distance (a, b): var ac = hex_to_cube (a) var bc = hex_to_cube (b) cube_distance (ac, bc)
თუ შემდგენელი თქვენს შემთხვევაში ჩართავს hex_to_cube და cube_distance, მაშინ ის გამოიმუშავებს შემდეგ კოდს:

ფუნქცია hex_distance (a, b): return (abs (a.q - b.q) + abs (a.q + a.r - b.q - b.r) + abs (a.r - b.r)) / 2
ექვსკუთხედებს შორის მანძილის წერის მრავალი განსხვავებული გზა არსებობს ღერძულ კოორდინატებში, მაგრამ წერის მეთოდის მიუხედავად ექვსკუთხედებს შორის მანძილი ღერძულ სისტემაში ამოღებულია მანჰეტენის მანძილიდან კუბურ სისტემაში... მაგალითად, აღწერილი „განსხვავებათა სხვაობა“ მიიღება a.q + a.r - b.q - b.r როგორც a.q - b.q + a.r - b.r წერისა და ბისექციის ფორმის cube_distance ნაცვლად მაქსიმალური მნიშვნელობის ფორმის გამოყენებით. ისინი ყველა მსგავსია, თუ ხედავთ კუბურ კოორდინატებთან ურთიერთობას.

ოფსეტური კოორდინატები

ისევე როგორც ღერძულ კოორდინატებთან ერთად, ჩვენ გადავიყვანთ ოფსეტური კოორდინატებს კუბურ კოორდინატებზე და შემდეგ ვიყენებთ კუბურ მანძილს.

ფუნქცია offset_distance (a, b): var ac = offset_to_cube (a) var bc = offset_to_cube (b) დაბრუნება cube_distance (ac, bc)
ჩვენ ვიყენებთ ერთსა და იმავე შაბლონს მრავალი ალგორითმისთვის: ექვსკუთხედიდან კუბებად გადაყვანა, ალგორითმის კუბური ვერსიის გაშვება და კუბური შედეგების ექვსკუთხედის კოორდინატებად გადაქცევა (ღერძული ან ოფსეტური კოორდინატები).

ხაზების დახატვა

როგორ გავავლო ხაზი ერთი ექვსკუთხედიდან მეორეზე? მე ვიყენებ ხაზოვან ინტერპოლაციას ხაზების დასახატად. ხაზი აღებულია ერთნაირად N + 1 წერტილში და გამოითვლება რომელ ექვსკუთხედში მდებარეობს ეს ნიმუშები.

GIF


  1. ჩვენ პირველად გამოვთვალეთ N, რომელიც იქნება ექვსკუთხა მანძილი საბოლოო წერტილებს შორის.
  2. შემდეგ ჩვენ ერთნაირად ვატარებთ ნიმუშს N + 1 წერტილს A და B. წერტილებს შორის ხაზოვანი ინტერპოლაციის გამოყენებით დავადგინოთ, რომ i– დან 0 – მდე N მნიშვნელობებისთვის, მათ შორის, თითოეული წერტილი იქნება A + (B - A) * 1.0 / N * მე. ფიგურაში ეს საკონტროლო წერტილები ნაჩვენებია ლურჯ ფერში. შედეგი არის მცურავი წერტილის კოორდინატები.
  3. გადააკეთეთ თითოეული საკონტროლო წერტილი (float) უკან ექვსკუთხედზე (int). ალგორითმს ეწოდება cube_round (იხ. ქვემოთ).
ყველაფერი ერთად ავაგოთ A– დან B– მდე ხაზს:

ფუნქცია lerp (a, b, t): // float– ისთვის a + (b - a) * t ფუნქცია cube_lerp (a, b, t): // ექვსკუთხედებისთვის კუბის დაბრუნება (lerp (ax, bx, t), lerp (ay, by, t), lerp (az, bz, t)) ფუნქცია cube_lineraw (a, b): var N = cube_distance (a, b) var results = each 0 ≤ i ≤ N: results.append ( cube_round (cube_lerp (a, b, 1.0 / N * i))) შედეგების დაბრუნება
შენიშვნები:

  • არის შემთხვევები, როდესაც cube_lerp აბრუნებს წერტილს ზუსტად ზღვარზე ორ ექვსკუთხედს შორის. შემდეგ cube_round ცვლის მას ასე თუ ისე. ხაზები უკეთ გამოიყურება, როდესაც ერთი მიმართულებით მოძრაობენ. ეს შეიძლება გაკეთდეს მარყუჟის დაწყებამდე ერთ ან ორივე ბოლო წერტილზე ეპსილონის ექვსკუთხედის კუბის (1e-6, 1e-6, -2e-6) დამატებით. ეს ხაზს "წაართმევს" ერთი მიმართულებით ისე, რომ ის არ მოხვდება ზღვარზე.
  • DDA ხაზის ალგორითმი კვადრატების ბადეებში უტოლდება N მაქსიმალურ მანძილს თითოეული ღერძის გასწვრივ. იგივეს ვაკეთებთ კუბურ სივრცეში, რაც ანალოგიურია ექვსკუთხედების ბადის მანძილზე.
  • Cube_lerp ფუნქცია უნდა დააბრუნოს კუბი კოორდინატებით float- ში. თუ თქვენ პროგრამირებთ სტატიკურად აკრეფილ ენაზე, თქვენ არ შეგიძლიათ გამოიყენოთ კუბის ტიპი. ამის ნაცვლად, თქვენ შეგიძლიათ განსაზღვროთ FloatCube ტიპი, ან ჩართოთ ფუნქცია თქვენს ხაზის კოდში, თუ არ გსურთ სხვა ტიპის განსაზღვრა.
  • თქვენ შეგიძლიათ თქვენი კოდის ოპტიმიზაცია განახორციელოთ cube_lerp და შემდეგ გამოთვალოთ B.x-A.x, B.x-A.y და 1.0 / N მარყუჟის გარეთ. გამრავლება შეიძლება გადაკეთდეს განმეორებით ჯამზე. შედეგი იქნება DDA ხაზის ალგორითმის მსგავსი.
  • მე ვიყენებ ღერძულ ან კუბურ კოორდინატებს ხაზების დასახატად, მაგრამ თუ გსურთ ოფსეტური კოორდინატებით მუშაობა მაშინ ისწავლეთ.
  • ხაზების დახატვის მრავალი ვარიანტი არსებობს. ზოგჯერ საჭიროა გადახურვა. მათ გამომიგზავნეს კოდი, რომელიც ხაზებს ხატავს ექვსკუთხედში, მაგრამ მე ჯერ არ შემიხედავს.

მოგზაურობის დიაპაზონი

საკოორდინაციო დიაპაზონი

ექვსკუთხედის მოცემული ცენტრისთვის და N დიაპაზონისთვის, რომელი ექვსკუთხედია მის N საფეხურზე?

ჩვენ შეგვიძლია გავაკეთოთ საპირისპირო სამუშაოები ექვსკუთხედებს შორის მანძილიდან = max (abs (dx), abs (dy), abs (dz)). N– ში არსებული ყველა ექვსკუთხედის მოსაძებნად, ჩვენ გვჭირდება max (abs (dx), abs (dy), abs (dz)) ≤ N. ეს ნიშნავს, რომ სამივე მნიშვნელობაა საჭირო: abs (dx) ≤ N და abs (dy) ≤ N და abs (dz) ≤ N. აბსოლუტური მნიშვნელობის ამოღებით ვიღებთ –N ≤ dx ≤ N და –N ≤ dy ≤ N და –N ≤ dz ≤ N. კოდში ეს იქნება ჩადგმული მარყუჟი:

ვარ შედეგები = თითოეულისთვის -N ≤ dx ≤ N: თითოეულისთვის -N ≤ dy ≤ N: თითოეულისთვის -N ≤ dz ≤ N: თუ dx + dy + dz = 0: შედეგები. დამატება (cube_add (ცენტრი, კუბი (dx , dy, dz)))
ეს მარყუჟი იმუშავებს, მაგრამ ის საკმაოდ არაეფექტური იქნება. ყველა dz მნიშვნელობიდან, რომელსაც ჩვენ ვიმეორებთ მარყუჟში, მხოლოდ ერთი ნამდვილად აკმაყოფილებს კუბების მდგომარეობას dx + dy + dz = 0. ამის ნაცვლად, ჩვენ პირდაპირ გამოვთვლით dz მნიშვნელობას, რომელიც აკმაყოფილებს პირობას:

ვარ შედეგები = თითოეული -N ≤ dx ≤ N: თითოეული მაქს (-N, -dx -N) ≤ dy ≤ min (N, -dx + N): var dz = -dx -dy შედეგები. დამატება (cube_add ( ცენტრი, კუბი (dx, dy, dz)))
ეს ციკლი გადის მხოლოდ საჭირო კოორდინატების გასწვრივ. ფიგურაში თითოეული დიაპაზონი არის წყვილი ხაზები. თითოეული ხაზი არის უტოლობა. ჩვენ ვიღებთ ყველა ექვსკუთხედს, რომელიც აკმაყოფილებს ექვს უტოლობას.

GIF


გადახურვის დიაპაზონები

თუ თქვენ გჭირდებათ ექვსკუთხედების პოვნა, რომლებიც მრავალ დიაპაზონშია, შეგიძლიათ გადალახოთ დიაპაზონი ექვსკუთხედების სიის გენერირებამდე.

თქვენ შეგიძლიათ მიუდგეთ ამ პრობლემას ალგებრის ან გეომეტრიის თვალსაზრისით. ალგებრული თვალსაზრისით, თითოეული რეგიონი გამოხატულია უთანასწორობის პირობებში -N ≤ dx ≤ N სახით და ჩვენ გვჭირდება ამ პირობების კვეთა. გეომეტრიულად, თითოეული ფართობი არის კუბური სამგანზომილებიან სივრცეში და ჩვენ სამ კუბს გადავკვეთთ სამგანზომილებიან სივრცეში, რათა მივიღოთ სამკუთხა პარალელეპიპედი სამგანზომილებიან სივრცეში. შემდეგ ჩვენ ვამტკიცებთ მას x + y + z = 0 სიბრტყეზე, რათა მივიღოთ ექვსკუთხედები. ამ პრობლემას ალგებრულად მოვაგვარებ.

პირველ რიგში, ჩვენ ვწერთ მდგომარეობას -N ≤ dx ≤ N უფრო ზოგადი ფორმით x min ≤ x ≤ x max და ვიღებთ x min = ცენტრს. X - N და x max = ცენტრს. X + N. მოდით იგივე გავაკეთოთ y და z– ზე, რის შედეგადაც მივიღეთ კოდის ზოგადი ხედი წინა განყოფილებიდან:

Var შედეგები = თითოეული xmin ≤ x ≤ xmax: თითოეული max (ymin, -x -zmax) ≤ y ≤ min (ymax, -x -zmin): var z = -xy results.append (Cube (x, y, ზ))
ორი დიაპაზონის გადაკვეთა a ≤ x ≤ b და c ≤ x ≤ d არის max (a, c) ≤ x ≤ min (b, d). ვინაიდან ექვსკუთხედების ფართობი გამოხატულია როგორც დიაპაზონი x, y, z, ჩვენ შეგვიძლია ინდივიდუალურად გადავაკვეთოთ თითოეული x, y, z დიაპაზონი და შემდეგ გამოვიყენოთ წყობილი მარყუჟი, რათა შევქმნათ ექვსკუთხედების სია კვეთაზე. ექვსკუთხედების ერთი ფართობისთვის ვიღებთ x min = H.x - N და x max = H.x + N, ანალოგიურად y და z. ექვსკუთხედის ორი რეგიონის გადაკვეთისთვის ვიღებთ x min = max (H1.x - N, H2.x - N) და x max = min (H1.x + N, H2.x + N), ანალოგიურად y და ზ. იგივე ნიმუში მუშაობს სამი ან მეტი რეგიონის კვეთაზე.

GIF


დაბრკოლებები

თუ არსებობს დაბრკოლებები, ყველაზე ადვილია შეავსოთ შეზღუდული მანძილი (სიგანის პირველი ძებნა). ქვემოთ მოცემულ ფიგურაში ჩვენ შემოვიფარგლებით ოთხი სვლით. კოდში, [k] არის ყველა ექვსკუთხედის მასივი, რომლის მიღწევაც შესაძლებელია k ნაბიჯებით. თითოეული მარყუჟის გავლით, ჩვენ გავაფართოვებთ k-1 დონეს k დონეზე.

ფუნქცია cube_reachable (დაწყება, მოძრაობა): var მონახულებული = მითითებული () დაამატეთ დაწყებული მონახულებული var fringes = fringes.append () თითოეული 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

უხვევს

მოცემული ექვსკუთხა ვექტორისთვის (სხვაობა ორ ექვსკუთხედს შორის), შეიძლება დაგვჭირდეს მისი ბრუნვა ისე, რომ იგი მიუთითებს სხვა ექვსკუთხედზე. კუბური კოორდინატებით ადვილია ამის გაკეთება, თუკი წებოს 1/6 წრეზე გადახვალთ.

ბრუნვა 60 ° მარჯვნივ ცვლის თითოეული კოორდინატი ერთ პოზიციას მარჯვნივ:

[x, y, z] -დან [-z, -x, -y]
ბრუნვა 60 ° მარცხნივ ცვლის თითოეული კოორდინატი ერთ პოზიციას მარცხნივ:

[x, y, z] -დან [-y, -z, -x]



"თამაშობდნენ" [თავდაპირველ სტატიაში] სქემით, შეამჩნევთ, რომ თითოეული გადახვევა 60 ° -ით ცვლილებებინიშნებს და ფიზიკურად "ბრუნავს" კოორდინატებს. 120 ° ბრუნვის შემდეგ, ნიშნები ისევ იგივეა. 180 ° ბრუნვა ცვლის ნიშნებს, მაგრამ კოორდინატები ბრუნდება თავდაპირველ პოზიციაზე.

აქ არის P პოზიციის ბრუნვის სრული თანმიმდევრობა ცენტრის C პოზიციის გარშემო, რის შედეგადაც მიიღება ახალი R პოზიცია:

  1. გადააქციეთ პოზიციები P და C კუბურ კოორდინატებად.
  2. გამოთვალეთ ვექტორი ცენტრის გამოკლებით: P_from_C = P - C = კუბი (P.x - C.x, P.y - C.y, P.z - C.z).
  3. გადაატრიალეთ P_from_C ვექტორი, როგორც ზემოთ აღწერილია და მიანიჭეთ მიღებული ვექტორი R_from_C.
  4. გადააბრუნეთ ვექტორი პოზიციაზე ცენტრის დამატებით: 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. გადააბრუნეთ კუბური პოზიცია R სასურველ საკოორდინატო სისტემაში.
გარდაქმნის რამდენიმე ეტაპი არსებობს, მაგრამ თითოეული მათგანი საკმაოდ მარტივია. ამ რამოდენიმე ნაბიჯის შემცირება შესაძლებელია ბრუნვის უშუალოდ ღერძის კოორდინატებში განსაზღვრით, მაგრამ ექვსკუთხა ვექტორები არ მუშაობენ ოფსეტური კოორდინატებით და მე არ ვიცი როგორ შევამციროთ საფეხურები ოფსეტური კოორდინატებისთვის. აგრეთვე იხილეთ ბრუნვის გამოთვლის სხვა გზების სტაკირების განხილვა.

ბეჭდები

მარტივი ბეჭედი

იმის გასარკვევად, ეკუთვნის თუ არა მოცემული ექვსკუთხედი მოცემული რადიუსის რგოლს, თქვენ უნდა გამოთვალოთ მანძილი ამ ექვსკუთხედიდან ცენტრამდე და გაარკვიოთ ტოლია თუ არა იგი რადიუსის. ყველა ასეთი ექვსკუთხედის სიის მისაღებად გადადგით რადიუსის ნაბიჯები ცენტრიდან და შემდეგ მიჰყევით ბრუნულ ვექტორებს რგოლის გასწვრივ ბილიკის გასწვრივ.

ფუნქცია cube_ring (ცენტრი, რადიუსი): var results = # ეს კოდი არ მუშაობს რადიუსზე == 0; გესმის რატომ? var cube = cube_add (ცენტრი, cube_scale (cube_direction (4), რადიუსი)) თითოეული 0 ≤ i< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
ამ კოდში კუბი იწყება რგოლთან, რომელიც ნაჩვენებია დიდი ისრით ცენტრიდან დიაგრამის კუთხემდე. მე დავიწყე კუთხე 4 დასაწყებად, რადგან ის ემთხვევა იმ გზას, სადაც ჩემი რიცხვები მოძრაობენ. შეიძლება დაგჭირდეთ დაწყების სხვა კუთხე. შიდა მარყუჟის თითოეულ საფეხურზე კუბი მოძრაობს ერთ ექვსკუთხედზე რგოლის გარშემო. 6 * რადიუსის საფეხურების შემდეგ ის მთავრდება იქ, სადაც დაიწყო.


სპირალური რგოლები

სპირალური რგოლების გავლით, ჩვენ შეგვიძლია შეავსოთ რგოლების შიდა ნაწილები:

ფუნქცია cube_spiral (ცენტრი, რადიუსი): var შედეგები = თითოეული 1 ≤ k ≤ რადიუსისთვის: შედეგები = შედეგები + cube_ring (ცენტრი, k) შედეგების დაბრუნება



დიდი ექვსკუთხედის ფართობი არის ყველა წრის ჯამი პლუს 1 ცენტრისთვის. გამოიყენეთ ეს ფორმულა ფართობის გამოსათვლელად.

ექვსკუთხედების ამ გზით გავლა ასევე შეიძლება გამოყენებულ იქნას მოძრაობის დიაპაზონის გამოსათვლელად (იხ. ზემოთ).

ხილვადობის არე

რა ჩანს მოცემული პოზიციიდან მოცემული მანძილით და არ შეფერხებულა დაბრკოლებებით? ამის დადგენის უმარტივესი გზაა მოცემული დიაპაზონის თითოეულ ექვსკუთხედზე ხაზის დახატვა. თუ ხაზი არ ხვდება კედლებს, მაშინ ხედავთ ექვსკუთხედს. გადაიტანეთ თაგვი ექვსკუთხედებზე [დიაგრამაში ორიგინალ სტატიაში], რათა ნახოთ ხაზები ამ ექვსკუთხედებზე და კედლებთან, რომლებითაც ხაზები ხვდება.

ეს ალგორითმი შეიძლება ნელი იყოს დიდ ფართობებზე, მაგრამ მისი განხორციელება ადვილია, ამიტომ გირჩევთ დაიწყოთ ამით.

GIF



ხილვადობის მრავალი განსხვავებული განმარტება არსებობს. გსურთ ნახოთ სხვა ექვსკუთხედის ცენტრი საწყისის ცენტრიდან? გსურთ ნახოთ სხვა ექვსკუთხედის რომელიმე ნაწილი საწყისის ცენტრიდან? იქნებ სხვა ექვსკუთხედის რომელიმე ნაწილი რომელიმე საწყისი წერტილიდან? არის დაბრკოლებები უფრო მცირე ვიდრე ექვსკუთხედი? სფერო უფრო რთული და მრავალფეროვანი კონცეფციაა, ვიდრე თვალში ჩანს. დავიწყოთ უმარტივესი ალგორითმით, მაგრამ ველით, რომ ის აუცილებლად გამოთვლის პასუხს სწორად თქვენს პროექტში. არის შემთხვევებიც, როდესაც უბრალო ალგორითმი იძლევა ალოგიკურ შედეგებს.

მინდა ეს სახელმძღვანელო კიდევ უფრო გავაფართოვო. მე მაქვს

არის ფანქარი თქვენს მახლობლად? შეხედეთ მის მონაკვეთს - ეს არის რეგულარული ექვსკუთხედი ან, როგორც მას ასევე უწოდებენ, ექვსკუთხედი. თხილის ჯვარი, ექვსკუთხა ჭადრაკის ველი, ნახშირბადის ზოგიერთი რთული მოლეკულა (მაგალითად, გრაფიტი), ფიფქია, თაფლის ბუდე და სხვა საგნებიც აქვს ამ ფორმას. ცოტა ხნის წინ აღმოაჩინეს გიგანტური რეგულარული ექვსკუთხედი მოდით უფრო ახლოს შევხედოთ.

რეგულარული ექვსკუთხედი არის მრავალკუთხედი, რომელსაც აქვს ექვსი თანაბარი გვერდი და თანაბარი კუთხე. სკოლის კურსიდან ვიცით, რომ მას აქვს შემდეგი თვისებები:

  • მისი გვერდების სიგრძე შეესაბამება შემოსაზღვრული წრის რადიუსს. საერთოდ, მხოლოდ ჩვეულებრივ ექვსკუთხედს აქვს ეს თვისება.
  • კუთხეები ერთმანეთის ტოლია და თითოეულის სიდიდე 120 °.
  • ექვსკუთხედის პერიმეტრი შეიძლება მოიძებნოს ფორმულით P = 6 * R, თუ ცნობილია მის გარშემო შემოსაზღვრული წრის რადიუსი, ან P = 4 * √ (3) * r, თუ მასში წრეა ჩაწერილი. R და r არის წრეწირისა და წრის რადიუსი.
  • რეგულარული ექვსკუთხედის მიერ დაკავებული ტერიტორია განისაზღვრება შემდეგნაირად: S = (3 * √ (3) * R 2) / 2. თუ რადიუსი უცნობია, მის ნაცვლად ჩვენ ვცვლით ერთ -ერთი გვერდის სიგრძეს - როგორც მოგეხსენებათ, ეს შეესაბამება შემოსაზღვრული წრის რადიუსის სიგრძეს.

რეგულარულ ექვსკუთხედს აქვს ერთი საინტერესო თვისება, რაც მას ასე ფართოდ ხდის ბუნებაში - მას შეუძლია შეავსოს სიბრტყის ნებისმიერი ზედაპირი გადახურვებისა და ხარვეზების გარეშე. არსებობს თუნდაც ეგრეთ წოდებული პალმის ლემა, რომლის მიხედვითაც რეგულარული ექვსკუთხედი გვერდის ტოლი 1 / √ (3) არის უნივერსალური საფარი, ანუ მას შეუძლია დაფაროს ნებისმიერი ნაკრები ერთი ერთეულის დიამეტრით.

ახლა მოდით შევხედოთ ჩვეულებრივი ექვსკუთხედის აგებას. არსებობს რამდენიმე გზა, რომელთაგან უმარტივესი მოიცავს კომპასის, ფანქრისა და მმართველის გამოყენებას. პირველ რიგში, ჩვენ ვხატავთ თვითნებურ წრეს კომპასით, შემდეგ კი ამ წრის თვითნებურ ადგილას ვაკეთებთ წერტილს. კომპასის ხსნარის შეცვლის გარეშე, ჩვენ ამ ადგილას ვდებთ წვერს, ვნიშნავთ მომდევნო წრეს წრეზე, ვაგრძელებთ ამ გზას მანამ, სანამ არ მივიღებთ ყველა 6 ქულას. ახლა რჩება მხოლოდ მათი დაკავშირება პირდაპირ სეგმენტებთან და მიიღებთ სასურველ ფიგურას.

პრაქტიკაში, არის დრო, როდესაც საჭიროა დიდი ექვსკუთხედის დახატვა. მაგალითად, ორ დონის თაბაშირის მუყაოს ჭერზე, ცენტრალური ჭაღის სამონტაჟო წერტილის გარშემო, თქვენ უნდა დააინსტალიროთ ექვსი პატარა ნათურა ქვედა დონეზე. ძალიან, ძალიან რთული იქნება ამ ზომის კომპასის პოვნა. რა უნდა გააკეთოს ამ შემთხვევაში? საერთოდ როგორ ხატავ დიდ წრეს? Ძალიან მარტივი. თქვენ უნდა აიღოთ საჭირო სიგრძის ძლიერი ძაფი და მიაბათ ფანქრის მოპირდაპირედ მისი ერთი ბოლო. ახლა რჩება მხოლოდ ასისტენტის პოვნა, რომელიც ძაფის მეორე ბოლოს ჭერზე დააჭერს სასურველ წერტილში. რასაკვირველია, ამ შემთხვევაში შესაძლებელია მცირე შეცდომები, მაგრამ ისინი ნაკლებად სავარაუდოა, რომ შესამჩნევი იყოს გარედან.

შინაარსი:

რეგულარულ ექვსკუთხედს, რომელსაც ასევე უწოდებენ სრულყოფილ ექვსკუთხედს, აქვს ექვსი თანაბარი გვერდი და ექვსი თანაბარი კუთხე. თქვენ შეგიძლიათ დახაზოთ ექვსკუთხედი ფირზე და პროტრაქტორით, უხეში ექვსკუთხედი მრგვალი საგნით და მმართველით, ან კიდევ უფრო უხეში ექვსკუთხედი მხოლოდ ფანქრით და მცირე ინტუიციით. თუ გსურთ იცოდეთ როგორ დახაზოთ ექვსკუთხედი სხვადასხვა გზით, უბრალოდ წაიკითხეთ.

ნაბიჯები

1 დახაზეთ სრულყოფილი ექვსკუთხედი კომპასის გამოყენებით

  1. 1 დახაზეთ წრე კომპასის გამოყენებით.ჩადეთ ფანქარი კომპასში. გააფართოვეთ კომპასი სასურველ სიგანეზე თქვენი წრის რადიუსზე. რადიუსი შეიძლება იყოს წყვილიდან ათ სანტიმეტრამდე სიგანეზე. შემდეგი, განათავსეთ კომპასი ფანქრით ქაღალდზე და დახაზეთ წრე.
    • ზოგჯერ უფრო ადვილია წრის ნახევრის დახატვა ჯერ და შემდეგ მეორე ნახევარი.
  2. 2 გადაიტანეთ კომპასის ნემსი წრის პირას.განათავსეთ იგი წრის თავზე. არ შეცვალოთ კომპასის კუთხე და პოზიცია.
  3. 3 გააკეთეთ პატარა ფანქრის ნიშანი წრის პირას.გახადეთ ეს ნათელი, მაგრამ არა ძალიან ბნელი, რადგან მოგვიანებით წაშლით მას. დაიმახსოვრე, რომ შეინარჩუნო კომპასი კომპასი.
  4. 4 გადაიტანეთ კომპასის ნემსი თქვენს მიერ გაკეთებულ ნიშანზე.მოათავსეთ ნემსი პირდაპირ ნიშანზე.
  5. 5 გააკეთეთ სხვა ფანქრის ნიშანი წრის პირას.ამრიგად, თქვენ გააკეთებთ მეორე ნიშანს პირველი ნიშნიდან გარკვეულ მანძილზე. განაგრძეთ მოძრაობა ერთი მიმართულებით.
  6. 6 გააკეთეთ კიდევ ოთხი ნიშანი იმავე გზით.თქვენ უნდა დაუბრუნდეთ საწყის ნიშნულს. თუ არა, მაშინ, სავარაუდოდ, შეიცვალა კუთხე, რომელზეც გეჭირათ კომპასი და გააკეთეთ ნიშნები. ალბათ ეს მოხდა იმის გამო, რომ თქვენ ძალიან მჭიდროდ გაწურეთ იგი ან, პირიქით, ოდნავ გაათავისუფლეთ.
  7. 7 შეაერთეთ ნიშნები მმართველთან.ექვსი ადგილი, სადაც თქვენი ნიშნები იკვეთება წრის პირას არის ექვსკუთხედის ექვსი წვერო. მმართველი და ფანქარი, დახაზეთ მიმდებარე ნიშნების დამაკავშირებელი სწორი ხაზები.
  8. 8 წაშალეთ წრე, ნიშნები წრის კიდეებზე და ნებისმიერი სხვა ნიშანი, რაც თქვენ გააკეთეთ. მას შემდეგ რაც წაშალეთ ყველა სამშენებლო ხაზი, თქვენი სრულყოფილი ექვსკუთხედი მზად უნდა იყოს.

2 დახაზეთ უხეში ექვსკუთხედი მრგვალი საგნისა და ხაზის გამოყენებით

  1. 1 დახატეთ ფანქარი შუშის რგოლში.ეს დახატავს წრეს. ძალიან მნიშვნელოვანია ფანქრით დახატვა, რადგან მოგვიანებით დაგჭირდებათ ყველა დამხმარე ხაზის წაშლა. თქვენ ასევე შეგიძლიათ შემოხაზოთ შებრუნებული მინა, ქილა ან სხვა ყველაფერი, რომელსაც აქვს მრგვალი ფუძე.
  2. 2 დახაზეთ ჰორიზონტალური ხაზები თქვენი წრის ცენტრში.თქვენ შეგიძლიათ გამოიყენოთ მმართველი, წიგნი, ყველაფერი სწორი ზღვარით. თუ თქვენ გაქვთ მმართველი, შეგიძლიათ შუა აღნიშნოთ წრის ვერტიკალური სიგრძის გამოთვლით და გაყოთ იგი შუაზე.
  3. 3 დახაზეთ "X" წრის ნახევარზე, გავყოთ ექვს თანაბარ ნაწილად.ვინაიდან თქვენ უკვე დახაზეთ წრე შუა წრეში, X უნდა იყოს უფრო ფართო ვიდრე მაღალი, ისე რომ ნაწილები ტოლი იყოს. წარმოიდგინეთ, თქვენ პიცას ყოფთ ექვს ნაწილად.
  4. 4 გააკეთეთ სამკუთხედები თითოეული განყოფილებიდან.ამისათვის გამოიყენეთ მმართველი თითოეული მონაკვეთის მოსახვევი ნაწილის ქვეშ სწორი ხაზის დახატვის მიზნით და დააკავშირეთ იგი სხვა ორ ხაზთან სამკუთხედის შესაქმნელად. გააკეთეთ ეს დანარჩენი ხუთი განყოფილებით. იფიქრეთ იმაზე, რომ გააკეთოთ ქერქი თქვენი პიცის ნაჭრების გარშემო.
  5. 5 წაშალეთ ყველა სამშენებლო ხაზი.სამშენებლო ხაზები მოიცავს თქვენს წრეს, სამ ხაზს, რომელმაც თქვენი წრე დაყო ნაწილებად და სხვა ნიშნები, რომლებიც თქვენ გააკეთეთ გზაზე.

3 დახაზეთ უხეში ექვსკუთხედი ერთი ფანქრით

  1. 1 დახაზეთ ჰორიზონტალური ხაზი.მრგვალის გარეშე სწორი ხაზის დახატვა, უბრალოდ დახაზეთ თქვენი ჰორიზონტალური ხაზის საწყისი და ბოლო წერტილები. შემდეგ განათავსეთ ფანქარი საწყის წერტილში და გააგრძელეთ ხაზი ბოლომდე. ამ ხაზის სიგრძე შეიძლება იყოს რამდენიმე სანტიმეტრი.
  2. 2 დახაზეთ ორი დიაგონალური ხაზი ჰორიზონტალური ხაზის ბოლოებიდან.დიაგონალური ხაზი მარცხნივ უნდა იყოს მიმართული გარეგნულად, ისევე როგორც მარჯვნივ. თქვენ შეგიძლიათ წარმოიდგინოთ, რომ ეს ხაზები ქმნის 120 გრადუსიან კუთხეს ჰორიზონტალურ ხაზთან მიმართებაში.
  3. 3 დახაზეთ კიდევ ორი ​​ჰორიზონტალური ხაზი, რომელიც გამოდის პირველი ჰორიზონტალური ხაზებიდან, რომელიც შედგენილია შიგნით.ეს შექმნის პირველი ორი დიაგონალური ხაზის სარკისებურ გამოსახულებას. ქვედა მარცხენა ხაზი უნდა იყოს ზედა მარცხენა ხაზის ანარეკლი, ხოლო ქვედა მარჯვენა - ზედა მარჯვენა ხაზის ანარეკლი. მიუხედავად იმისა, რომ ზედა ჰორიზონტალური ხაზები უნდა გამოიყურებოდეს გარედან, ქვედა ხაზები უნდა გამოიყურებოდეს ბაზის შიგნით.
  4. 4 დახაზეთ კიდევ ერთი ჰორიზონტალური ხაზი, რომელიც აკავშირებს ქვედა ორ დიაგონალურ ხაზს.ამ გზით თქვენ დახატავთ საფუძველს თქვენი ექვსკუთხედისთვის. იდეალურ შემთხვევაში, ეს ხაზი უნდა იყოს პარალელური ზედა ჰორიზონტალური ხაზის. ახლა თქვენ დაასრულეთ თქვენი ექვსკუთხედი.
  • ფანქარი და კომპასი უნდა იყოს მკვეთრი, რათა შეამციროს შეცდომები ძალიან ფართო ნიშნებიდან.
  • თუ კომპასის მეთოდის გამოყენებით დააკავშირებთ თითოეულ ნიშანს ექვსივეს ნაცვლად, მიიღებთ ტოლგვერდა სამკუთხედს.

გაფრთხილებები

  • კომპასი საკმაოდ მკვეთრი ობიექტია, იყავით ძალიან ფრთხილად მასთან.

ოპერაციის პრინციპი

  • თითოეული მეთოდი დახატავს ექვსკუთხედს, რომელიც ჩამოყალიბებულია ექვსი ტოლგვერდა სამკუთხედის რადიუსით, ყველა გვერდის სიგრძის ტოლი. ექვსი შედგენილი რადიუსი იგივე სიგრძეა და ექვსკუთხედის შესაქმნელად ყველა ხაზი ასევე იგივე სიგრძეა, ვინაიდან კომპასის სიგანე არ შეცვლილა. იმის გამო, რომ ექვსი სამკუთხედი ტოლგვერდაა, მათ წვეროებს შორის კუთხეები 60 გრადუსია.

Რა გჭირდება

  • ქაღალდი
  • ფანქარი
  • მმართველი
  • კომპასის წყვილი
  • თქვენ შეგიძლიათ ქაღალდის ქვეშ მოათავსოთ, რომ კომპასის ნემსი არ გადმოვარდეს.
  • საშლელი

დახურვა