Біз алтыбұрышты призманы әр түрлі позицияларда бейнелеуді үйренеміз.

Кәдімгі алтыбұрышты құрудың әр түрлі әдістерін үйреніңіз, алтыбұрыштың суретін салыңыз, олардың дұрыстығын тексеріңіз. Алтыбұрыштардан алтыбұрышты призмаларды сызыңыз.

Кескіндегі он алтылық призманы қарастырыңыз. 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 -сурет). Енді радиустың ортаңғы нүктелері арқылы өтіңіз - А және В нүктелері - 5 - 2 түзуіне перпендикуляр түзулер. 5 және 2 нүктелерде эллипске жанамаларды қолдана отырып олардың бағытын табуға болады (3.59 -сурет). Бұл жанамалар 5 - 2 диаметріне перпендикуляр болады, ал осы жанамаларға параллель А және В нүктелері арқылы жүргізілген сызықтар 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 -сурет). А және В нүктелері арқылы тік сызықтар жүргіз, ал олардың эллипспен қиылысында 1,3,6L4 нүктелерін табыңдар. Содан кейін 1 - 6 нүктелерін түзу сызықтармен тізбектей жалғаңыз (3.66 -сурет). Алтыбұрыштың құрылысының дұрыстығын алдыңғы мысалдағыдай тексеріңіз.

Алтыбұрышты құрудың сипатталған әдісі берілген фигураны шеңберге сүйене отырып алуға мүмкіндік береді, оны берілген пропорциялар квадратына қарағанда перспективада салу оңай. Сондықтан алтыбұрышты құрастырудың бұл әдісі ең дәл және әмбебап болып көрінеді. Квадратқа негізделген құрылыс әдісі сызбада текше болған жағдайда, басқаша айтқанда, квадраттың пропорциялары мен оның қабырғаларының бағыты анықталған жағдайда алтыбұрышты бейнелеуді жеңілдетеді.

Квадратқа негізделген. Фигураны қарастырайық. 3.67. 5 - 2 көлденең бағытта квадратқа жазылған алтыбұрыш квадраттың қабырғасына тең, ал тік бағытта оның ұзындығынан аз.

Тік алтыбұрыш. Перспективада тік квадрат сызыңыз. Диагональдардың көлденең қабырғаларына параллель қиылысу арқылы түзу жүргіз. Алынған 5 - 2 кесіндісін төрт тең бөлікке бөліп, А және В нүктелері арқылы тік сызықтар жүргіземіз (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 нүктесі арқылы түзу сызық жүргізіңіз.

3 -ші әдіс: Циркуль көмегімен алтыбұрышты салыңыз

Біз шеңберге 1 нүктені белгілеп, оны бесбұрыштың төбелерінің бірі ретінде қабылдаймыз. Диаметрі D болатын шеңбер берілсін; оған тұрақты гептагонды жазу керек (65 -сурет). Біз шеңбердің тік диаметрін жеті тең бөлікке бөлеміз. Радиусы D шеңбердің диаметріне тең 7 нүктеден біз көлденең диаметрі F нүктесінде жалғасатын қиылысқа дейінгі доғаны сипаттаймыз. F нүктесі көпбұрыштың полюсі деп аталады.

Бұл бұрыштардың биссектрисалары мен сегменттерінің медианалық перпендикулярларын құру мүмкіндігіне негізделген, бұл көпбұрыштарды тұрғызу техникасына негізделген.

Бұл кестенің бірінші бағанында тұрақты жазылған көпбұрыштың қабырғаларының саны, ал екіншісінде - коэффициенттер көрсетілген. Берілген көпбұрыштың қабырғасының ұзындығы берілген шеңбердің радиусын осы көпбұрыштың қабырғаларының санына сәйкес келетін көбейту арқылы алынады.

Бұл видеосабақтың тақырыбы - «Тұрақты көпбұрыштарды құру». Біз тағы да кәдімгі көпбұрышты анықтаймыз, оны графикалық түрде бейнелейміз, содан кейін тағы да осындай фигураның айналасында сызылған және сызылған шеңберлердің центрлері сәйкес келетініне көз жеткіземіз. Сіз бұл полигонға әрқашан шеңбер жаза аласыз және айналасындағы шеңберді сипаттай аласыз. Алдыңғы сабақтар барысында біз көпбұрыштардың қасиеттерін сипаттаудың негізгі рөлін оның бұрыштарының биссектрисалары мен бүйірлеріне медианалық перпендикулярлар атқаратынын білдік.

4. Қажетті тұрақты ABC үшбұрышын алды. Мәселе шешілді. 3. Циркульдің бір аяғын шеңбердің еркін A1 нүктесіне қойып, екінші аяғын қолданып, сол шеңберге А2 нүктесін белгілеп, оны А1 нүктесіне қосыңыз. Біз алтыбұрыштың бірінші жағын аламыз. 3. О нүктесінен түсірілген көпбұрыштың бүйірлеріне орта перпендикулярларды қолдана отырып, біз оның барлық қабырғалары мен оған іргелес төбелері арасындағы қоршалған шеңбердің барлық доғаларын екіге бөлеміз.

Геометриялық құрылыс - жаттығудың маңызды бөліктерінің бірі. Ине сызықты сызып өтуі керек. Компас неғұрлым дәл орнатылса, соғұрлым конструкция дәл болады. Шеңберді қиып өтетін басқа доға салыңыз. Доғалардың қиылысуының барлық алты нүктесін бастапқыда салынған шеңбермен дәйекті түрде қосыңыз. Бұл жағдайда алтыбұрыш қате болып шығуы мүмкін.

IV, V және VI нүктелерден / - // - /// шыңдарын алу үшін шеңбермен қиылысатын жерге көлденең сызықтар жүргізіңіз.

Біз табылған шыңдарды бір -бірімен тізбектей қосамыз. Гептагонды F полюсінен сәулелер салу арқылы және тік диаметрдің тақ бөлімдері арқылы құруға болады. Екі шеңбердің центрлері сәйкес келеді (1 -суреттегі О нүктесі). Суретте сонымен қатар (R) және сызылған (r) шеңберлердің радиустары көрсетілген.

Алтыбұрыштың құрылысы оның қабырғасы шеңбер сызылған радиуста тең екендігіне негізделген. Бұл сабақта біз циркуль мен сызғышты қолдана отырып, тұрақты көпбұрыштарды құру жолдарын қарастырамыз. Екінші әдіс, егер сіз шеңберге сызылған алтыбұрышты тұрғызып, содан кейін оның төбелерін бір арқылы қоссаңыз, сіз тең қабырғалы үшбұрышқа ие боласыз. Берілген әдіс кез келген санды көпбұрыштарды тұрғызуға жарамды.

Алтыбұрышты торлар (алтыбұрышты торлар) кейбір ойындарда қолданылады, бірақ олар тікбұрышты торлар сияқты қарапайым және кең таралған емес. Мен 20 жылға жуық уақыт бойы он алтылық тораптардағы ресурстарды жинадым және мен бұл нұсқаулықты ең қарапайым кодтағы ең талғампаз тәсілдерге жаздым. Бұл мақалада көбінесе Чарльз Фу мен Кларк Вербрюгг оқулықтары пайдаланылады. Мен алтыбұрыш торларын құрудың әр түрлі әдістерін, олардың байланысын, сондай -ақ ең жалпы алгоритмдерді сипаттаймын. Бұл мақаланың көптеген бөліктері интерактивті: тор түрін таңдау сәйкес схемаларды, кодты және мәтіндерді өзгертеді. (Шамамен. Жолақ: бұл тек түпнұсқаға қатысты, мен оны зерттеуге кеңес беремін. Аудармада түпнұсқаның барлық ақпараты сақталады, бірақ интерактивтіліксіз.).

Бұл мақаладағы код мысалдары псевдокодта жазылған, сондықтан сіздің жеке іске асыруды жазу үшін оларды оқуға және түсінуге оңай.

Геометрия

Алтыбұрыштар - алтыбұрышты көпбұрыштар. Кәдімгі алтыбұрыштардың барлық қабырғалары (беттері) бірдей ұзындыққа ие. Біз тек тұрақты алтыбұрыштармен жұмыс жасаймыз. Әдетте, он алтылық торларда көлденең (үстіңгі жағы жоғары) және тік (жазық үстіңгі) бағыттар қолданылады.


Тегіс (сол жақ) және үшкір (оң жақ) жоғарғы алтыбұрыштар

Алтыбұрыштардың 6 беті бар. Әр бет екі бұрышты алтыбұрышқа ортақ. Алтыбұрыштардың 6 бұрыштық нүктелері бар. Әрбір бұрыштық нүкте үшбұрышпен бөлінеді. Сіз торлар (квадраттар, алтыбұрыштар және үшбұрыштар) туралы мақаладан орталықтар, шеттер мен бұрыштар туралы көбірек біле аласыз.

Бұрыштар

Кәдімгі алтыбұрышта ішкі бұрыштар 120 °. Алты «сына» бар, олардың әрқайсысы 60 ° ішкі бұрыштары бар тең қабырғалы үшбұрыш. Бұрыш нүктесі мен(60 ° * i) + 30 ° қашықтықта орналасқан, өлшем бірліктері орталықтан. Кодта:

Hex_corner функциясы (центр, өлшем, i): var angle_deg = 60 * i + 30 var angle_rad = PI / 180 * бұрыш_дег қайтару нүктесі (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 * биіктігі. Көршілес алтыбұрыштар арасындағы көлденең қашықтық горизонт = ені.

Кейбір ойындарда алтыбұрыштар үшін пиксель өнері қолданылады, ол кәдімгі алтыбұрыштарға сәйкес келмейді. Бұл бөлімде сипатталған бұрыш пен позиция формулалары бұл алтыбұрыштардың өлшемдеріне сәйкес келмейді. Он алтылық тордың алгоритмдерін сипаттайтын мақаланың қалған бөлігі алтыбұрыштар сәл созылған немесе қысылған болса да қолданылады.



Координаталық жүйелер

Алтыбұрыштарды торға жинай бастайық. Квадраттардың торлары жағдайында жинаудың бір ғана айқын әдісі бар. Алтыбұрыштар үшін көптеген тәсілдер бар. Мен текше ретінде координаттарды пайдалануды ұсынамын. Карталарды сақтау және пайдаланушыға координаттарды көрсету үшін осьтік координаталар немесе офсеттік координаттар қолданылуы керек.

Координаталар

Ең кең тараған әдіс - әрбір келесі бағанды ​​немесе жолды ауыстыру. Бағандар col немесе q белгіленеді. Жолдар r немесе r деп белгіленеді. Тақ немесе жұп бағандар / жолдар ығысуы мүмкін, сондықтан көлденең және тік алтыбұрыштардың екі нұсқасы бар.


Odd-r көлденең орналасуы


Көлденең орналасуы


Тақ-q тік орналасуы


Жұп-q тік орналасуы

Кубтық координаттар

Алтыбұрыштардың торларын қараудың тағы бір әдісі - олардан көру үшнегізгі осьтер емес екіквадраттар торындағыдай. Олар талғампаз симметрияны көрсетеді.

Текшелер торын алыңыз және кесіп алудиагональ жазықтығы x + y + z = 0. Бұл біртүрлі идея, бірақ бұл бізге алтыбұрышты тордың алгоритмдерін жеңілдетуге көмектеседі. Атап айтқанда, біз декарттық координаттардан стандартты амалдарды қолдана аламыз: координаталарды қосу мен азайту, скалярға көбейту мен бөлу және қашықтықтар.

Текшелер торындағы үш негізгі оське және олардың алтыға қатынасына назар аударыңыз. қиғашалтыбұрыш торының бағыттары. Тордың диагональ осьтері он алтылық тордың негізгі бағытына сәйкес келеді.


Алтыбұрыштар


Куба

Бізде квадраттар мен текшелердің торларының алгоритмдері бар болғандықтан, текше координаттарын қолдану бұл алгоритмдерді алтыбұрыш торларына бейімдеуге мүмкіндік береді. Мен бұл жүйені мақаладағы алгоритмдердің көпшілігі үшін қолданамын. Басқа координат жүйесі бар алгоритмдерді қолдану үшін мен текше координаттарын түрлендіремін, алгоритмді іске қосамын, содан кейін оларды қайта түрлендіремін.

Алтыбұрыштар торында текше координаттары қалай жұмыс жасайтынын біліңіз. Алтыбұрыштарды таңдағанда, үш оське сәйкес келетін текше координаттары ерекшеленеді.

  1. Текшелер торының әр бағыты сәйкес келеді сызықтаралтыбұрыштар торында. Байланысты көру үшін z, 0, 1, 2, 3 тең алтыбұрышты таңдауға тырысыңыз. Сызық көк түспен белгіленген. X (жасыл) және у (күлгін) үшін бірдей әрекетті орындап көріңіз.
  2. Он алтылық тордың бағыты екі текше торының бағыттарының бірігуі болып табылады. Мысалы, он алтылық тордың солтүстігі + у мен -z аралығында, сондықтан солтүстіктің әр қадамы уды 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 , z)
Есептеу координаттары өте қиын:

Көршілес алтыбұрыштар

Бір алтыбұрышты ескере отырып, ол қандай алтыбұрышқа іргелес? Сіз күткендей, жауап текше координаттарында оңай, осьтік координаттарда өте қарапайым және ығысу координаттарында сәл күрделі. Сізге алты «диагональды» алтыбұрышты есептеу қажет болуы мүмкін.

Кубтық координаттар

Алтыбұрыштардың координатасындағы бір кеңістікті жылжыту үш текше координатаның бірін +1 -ге, екіншісін -1 -ге өзгертеді (қосынды 0 -ге тең болуы керек). Мүмкін болатын үш координатты +1 -ге өзгертуге болады, ал қалған екеуін -1 -ге өзгертуге болады. Бұл бізге мүмкін болатын алты өзгерісті береді. Әрқайсысы алтыбұрыштың бағыттарының біріне сәйкес келеді. Ең қарапайым және жылдам әдіс-өзгерістерді алдын ала есептеу және оларды Cube (dx, dy, dz) кестесіне компиляция кезінде орналастыру:

Әр түрлі бағыттар = [Текше (+1, -1, 0), Текше (+1, 0, -1), Текше (0, +1, -1), Текше (-1, +1, 0), Текше ( -1, 0, +1), Cube (0, -1, +1)] функциясы cube_direction (бағыт): бағыттарды қайтару cube_neighbor функциясы (он алтылық, бағыт): cube_add қайтару (он алтылық, текше бағыт) (бағыт))

Осьтік координаттар

Бұрынғыдай біз текше жүйесінен бастаймыз. Cube кестесін алыңыз (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 (он алтылық, бағыт): var dir = hex_direction (бағыт) қайтару Hex (hex.q + dir.q, hex.r + dir.r)

Координаталар

Осьтік координаттарда біз торда тұрған жерімізге байланысты өзгерістер енгіземіз. Егер біз бағанның / жолдың ығысуында болсақ, онда ереже бағанның / жолдың офсеттік жағдайынан ерекшеленеді.

Бұрынғыдай, біз баған мен жолға қосу үшін сандар кестесін құрамыз. Алайда, бұл жолы бізде екі массив болады, олардың біреуі тақ тақталар / жолдар үшін, екіншісі жұптар үшін. Жоғарыдағы кесте картасындағы (1,1) қараңыз және алты бағыттың әрқайсысы бойынша жылжытқанда бағандар мен жолдар қалай өзгеретінін байқаңыз. Енді біз процесті қайталаймыз (2,2). Кестелер мен код жылжу торларының төрт түрінің әрқайсысы үшін әр түрлі болады, мұнда тордың әр түріне сәйкес код берілген.

Odd-r
var бағыттары = [[Он алтылық (+1, 0), он алтылық (0, -1), он алтылық (-1, -1), он алтылық (-1, 0), он алтылық (-1, +1), он алтылық (0) , +1)], [Он алтылық (+1, 0), он алтылық (+1, -1), он алтылық (0, -1), он алтылық (-1, 0), он алтылық (0, +1), он алтылық ( +1, +1)]] функциясы ofset_neighbor (он алтылық, бағыт): var parity = hex.row & 1 var dir = бағыттар Hex (hex.col + dir.col, hex.row + dir.row) қайтару


Тіпті-r
var бағыттары = [[Он алтылық (+1, 0), он алтылық (+1, -1), он алтылық (0, -1), он алтылық (-1, 0), он алтылық (0, +1), он алтылық (+1) , +1)], [Он алтылық (+1, 0), он алтылық (0, -1), он алтылық (-1, -1), он алтылық (-1, 0), он алтылық (-1, +1), он алтылық (0, +1)]] функциясы ofset_neighbor (он алтылық, бағыт): var parity = hex.row & 1 var dir = бағыттар Hex (hex.col + dir.col, hex.row + dir.row) қайтару


Жұп (EVEN) және тақ (ODD) жолдар үшін тор

Тақ-q
var бағыттары = [[Он алтылық (+1, 0), он алтылық (+1, -1), он алтылық (0, -1), он алтылық (-1, -1), он алтылық (-1, 0), он алтылық (0) , +1)], [Он алтылық (+1, +1), он алтылық (+1, 0), он алтылық (0, -1), он алтылық (-1, 0), он алтылық (-1, +1), он алтылық (0, +1)]] функциясы ofset_neighbor (он алтылық, бағыт): var parity = hex.col & 1 var dir = бағыттар Hex (hex.col + dir.col, hex.row + dir.row) қайтару


Жұп-q
var бағыттары = [[Он алтылық (+1, +1), он алтылық (+1, 0), он алтылық (0, -1), он алтылық (-1, 0), он алтылық (-1, +1), он алтылық (0) , +1)], [Он алтылық (+1, 0), он алтылық (+1, -1), он алтылық (0, -1), он алтылық (-1, -1), он алтылық (-1, 0), он алтылық (0, +1)]] функциясы ofset_neighbor (он алтылық, бағыт): 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 ), Cube (-1, -1, +2), Cube (+1, -2, +1)] функциясы cube_diagonal_neighbor (он алтылық, бағыт): cube_add (он алтылық, диагональ) қайтару
Бұрынғыдай, біз үш координатаның бірін алып тастай отырып, осьтік координаттарды түрлендіре аламыз немесе нәтижелерді есептегеннен кейін офсеттік координаттарға түрлендіре аламыз.


Қашықтықтар

Кубтық координаттар

Кубтық координаттар жүйесінде әрбір алтыбұрыш үш өлшемді текше болып табылады. Көршілес алтыбұрыштар он алтылық торда 1, ал текше торда 2 болады. Бұл қашықтықты есептеуді жеңілдетеді. Квадраттар торында Манхэттеннің арақашықтығы abs (dx) + abs (dy). Текшелер торында Манхэттеннің арақашықтығы abs (dx) + abs (dy) + abs (dz). Алтыбұрыштар торындағы қашықтық олардың жартысына тең:

Функция cube_distance (a, b): қайтару (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): қайтару (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 нүктелерін біркелкі таңдаймыз. Сызықтық интерполяцияны қолдана отырып, i мәндерінің 0 -ден N -ге дейінгі мәндері үшін, оның ішінде әрбір нүкте A + (B - A) * 1.0 / N * болатынын анықтаймыз. мен Суретте бұл бақылау нүктелері көк түспен көрсетілген. Нәтиже - өзгермелі нүкте координаттары.
  3. Әрбір басқару нүктесін (қалқымалы) алтыбұрышқа (int) айналдырыңыз. Алгоритм cube_round деп аталады (төменде қараңыз).
А -дан В -ге дейін сызық салу үшін бәрін біріктіріңіз:

Lerp (a, b, t): // өзгермелі қайтару үшін a + (b - a) * t функциясы cube_lerp (a, b, t): // алтыбұрыштар үшін Cube (lerp (ax, bx, t), lerp (ay, by, t), lerp (az, bz, t)) функциясы cube_linedraw (a, b): var N = cube_distance (a, b) var results = әрбір 0 ≤ i ≤ N үшін: нәтижелер.қосылу ( cube_round (cube_lerp (a, b, 1.0 / N * i))) нәтижелерді қайтарады
Ескертулер:

  • Кейде cube_lerp нүктені екі алтыбұрыштың арасындағы шетінде қайтарады. Содан кейін cube_round оны бір жаққа немесе екіншісіне ауыстырады. Сызықтар бір бағытта қозғалғанда жақсы көрінеді. Мұны циклды бастамас бұрын соңғы нүктелердің біріне немесе екеуіне де эпсилонды он алтылық текшені (1е-6, 1е-6, -2е-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 аламыз. Кодта бұл кірістірілген цикл болады:

Var нәтижелері = әрқайсысы үшін -N ≤ dx ≤ N: әр -N ≤ dy ≤ N: әр -N ≤ dz ≤ N үшін: егер dx + dy + dz = 0 болса: нәтижелер.қосылады (cube_add (орта, текше (dx) , dy, dz)))
Бұл цикл жұмыс істейді, бірақ ол тиімсіз болады. Біз циклде қайталайтын барлық dz мәндерінің тек біреуі dx + dy + dz = 0 текше шарттарын қанағаттандырады. Оның орнына, біз шартты қанағаттандыратын dz мәнін тікелей есептейміз:

Var нәтижелері = әрқайсысы үшін -N ≤ dx ≤ N: әр максимум үшін (-N, -dx -N) ≤ dy ≤ min (N, -dx + N): var dz = -dx -dy нәтижелері.append (cube_add ( орталығы, текше (dx, dy, dz)))
Бұл цикл тек қажетті координаттар бойымен жүреді. Суретте әр диапазон жұп сызықтардан тұрады. Әр жол теңсіздік болып табылады. Біз алты теңсіздікті қанағаттандыратын барлық алтыбұрыштарды аламыз.

GIF


Бір -біріне сәйкес келетін диапазондар

Егер сізге бірнеше ауқымдағы алтыбұрыштарды табу қажет болса, алтыбұрыштардың тізімін жасамас бұрын ауқымдарды айналып өтуге болады.

Сіз бұл мәселеге алгебра немесе геометрия тұрғысынан қарай аласыз. Алгебралық түрде әр аймақ -N ≤ dx ≤ N түрінде теңсіздік шарттары ретінде өрнектеледі және бізге осы шарттардың қиылысуын табу керек. Геометриялық тұрғыдан алғанда, әр аймақ-бұл үш өлшемді кеңістіктегі текше, ал біз үш өлшемді кеңістікте төртбұрышты параллелепипед алу үшін екі текшені қиып аламыз. Содан кейін біз оны алтыбұрыштарды алу үшін x + y + z = 0 жазықтығына проекциялаймыз. Мен бұл мәселені алгебралық түрде шешемін.

Алдымен -N ≤ dx ≤ N шартын x min ≤ x ≤ x max формасында қайта жазамыз және x min = center.x - N және x max = center.x + N қабылдаймыз. Y және z үшін де осылай жасайық, нәтижесінде алдыңғы бөлімдегі кодтың жалпы көрінісі пайда болады:

Var нәтижелері = әрбір xmin үшін ≤ x ≤ xmax: әр максимум үшін (ymin, -x -zmax) ≤ y ≤ min (ymax, -x -zmin): var z = -xy нәтижелері.append (Cube (x, y, z))
A ≤ x ≤ b және c ≤ x ≤ d екі диапазонының қиылысуы max (a, c) ≤ x ≤ min (b, d) болады. Алтыбұрыштардың ауданы x, y, z асатын диапазондар түрінде көрсетілгендіктен, біз x, y, z диапазондарының әрқайсысын жеке қиып аламыз, содан кейін қиылысындағы алтыбұрыштардың тізімін жасау үшін кірістірілген циклды қолдана аламыз. Алтыбұрыштардың бір ауданы үшін x мин = H.x - N және x max = H.x + N қабылдаймыз, сол сияқты у мен z үшін. Алтыбұрыштардың екі аймағының қиылысы үшін x мин = максимумды (H1.x - N, H2.x - N) және x max = min (H1.x + N, H2.x + N) аламыз, сол сияқты у үшін. және z. Сол үлгі үш немесе одан да көп аймақтардың қиылысында жұмыс істейді.

GIF


Кедергілер

Егер кедергілер болса, шектеулі қашықтықты толтыру оңай (бірінші іздеудің кеңдігі). Төмендегі суретте біз төрт қозғалыспен шектелеміз. Кодта [k] жиектері k қадаммен жетуге болатын барлық алтыбұрыштардың жиыны болып табылады. Негізгі циклдан өткен сайын біз k-1 деңгейін k деңгейіне дейін кеңейтеміз.

Cube_reachable функциясы (бастау, қозғалыс): var visit = set () кіргенге start қосу 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 орнын С орталығының айналасында айналдырудың толық тізбегі, нәтижесінде жаңа R позициясы пайда болады:

  1. P және C позицияларын текше координаталарына түрлендіріңіз.
  2. Центрді шегеру арқылы векторды есептеңіз: P_from_C = P - C = Cube (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 текше позициясын керекті координат жүйесіне қайта айналдырыңыз.
Түрлендірудің бірнеше кезеңдері бар, бірақ олардың әрқайсысы өте қарапайым. Айналуды ось координаттарында тікелей анықтау арқылы осы қадамдардың кейбірін қысқартуға болады, бірақ он алтылық векторлар офсеттік координаттармен жұмыс істемейді, мен офсеттік координаттарға қадамдарды қалай қысқартуға болатынын білмеймін. Айналымды есептеудің басқа әдістері туралы stackexchange талқылауын қараңыз.

Сақиналар

Қарапайым сақина

Берілген алтыбұрыштың берілген радиустағы сақинаға жататынын білу үшін осы алтыбұрыштан центрге дейінгі қашықтықты есептеп, оның радиусқа тең екенін білу керек. Барлық алтыбұрыштардың тізімін алу үшін ортасынан радиустық қадамдар жасаңыз, содан кейін сақина бойындағы жол бойымен бұрылған векторларды орындаңыз.

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 results = әрбір 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 градус.

Саған не қажет

  • Қағаз
  • Қарындаш
  • Сызғыш
  • Компас жұбы
  • Компас инесі сырғып кетпеуі үшін қағаз астына бірдеңе қоюға болады.
  • Өшіргіш

Жабық