Как нарисовать ровный 6 угольник. Построение правильных многоугольников, описанных около окружности. Периметр и площадь

Сетки из шестиугольников (гексагональные сетки) используются в некоторых играх, но они не так просты и распространены, как сетки прямоугольников. Я коллекционирую ресурсы о сетках шестиугольников уже почти 20 лет, и написал это руководство по самым элегантным подходам, реализуемым в простейшем коде. В статье часто используются руководства Чарльза Фу (Charles Fu) и Кларка Вербрюгге (Clark Verbrugge). Я опишу различные способы создания сеток шестиугольников, их взаимосвязь, а также самые общие алгоритмы. Многие части этой статьи интерактивны: выбор типа сетки изменяет соответствующие схемы, код и тексты. (Прим. пер.: это относится только к оригиналу, советую его изучить. В переводе вся информация оригинала сохранена, но без интерактивности.) .

Примеры кода в статье написаны псевдокодом, так их легче читать и понимать, чтобы написать свою реализацию.

Геометрия

Шестиугольники - это шестигранные многоугольники. У правильных шестиугольников все стороны (грани) имеют одинаковую длину. Мы будем работать только с правильными шестиугольниками. Обычно в сетках шестиугольников используются горизонтальная (с острым верхом) и вертикальная (с плоским верхом) ориентации.


Шестиугольники с плоским (слева) и острым (справа) верхом

У шестиугольников по 6 граней. Каждая грань общая для двух шестиугольников. У шестиугольников по 6 угловых точек. Каждая угловая точка общая для трёх шестиугольников. Подробнее о центрах, гранях и угловых точках можно прочитать в моей статье о частях сеток (квадратах, шестиугольниках и треугольниках).

Углы

В правильном шестиугольнике внутренние углы равны 120°. Есть шесть «клиньев», каждый из которых является равносторонним треугольником с внутренними углами 60°. Угловая точка i находится на расстоянии (60° * i) + 30° , на size единиц от центра center . В коде:

Function hex_corner(center, size, i): var angle_deg = 60 * i + 30 var angle_rad = PI / 180 * angle_deg return Point(center.x + size * cos(angle_rad), center.y + size * sin(angle_rad))
Для заполнения шестиугольника нужно получить вершины многоугольника с hex_corner(…, 0) по hex_corner(…, 5) . Для отрисовки контура шестиугольника нужно использовать эти вершины, а затем нарисовать линию снова в hex_corner(…, 0) .

Разница между двумя ориентациями в том, что x и y меняются местами, что приводит к изменению углов: углы шестиугольников с плоским верхом равны 0°, 60°, 120°, 180°, 240°, 300°, а с острым верхом - 30°, 90°, 150°, 210°, 270°, 330°.


Углы шестиугольников с плоским и острым верхом

Размер и расположение

Теперь мы хотим расположить несколько шестиугольников вместе. В горизонтальной ориентации высота шестиугольника height = size * 2 . Вертикальное расстояние между соседними шестиугольниками vert = height * 3/4 .

Ширина шестиугольника width = sqrt(3)/2 * height . Горизонтальное расстояние между соседними шестиугольниками horiz = width .

В некоторых играх для шестиугольников используется пиксель-арт, который не точно соответствует правильным шестиугольникам. Формулы углов и расположений, описанные в этом разделе, не будут совпадать с размерами таких шестиугольников. Остальная часть статьи, описывающая алгоритмы сеток шестиугольников, применима даже если шестиугольники немного растянуты или сжаты.



Системы координат

Давайте приступим к сборке шестиугольников в сетку. В случае сеток квадратов существует только один очевидный способ сборки. Для шестиугольников же есть множество подходов. Я рекомендую использовать в качестве первичного представления кубические координаты. Осевые координаты или координаты смещений следует использовать для хранения карт и отображения координат для пользователя.

Координаты смещений

Наиболее частый подход - смещение каждого последующего столбца или строки. Столбцы обозначаются col или q . Строки обозначаются row или r . Можно смещать нечётные или чётные столбцы/строки, поэтому у горизонтальных и вертикальных шестиугольников есть по два варианта.


Горизонтальное расположение «нечет-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
В коде эти две функции могут быть записаны следующим образом:

Function cube_to_hex(h): # осевая var q = h.x var r = h.z return Hex(q, r) function hex_to_cube(h): # кубическая var x = h.q var z = h.r var y = -x-z return Cube(x, y, z)
Координаты смещения совсем немного сложнее:

Соседние шестиугольники

Дан один шестиугольник, с какими шестью шестиугольниками он находится рядом? Как и можно ожидать, легче всего дать ответ в кубических координатах, довольно просто в осевых координатах, и немного сложнее в координатах смещения. Также может потребоваться рассчитать шесть «диагональных» шестиугольников.

Кубические координаты

Перемещение на одно пространство в координатах шестиугольников приводит к изменению одной из трёх кубических координат на +1 и другой на -1 (сумма должна оставаться равной 0). На +1 могут изменяться три возможных координаты, а на -1 - оставшиеся две. Это даёт нам шесть возможных изменений. Каждое соответствует одному из направлений шестиугольника. Простейший и быстрейший способ - предварительно вычислить изменения и поместить их в таблицу кубических координат Cube(dx, dy, dz) во время компиляции:

Var directions = [ Cube(+1, -1, 0), Cube(+1, 0, -1), Cube(0, +1, -1), Cube(-1, +1, 0), Cube(-1, 0, +1), Cube(0, -1, +1) ] function cube_direction(direction): return directions function cube_neighbor(hex, direction): return cube_add(hex, cube_direction(direction))

Осевые координаты

Как и раньше, мы используем для начала кубическую систему. Возьмём таблицу Cube(dx, dy, dz) и преобразуем в таблицу Hex(dq, dr) :

Var directions = [ Hex(+1, 0), Hex(+1, -1), Hex(0, -1), Hex(-1, 0), Hex(-1, +1), Hex(0, +1) ] function hex_direction(direction): return directions function hex_neighbor(hex, direction): var dir = hex_direction(direction) return Hex(hex.q + dir.q, hex.r + dir.r)

Координаты смещения

В осевых координатах мы вносим изменения в зависимости от того, в каком месте сетки находимся. Если мы в столбце/строке смещения, то правило отличается от случая столбца/строки без смещения.

Как и раньше, мы создаём таблицу чисел, которые нужно прибавить к col and row . Однако на этот раз у нас будет два массива, один для нечётных столбцов/строк, а другой - для чётных. Посмотрите на (1,1) на рисунке карты сетки выше и заметьте, как меняются col и row меняются при перемещении в каждом из шести направлений. Теперь повторим процесс для (2,2) . Таблицы и код будут разными для каждого из четырёх типов сеток смещений, приводим соответствующий код для каждого типа сетки.

Нечет-r
var directions = [ [ 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) ] ] function offset_neighbor(hex, direction): var parity = hex.row & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Чёт-r
var directions = [ [ 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) ] ] function offset_neighbor(hex, direction): var parity = hex.row & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Сетка для чётной (EVEN) и нечётной (ODD) строк

Нечет-q
var directions = [ [ 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) ] ] function offset_neighbor(hex, direction): var parity = hex.col & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Чёт-q
var directions = [ [ 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) ] ] function offset_neighbor(hex, direction): var parity = hex.col & 1 var dir = directions return Hex(hex.col + dir.col, hex.row + dir.row)


Сетка для чётного (EVEN) и нечётного (ODD) столбцов

Диагонали

Перемещение в «диагональном» пространстве в координатах шестиугольников изменяет одну из трёх кубических координат на ±2 и две другие на ∓1 (сумма должна оставаться равной 0).

Var diagonals = [ Cube(+2, -1, -1), Cube(+1, +1, -2), Cube(-1, +2, -1), Cube(-2, +1, +1), Cube(-1, -1, +2), Cube(+1, -2, +1) ] function cube_diagonal_neighbor(hex, direction): return cube_add(hex, diagonals)
Как и раньше, мы можем преобразовать эти координаты в осевые, откинув одну из трёх координат, или преобразовать в координаты смещения, предварительно вычислив результаты.


Расстояния

Кубические координаты

В кубической системе координат каждый шестиугольник является кубом в трёхмерном пространстве. Соседние шестиугольники находятся в сетке шестиугольников на расстоянии 1 друг от друга, но на расстоянии 2 в сетке кубов. Это делает расчёт расстояний простым. В сетке квадратов манхэттенские расстояния равны abs(dx) + abs(dy) . В сетке кубов манхэттенские расстояния равны abs(dx) + abs(dy) + abs(dz) . Расстояние в сетке шестиугольников равно их половине:

Function cube_distance(a, b): return (abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z)) / 2
Эквивалентом этой записи будет выражение того, что одна из трёх координат должна быть суммой двух других, а затем получение её в качестве расстояния. Можно выбрать форму деления пополам или форму максимального значения, приведённую ниже, но они дают одинаковый результат:

Function cube_distance(a, b): return max(abs(a.x - b.x), abs(a.y - b.y), abs(a.z - b.z))
На рисунке максимальные значения выделены цветом. Заметьте также, что каждый цвет обозначает одно из шести «диагональных» направлений.

GIF


Осевые координаты

В осевой системе третья координата выражена неявно. Давайте преобразуем из осевой в кубическую систему для расчёта расстояния:

Function hex_distance(a, b): var ac = hex_to_cube(a) var bc = hex_to_cube(b) return cube_distance(ac, bc)
Если компилятор в вашем случае встраивает (inline) hex_to_cube и cube_distance , то он сгенерирует такой код:

Function 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 . Все они аналогичны, если увидеть связь с кубическими координатами.

Координаты смещения

Как и в случае с осевыми координатами, мы преобразуем координаты смещения в кубические координаты, а затем используем расстояние кубической системы.

Function offset_distance(a, b): var ac = offset_to_cube(a) var bc = offset_to_cube(b) return cube_distance(ac, bc)
Мы будем использовать тот же шаблон для многих алгоритмов: преобразуем из шестиугольников в кубы, выполняем кубическую версию алгоритма и преобразуем кубические результаты в координаты шестиугольников (осевые или координаты смещения).

Отрисовка линий

Как нарисовать линию от одного шестиугольника до другого? Я использую линейную интерполяцию для рисования линий . Линия равномерно сэмплируется в N+1 точках и вычисляется, в каких шестиугольниках находятся эти сэмплы.

GIF


  1. Сначала мы вычисляем N , которое будет расстоянием в шестиугольниках между конечными точками.
  2. Затем равномерно сэмплируем N+1 точек между точками A и B. С помощью линейной интерполяции определяем, что для значений i от 0 до N , включая их, каждая точка будет A + (B - A) * 1.0/N * i . На рисунке эти контрольные точки показаны синим. В результате получаются координаты с плавающей запятой.
  3. Преобразуем каждую контрольную точку (float) обратно в шестиугольники (int). Алгоритм называется cube_round (см. ниже).
Соединяем всё вместе для отрисовки линии от A до B:

Function lerp(a, b, t): // для float return a + (b - a) * t function cube_lerp(a, b, t): // для шестиугольников return Cube(lerp(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)) function cube_linedraw(a, b): var N = cube_distance(a, b) var results = for each 0 ≤ i ≤ N: results.append(cube_round(cube_lerp(a, b, 1.0/N * i))) return results
Примечания:

  • Бывают случаи, когда cube_lerp возвращает точку, находящуюся точно на грани между двумя шестиугольниками. Затем cube_round сдвигает её в ту или иную сторону. Линии выглядят лучше, если их сдвигают в одном направлении. Это можно сделать, добавив «эпсилон»-шестиугольный Cube(1e-6, 1e-6, -2e-6) к одной или обеим конечным точкам перед началом цикла. Это «подтолкнёт» линию в одном направлении, чтобы она не попадала на границы граней.
  • Алгоритм DDA-линии в сетках квадратов приравнивает N к максимуму расстояния по каждой из осей. Мы делаем то же самое в кубическом пространстве, что аналогично расстоянию в сетке шестиугольников.
  • Функция cube_lerp должна возвращать куб с координатами в float. Если вы программируете на языке со статической типизацией, то не сможете использовать тип Cube . Вместо него можно определить тип FloatCube или встроить (inline) функцию в код отрисовки линий, если вы не хотите определять ещё один тип.
  • Можно оптимизировать код, встроив (inline) cube_lerp , а затем рассчитав B.x-A.x , B.x-A.y и 1.0/N за пределами цикла. Умножение можно преобразовать в повторяющееся суммирование. В результате получится что-то вроде алгоритма DDA-линии.
  • Для отрисовки линий я использую осевые или кубические координаты, но если вы хотите работать с координатами смещения, то изучите .
  • Существует много вариантов отрисовки линий. Иногда требуется «сверхпокрытие» . Мне прислали код отрисовки линий с сверхпокрытием в шестиугольниках, но я пока не изучал его.

Диапазон перемещения

Диапазон координат

Для заданного центра шестиугольника и диапазона N какие шестиугольники находятся в пределах N шагов от него?

Мы можем произвести обратную работу из формулы расстояния между шестиугольниками distance = 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 results = for each -N ≤ dx ≤ N: for each -N ≤ dy ≤ N: for each -N ≤ dz ≤ N: if dx + dy + dz = 0: results.append(cube_add(center, Cube(dx, dy, dz)))
Этот цикл сработает, но будет довольно неэффективным. Из всех значений dz , которые мы перебираем в цикле, только одно действительно удовлетворяет условию кубов dx + dy + dz = 0 . Вместо этого мы напрямую вычислим значение dz , удовлетворяющее условию:

Var results = for each -N ≤ dx ≤ N: for each max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy results.append(cube_add(center, Cube(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 results = for each xmin ≤ x ≤ xmax: for each max(ymin, -x-zmax) ≤ y ≤ min(ymax, -x-zmin): var z = -x-y results.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 min = H.x - N and 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 и z . Тот же шаблон работает для пересечения трёх или более областей.

GIF


Препятствия

При наличии препятствий проще всего выполнить заливку с ограничением по расстоянию (поиск в ширину). На рисунке ниже мы ограничиваемся четырьмя ходами. В коде fringes[k] - это массив всех шестиугольников, которых можно достичь за k шагов. При каждом проходе по основному циклу мы расширяем уровень k-1 на уровень k .

Function cube_reachable(start, movement): var visited = set() add start to visited var fringes = fringes.append() for each 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] to [-z, -x, -y]
Поворот на 60° влево сдвигает каждую координату на одну позицию влево:

[ x, y, z] to [-y, -z, -x]



«Поиграв» [в оригинале статьи] со схемой, можно заметить, что каждый поворот на 60° меняет знаки и физически «поворачивает» координаты. После поворота на 120° знаки снова становятся теми же. Поворот на 180° меняет знаки, но координаты поворачиваются в своё изначальное положение.

Вот полная последовательность поворота положения P вокруг центрального положения C, приводящего к новому положению 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.

Кольца

Простое кольцо

Чтобы выяснить, принадлежит ли заданный шестиугольник к кольцу заданного радиуса radius , нужно вычислить расстояние от этого шестиугольника до центра, и узнать, равно ли оно radius . Для получения списка всех таких шестиугольников нужно сделать radius шагов от центра, а затем следовать за поворачиваемыми векторами по пути вдоль кольца.

Function cube_ring(center, radius): var results = # этот код не работает для radius == 0; вы понимаете, почему? var cube = cube_add(center, cube_scale(cube_direction(4), radius)) for each 0 ≤ i < 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
В этом коде cube начинается на кольце, показанном большой стрелкой от центра к углу схемы. Я выбрал для начала угол 4, потому что он соответствует пути, в котором двигаются мои числа направлений. Вам может понадобиться другой начальный угол. На каждом этапе внутреннего цикла cube двигается на один шестиугольник по кольцу. Через 6 * radius шагов он завершает там, где начал.


Спиральные кольца

Проходя по кольцам по спиральному паттерну, мы можем заполнить внутренние части колец:

Function cube_spiral(center, radius): var results = for each 1 ≤ k ≤ radius: results = results + cube_ring(center, k) return results



Площадь большого шестиугольника равна сумме всех окружностей плюс 1 для центра. Для вычисления площади используйте эту формулу .

Обход шестиугольников таким способом можно также использовать для вычисления диапазона перемещения (см. выше).

Область видимости

Что видимо из заданного положения с заданным расстоянием, и не перекрывается препятствиями? Простейший способ определить это - нарисовать линию к каждому шестиугольнику в заданном диапазоне. Если линия не встречается со стенами, то вы видите шестиугольник. Перемещайте мышь по шестиугольникам [на схеме в оригинале статьи], чтобы увидеть отрисовку линий к этим шестиугольникам и стены, с которыми линии встречаются.

Этот алгоритм может быть медленным на больших площадях, но его легко реализовать, поэтому рекомендую начать с него.

GIF



Существует много разных определений видимости. Хотите ли вы видеть центр другого шестиугольника из центра начального? Хотите ли вы видеть любую часть другого шестиугольника из центра начального? Может быть, любую часть другого шестиугольника из любой точки начального? Мешающие взгляду препятствия меньше полного шестиугольника? Область видимости - это более хитрое и разнообразное понятие, чем кажется на первый взгляд. Начнём с простейшего алгоритма, но ждите, что он обязательно правильно вычислит ответ в вашем проекте. Бывают даже случаи, когда простой алгоритм даёт нелогичные результаты.

Я хочу в дальнейшем расширять это руководство. У меня есть

Содержимое:

Обычный шестиугольник, также называемый идеальным шестиугольником, имеет шесть равных сторон и шесть равных углов. Вы можете нарисовать шестиугольник при помощи рулетки и транспортира, грубый шестиугольник – при помощи круглого предмета и линейки или еще более грубый шестиугольник - при помощи только карандаша и немного интуиции. Если вы хотите знать, как нарисовать шестиугольник различными способами – просто читайте далее.

Шаги

1 Рисуем идеальный шестиугольник при помощи циркуля

  1. 1 При помощи циркуля рисуем круг. Вставьте карандаш в циркуль. Расширьте циркуль на желаемую ширину радиуса вашего круга. Радиус может быть от пары до десятка сантиметров шириной. Далее поставьте циркуль с карандашом на бумагу и нарисуйте круг.
    • Иногда легче сначала нарисовать пол круга, а затем вторую половину.
  2. 2 Передвиньте иглу циркуля к краю круга. Поставьте его на вершину круга. Не меняйте угол и расположение циркуля.
  3. 3 Сделайте небольшую отметку карандашом на краю круга. Сделайте ее отчетливой, но не слишком темной, так как позже вы ее сотрете. Не забудьте сохранять угол, который вы установили для циркуля.
  4. 4 Передвиньте иглу циркуля на ту отметку, которую вы только что сделали. Поставьте иглу прямо на отметку.
  5. 5 Сделайте еще одну отметку карандашом на краю круга. Таким образом, вы сделаете вторую отметку на определенной дистанции от первой отметки. Продолжайте двигаться в одном направлении.
  6. 6 Тем же способом сделайте еще четыре отметки. Вы должны вернуться назад на первоначальную отметку. Если нет, тогда, скорее всего, угол, под которым вы держали циркуль и делали отметки, изменился. Возможно, это случилось из-за того, что вы сжали его слишком сильно или наоборот, немного ослабили.
  7. 7 Соедините отметки при помощи линейки. Шесть мест, где ваши отметки пересекаются с краем круга, - это шесть вершин шестиугольника. При помощи линейки и карандаша нарисуйте прямые линии, соединяя соседние отметки.
  8. 8 Сотрите и круг, и отметки на краях круга, и другие метки, которые вы сделали. После того, как вы стерли все свои вспомогательные линии, ваш идеальный шестиугольник должен быть готов.

2 Рисуем грубый шестиугольник при помощи круглого предмета и линейки

  1. 1 Обведите ободок стакана карандашом. Таким образом, вы нарисуете круг. Очень важно рисовать именно карандашом, так как позже вам нужно будет стереть все вспомогательные линии. Вы также можете обвести перевернутый стакан, банку или что-то еще, что имеет круглую основу.
  2. 2 Нарисуйте горизонтальные линии через центр вашего круга. Можете воспользоваться линейкой, книгой - чем угодно с прямым краем. Если у вас все же есть линейка, вы можете отметить середину, рассчитав вертикальную длину круга и разделив его пополам.
  3. 3 Нарисуйте "Х" над половиной круга, разделяя его на шесть равных секций. Так как вы уже провели линию через середину круга, Х должен быть больше в ширину, чем в высоту, чтобы части были равны. Представьте, что вы делите пиццу на шесть частей.
  4. 4 Сделайте из каждой секции треугольники. Чтобы это сделать, при помощи линейки нарисуйте прямую линию под изогнутой частью каждой секции, соединяя ее с другими двумя линиями, образовывая треугольник. Сделайте это с оставшимися пятью секциями. Думайте об этом, как об изготовлении корочки вокруг ваших кусков пиццы.
  5. 5 Сотрите все вспомогательные линии. К вспомогательным линиям относятся ваш круг, три линии, которые разделили ваш круг на секции и другие отметки, которые вы делали в процессе.

3 Рисуем грубый шестиугольник при помощи одного карандаша

  1. 1 Нарисуйте горизонтальную линию. Чтобы нарисовать прямую линию без линейки, просто нарисуйте начальную и конечную точку вашей горизонтальной линии. Затем поместите карандаш в начальную точку и протягивайте линию к концу. Длина этой линии может быть всего пара сантиметров.
  2. 2 Нарисуйте две диагональные линии с концов горизонтальной. Диагональная линия с левой стороны должна быть направлена наружу так же, как и диагональная линия справа. Вы можете представить, что эти линии формируют угол в 120 градусов по отношению к горизонтальной линии.
  3. 3 Нарисуйте еще две горизонтальные линии, исходящие из первых горизонтальных прямых, нарисованных вовнутрь. Таким образом, будет создано зеркальное отображение первых двух диагональных линий. Нижняя левая линия должна быть отражением верхней левой линии, а нижняя правая - отражением верхней правой линии. В то время как верхние горизонтальные линии должны смотреть наружу, нижние должны смотреть вовнутрь основания.
  4. 4 Нарисуйте еще одну горизонтальную линию, соединяя нижние две диагональные линии. Таким образом, вы нарисуете основу для своего шестиугольника. В идеале эта линия должна быть параллельной к верхней горизонтальной линии. Вот вы и завершили свой шестиугольник.
  • Карандаш и циркуль должны быть острыми, чтобы минимизировать ошибки от слишком широких отметок.
  • Если при использовании метода с циркулем вы соединили каждую отметку вместо всех шести, то получите равносторонний треугольник.

Предупреждения

  • Циркуль - довольно острый предмет, будьте с ним очень аккуратны.

Принцип работы

  • Каждый метод поможет нарисовать шестиугольник, образованный шестью равносторонними треугольниками с радиусом, равным длине всех сторон. Шесть нарисованных радиусов одинаковой длины и все линии для создания шестиугольника тоже одной длины, так как ширина циркуля не менялась. Благодаря тому, что шесть треугольников равносторонние, углы между их вершинами равны 60 градусов.

Что вам понадобится

  • Бумага
  • Карандаш
  • Линейка
  • Пара циркулей
  • Что-то, что можно подложить под бумагу, чтобы игла циркуля не соскальзывала.
  • Ластик

Геометрические узоры весьма популярны в последнее время. В сегодняшнем уроке мы научимся создавать один из таких узоров. Используя переход, оформление и модные цвета мы создадим паттерн, который вы сможете использовать в веб и полиграфическом дизайне.

Результат

Шаг 2
Нарисуйте еще один шестиугольник, на этот раз меньше — выберите радиус в 20pt .

2. Переход между шестиугольниками

Шаг 1
Выделите оба шестиугольника и выровняйте их по центру (вертикально и горизонтально). Используя инструмент Blend/Переход (W) , выделите оба шестиугольника и укажите им переход в 6 шагов (Steps) . Чтобы было лучше видно, измените перед переходом цвет фигур.

3. Делим на секции

Шаг 1
Инструментом Line Segment/Отрезок линии (\) нарисуйте линию, пересекающую шестиугольники по центру от самого левого угла к самому правому. Нарисуйте еще две линии, пересекающие шестиугольники по центру от противоположных углов.

4. Закрашиваем секции

Шаг 1
Перед тем как начать закрашивать секции, давайте определимся с палитрой. Вот какова палитра из примера:

  • Синий: C 65 M 23 Y 35 K 0
  • Бежевый: C 13 M 13 Y 30 K 0
  • Персиковый: C 0 M 32 Y 54 K 0
  • Светло-розовый: C 0 M 64 Y 42 K 0
  • Темно-розовый: C 30 M 79 Y 36 K 4

В примере сразу использовался режим CMYK, чтобы можно было распечатать узор без изменений.

5. Последние штрихи и узор

Шаг 1
Сгруппируйте (Control-G) все секции и шестиугольники, после того как закончите с их окраской. Копируйте (Control-C) и Вставьте (Control-V) группу из шестиугольников. Назовем оригинальную группу Hexagon A, а ее копию Hexagon B . Выровняйте группы.


Шаг 2
Примените Linear Gradient/Линейный градиент к группе Hexagon B. В палитре Gradient/Градиент укажите заливку от фиолетового (C60 M86 Y45 K42 ) к кремовому цвету (C0 M13 Y57 K0 ).

Научимся изображать шестигранную призму в различных положениях.

Изучите различные способы построения правильного шестиугольника, сделайте рисунки шестиугольников, проверьте правильность их построения. На основе шестиугольников постройте шестигранные призмы.

Рассмотрите шестигранную призму на рис. 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, б и 4, а также касательные к описанной окружности в точках 5 и 2, имеют вертикальное направление и сохраняют его на перспективном рисунке. Таким образом, проведя две вертикальные касательные к эллипсу, найдем точки 5 и 2 (точки касания). Соедините их прямой линией, а затем разделите полученный диаметр 5 — 2 на 4 равных отрезка, учитывая их перспективные сокращения (рис. 3.65). Проведите вертикальные прямые через точки А и Б, а на их пересечении с эллипсом найдите точки 1,3,6л4. Затем последовательно соедините точки 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).

Геометрические построения являются одной из главных частей обучения. Они формируют пространственное и логическое мышление, а также разрешают понять примитивные и натуральные геометрические обоснованности. Построения производятся на плоскости при помощи циркуля и линейки. Этими инструментами дозволено возвести крупное число геометрических фигур. При этом многие фигуры, кажущиеся довольно трудными, строятся с использованием простейших правил. Скажем, то, как возвести верный шестиугольник, дозволено описать каждого в нескольких словах.

Вам понадобится

  • Циркуль, линейка, карандаш, лист бумаги.

Инструкция

1. Нарисуйте окружность. Установите некоторое расстояние между ножками циркуля. Это расстояние будет являться радиусом окружности. Выберите радиус таким образом, дабы вычерчивание окружности было довольно комфортным. Окружность должна всецело помещаться на листе бумаги. Слишком огромное либо слишком маленькое расстояние между ножками циркуля может привести к его изменению во время черчения. Оптимальным будет расстояние, при котором угол между ножками циркуля равен 15-30 градусов.

2. Постройте точки вершин углов верного шестиугольника. Установите ножку циркуля, в которой закреплена игла, в всякую точку окружности. Игла должна проткнуть начерченную линию. Чем вернее будет установлен циркуль, тем вернее будет построение. Проведите дугу окружности так, дабы она пересекла начерченную ранее окружность. Переставьте иглу циркуля в точку пересечения только что начерченной дуги с окружностью. Начертите еще одну дугу, пересекающую окружность. Вновь переставьте иглу циркуля в точку пересечения дуги и окружности и вновь начертите дугу. Произведите данное действие еще три раза, перемещаясь в одном направлении по окружности. Каждого должно получиться шесть дуг и шесть точек пересечения.

3. Постройте положительный шестиугольник. Ступенчато объедините все шесть точек пересечения дуг с изначально начерченной окружностью. Соединяйте точки прямыми, вычерчиваемыми при помощи линейки и карандаша. Позже произведенных действий будет получен верный шестиугольник, вписанный в окружность.

Шестиугольником считается многоугольник, владеющий шестью углами и шестью сторонами. Многоугольники бывают как выпуклыми, так и вогнутыми. У выпуклого шестиугольника все внутренние углы тупые, у вогнутого один либо больше угол является острым. Шестиугольник довольно легко возвести. Это делается в пару шагов.

Вам понадобится

  • Карандаш, лист бумаги, линейка

Инструкция

1. Берется лист бумаги и на нем отмечается 6 точек приблизительно так, как это показано на рис. 1.

2. Позже того, как были подмечены точки, берется линейка, карандаш и с их подмогой ступенчато, друг за ином соединяются точки так, как это выглядит на рис. 2.

Видео по теме

Обратите внимание!
Сумма всех внутренних углов шестиугольника равна 720 градусам.

Шестиугольник – это многоугольник, тот, что владеет шестью углами. Для того, дабы начертить произвольный шестиугольник, надобно проделать каждого 2 действия.

Вам понадобится

  • Карандаш, линейка, лист бумаги.

Инструкция

1. Нужно взять в руку карандаш и разметить на листе 6 произвольных точек. В дальнейшем эти точки будут исполнять роль углов в шестиугольнике. (рис.1)

2. Взять линейку и начертить по данным точкам 6 отрезков, которые бы соединялись друг с ином по начерченным ранее точкам (рис.2)

Видео по теме

Обратите внимание!
Специальным типом шестиугольника является положительный шестиугольник. Он именуется таковым потому, что все его стороны и углы равны между собой. Вокруг такого шестиугольника дозволено описать либо вписать окружность. Стоит подметить, что в точках, которые получились путем касания вписанной окружности и сторон шестиугольника, стороны положительного шестиугольника делятся напополам.

Полезный совет
В природе положительные шестиугольники владеют крупный популярностью. К примеру, вся пчелиная сота владеет положительной шестиугольной формой. Либо кристаллическая решетка графена (модификация углерода) тоже владеет формой положительного шестиугольника.

Как возвести тот либо другой угол – крупной вопрос. Но для некоторых углов задача невидимо упрощается. Одним из таких углов является угол в 30 градусов. Он равен?/6, то есть число 30 является делителем 180. Плюс к этому его синус вестим. Это и помогает при его построении.

Вам понадобится

  • транспортир, угольник, циркуль, линейка

Инструкция

1. Для начала разглядим особенно примитивную обстановку, когда у вас на руках есть транспортир. Тогда прямую под углом 30 градусов к данной дозволено легко отложить с поддержкой него.

2. Помимо транспортира существуют и угол ьники, один из углов которых равен 30 градусам. Тогда иной угол угол ьника будет равен 60 градусам, то есть вам необходим визуально меньший угол для построения требуемой прямой.

3. Перейдем сейчас к нетривиальным способам построения угла 30 градусов. Как вестимо, синус угла 30 градусов равен 1/2. Для его построения нам надобно возвести прямоугол ьный треугол ьник. Возможен, мы можем возвести две перпендикулярные прямые. Но тангенс 30 градусов – иррациональное число, следственно соотношение между катетами мы можем посчитать лишь примерно (исключительно, если нет калькулятора), а, значит, и возвести угол в 30 градусов примерно.

4. В этом случае дозволено сделать и точное построение. Возведем вновь две перпендикулярные прямые, на которых будут располагаться катеты прямоугол ьного треугол ьника. Отложим по одной прямой катет BC какой-нибудь длины с поддержкой циркуля (B – прямой угол ). После этого увеличим длину между ножками циркуля в 2 раза, что элементарно. Проводя окружность с центром в точке C с радиусом этой длины, обнаружим точку пересечения окружности с иной прямой. Эта точка и будет точкой A прямоугол ьного треугол ьника ABC, а угол A будет равен 30 градусам.

5. Возвести угол в 30 градусов дозволено и с поддержкой окружности, применяя то, что он равен?/6. Возведем окружность с радиусом OB. Разглядим в теории треугол ьник, где OA = OB = R – радиус окружности, где угол OAB = 30 градусов. Пускай OE – высота этого равнобедренного треугол ьника, а, следственно, и его биссектриса и медиана. Тогда угол AOE = 15 градусов, и, по формуле половинного угла, sin(15o) = (sqrt(3)-1)/(2*sqrt(2)).Следственно, AE = R*sin(15o). Отсель, AB = 2AE = 2R*sin(15o). Строя окружность радиусом BA с центром в точке B, обнаружим точку пересечения A этой окружности с начальной. Угол AOB будет равен 30 градусам.

6. Если мы можем определять длину дуг каким-нибудь образом, то, отложив дугу длиной?*R/6, мы также получим угол в 30 градусов.

Обратите внимание!
Нужно помнить, что в 5 пункте мы можем возвести угол лишь приближенно, потому что в вычислениях будут фигурировать иррациональные числа.

Шестиугольником называют частный случай полигона – фигуры, образованной большинством точек плоскости, ограниченным замкнутой полилинией. Положительный шестиугольник (гексагон), в свою очередь, также является частным случаем – это полигон с шестью равными сторонами и равными углами. Эта фигура знаменательна тем, что длина всей из ее сторон равна радиусу описанной вокруг фигуры окружности.

Вам понадобится

  • – циркуль;
  • – линейка;
  • – карандаш;
  • – лист бумаги.

Инструкция

1. Выберите длину стороны шестиугольника. Возьмите циркуль и установите расстояние между концом иглы, расположенной на одной из его ножек, и концом грифеля, расположенным на иной ножке, равным длине стороны вычерчиваемой фигуры. Для этого дозволено воспользоваться линейкой либо предпочесть случайное расстояние, если данный момент несущественен. Зафиксируйте ножки циркуля винтом, если есть такая вероятность.

2. Нарисуйте окружность при помощи циркуля. Выбранное расстояние между ножками будет являться радиусом окружности.

3. Разбейте окружность точками на шесть равных частей. Эти точки будут являться вершинами углов шестиугольника и, соответственно, окончаниями отрезков, представляющих его стороны.

4. Ножку циркуля с иглой установите в произвольную точку, находящуюся на линии очерченной окружности. Игла должна верно проткнуть линию. От точности установки циркуля напрямую зависит точность построений. Очертите циркулем дугу так, дабы она пересекла в 2-х точках окружность, начерченную первой.

5. Переставьте ножку циркуля с иглой в одну из точек пересечения начерченной дуги с изначальной окружностью. Вычертите еще одну дугу, также пересекающую окружность в 2-х точках (одна из них совпадет с точкой предыдущего расположения иглы циркуля).

6. Сходственным же образом переставляйте иглу циркуля и вычерчивайте дуги еще четыре раза. Перемещайте ножку циркуля с иглой в одном направлении по окружности (неизменно по либо вопреки часовой стрелки). В итоге обязаны быть выявлены шесть точек пересечения дуг с изначально построенной окружностью.

7. Нарисуйте положительный шестиугольник. Ступенчато попарно объедините отрезками полученные на предыдущем шаге шесть точек. Вычерчивайте отрезки при помощи карандаша и линейки. В итоге будет получен верный шестиугольник. Позже осуществления построения дозволено стереть вспомогательные элементы (дуги и окружность).

Обратите внимание!
Имеет толк выбирать такое расстояние между ножками циркуля, дабы угол между ними был равен 15-30 градусов, напротив при осуществлении построений данное расстояние может легко сбиться.

При строительстве либо разработке домашних дизайн-планов зачастую требуется возвести угол , равный теснее имеющемуся. На поддержка приходят образцы и школьные умения геометрии.

Инструкция

1. Угол образуют две прямые, исходящие из одной точки. Эта точка будет именоваться вершиной угла, а линии будут являться сторонами угла.

2. Для обозначения углов используйте три буквы: одна у вершины, две у сторон. Называют угол , начиная с той буквы, которая стоит у одной стороны, дальше называют букву, стоящую у вершины, и после этого букву у иной стороны. Используйте и другие методы для обозначения углов, если вам комфортнее напротив. Изредка называют только одну букву, которая стоит у вершины. А дозволено обозначать углы греческими буквами, скажем, α, β, γ.

3. Встречаются обстановки, когда нужно начертить угол , дабы он был равен теснее данному углу. Если при построении чертежа применять транспортир вероятности нет, дозволено обойтись только линейкой и циркулем. Возможен, на прямой, обозначенной на чертеже буквами MN, надобно возвести угол у точки К, так, дабы он был равен углу В. То есть из точки K нужно провести прямую, образующую с линией MN угол , тот, что будет равен углу В.

4. В начале подметьте по точке на всей стороне данного угла, скажем, точки А и С, дальше объедините точки С и А прямой линией. Получите треугол ьник АВС.

5. Теперь постройте на прямой MN такой же треугол ьник, дабы его вершина В находилась на линии в точке К. Используйте правило построения треугол ьника по трем сторонам. Отложите от точки К отрезок KL. Он должен быть равен отрезку ВС. Получите точку L.

6. Из точки K вычертите окружность радиусом равным отрезку ВА. Из L вычертите окружность радиусом СА. Полученную точку (Р) пересечения 2-х окружностей объедините с К. Получите треугол ьник КPL, тот, что будет равен треугол ьнику ABC. Так вы получите угол К. Он и будет равен углу В. Дабы это построение сделать комфортнее и стремительней, от вершины В отложите равные отрезки, применяя один раствор циркуля, не сдвигая ножек, опишите этим же радиусом из точки К окружность.

Видео по теме

Обратите внимание!
Избегайте случайного метаморфозы расстояния между ножками циркуля. В этом случае шестиугольник может получиться неправильным.

Полезный совет
Имеет толк изготавливать построения при помощи циркуля с отлично заточенным грифелем. Так построения будут особенно точны.