Как нарисовать равносторонний треугольник на компьютере

Обновлено: 05.07.2024

В дополнение к возможности поддержки вычислений в Excel также есть инструменты, которые упрощают пользователям использование инструментов рисования. В этой статье я расскажу вам, как рисовать равносторонние треугольники в Excel 2013.

Шаг 1. Выберите вкладку «Вставка» -> «Фигуры» -> «Блок-схема» -> «Основные фигуры» -> выберите треугольник.

Изображение 1 из Как нарисовать равносторонний треугольник в Excel

Шаг 2: Нажмите и удерживайте клавишу Shift, перемещая мышь, чтобы настроить размер. Когда будет похоже, что вы хотите отпустить кнопку мыши.

Изображение 2 из Как нарисовать равносторонний треугольник в Excel

С помощью простой операции вы начертите равносторонний треугольник.

Основные операции с треугольниками

1. Измените размер, направление вращения.

Перейдите на вкладку Формат -> Размер. Появится диалоговое окно -> изменить размер по ширине, высоте. Измените направление, указав количество оборотов в разделе «Поворот».

Изображение 3: Как нарисовать равносторонний треугольник в Excel

2. Залейте фон треугольником.

Перейдите на вкладку Формат -> Заливка фигуры -> выберите соответствующий цвет.

Изображение 4 из Как нарисовать равносторонний треугольник в Excel

3. Выберите цвет обводки равносторонних треугольников.

Перейдите на вкладку «Формат» -> «Заливка фигуры» -> выберите соответствующий цвет.

Изображение 5 из Как нарисовать равносторонний треугольник в Excel

4. Создавайте эффекты.

Перейдите на вкладку «Формат» -> «Эффект фигуры» -> выберите соответствующий эффект.


Мне интересно воссоздавать работу GPU программно, поэтому я решил поделиться моим пониманием того, как можно выполнить раскраску треугольников методами простой линейной алгебры.

Я напишу обобщённый 2D-массив элементов типа uint32_t под названием colorBuffer, который может быть резервным хранилищем чего-то простого, например, выводимого в файл изображения, или буфером цвета окна SDL.

Задаём треугольник

Треугольник можно задать тремя точками, или вершинами. Каждая вершина имеет различные атрибуты; пока мы добавим каждой вершине только положение на экране.

То есть если бы мы захотели нарисовать треугольник с вершиной в нижнем левом углу, нижнем правом углу и вверху по центру, то мы бы могли задать его так:

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

Каждая вершина имеет позицию, состоящую из двух значений с плавающей запятой. Их два, потому что при работе с экраном у нас есть всего два измерения: ширина (x) и высота (y).

Точкой начала координат экрана считается верхний левый угол: значения y становятся больше при смещении вниз, а значения x — при сдвиге вправо. Поэтому нижний правый угол треугольника имеет наибольшие значения.

Функция ребёр

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


Сначала мы создадим вектор из каждой вершины до следующей соседней вершины, двигаясь по часовой стрелке, вычитанием позиции одной вершины из другой. Вспомним, что Точка A — Точка B создаёт вектор, указывающий из Точки B в Точку A.

Это красные векторы, названные e10 (v1 — v0), e21 (v2 — v1) и e02 (v0 — v2).

Если мы хотим узнать, находится ли точка P внутри треугольника, то можно использовать свойство векторного произведения 2D-векторов. Для каждого ребра (e10, e21, e02) мы можем найти векторное произведение вектора этого ребра с вектором из начальной точки ребра к точке P.


Новый вектор является результатом вычитания p — v0, что создаёт вектор из v0 в p. Если мы возьмём двухмерное векторное произведение двух зелёных векторов (p-v0 и e10), то получим значение, являющееся отрицательным, положительным или нулевым.

  • Положительное: точка P находится справа от e10 (внутри треугольника)
  • Отрицательное: точка P находится слева от e10 (снаружи треугольника)
  • Нулевое: точка P находится на e10 (ни внутри, ни снаружи)


Зелёный вектор является результатом вычитания p — v1, что создаёт вектор из v1 в p.


Зелёный вектор является результатом вычитания p — v2, что создаёт вектор из v2 в p.

Двухмерное векторное произведение получается довольно просто:

Тогда если мы хотим протестировать точку P относительно e10:


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

Мы можем задать ещё одну структуру для представления Vector и перегрузить оператор вычитания, чтобы создавать Vector из вычитания двух точек. Структуры Point и Vector имеют одинаковое содержимое (два float), но благодаря их разделению код становится более понятным.


Затем мы создаём функцию, сообщающую нам по позициям двух векторов (точек рёбер) и тестируемой точки векторное произведение векторов из этих точек.

Рисование треугольника

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


Так мы получаем следующее изображение:


Затенение треугольника

Замечательно. Мы можем задавать треугольник тремя точками и заливать его сплошным цветом. Разумеется, наша конечная цель — не сплошной цвет. Было бы здорово, если бы могли связать с вершиной и другие атрибуты, кроме позиции, а затем интерполировать эти атрибуты для всего множества пикселей, составляющих треугольник.

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

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


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

Если указать на каждом меньшем треугольнике его площадь, то мы увидим нечто интересное.

  • Когда точка P приближается к v0, площадь красного треугольника становится больше.
  • Когда точка P приближается к v1, больше становится площадь зелёного треугольника.
  • Когда точка P приближается к v2, больше становится площадь синего треугольника.

Если мы разделим каждый из результатов, возвращённых из функции рёбер и разделим их на общую площадь основного треугольника, то получим нормализованное значение (от 0.0 до 1.0) для каждой вершины. Это значение является весом этой вершины в проверяемой точке. Можно умножить вес каждой вершины на атрибут вершины и сложить все три взвешенных значения, чтобы получить окончательное значение.

Это можно продемонстрировать, назначив каждой вершине цвет.

Мы создадим struct для задания цвета, которая будет всего лишь четырьмя float, и добавим переменную цвета в структуру Vertex.


Затем мы переопределим треугольник и назначим красный цвет вершине v0, зелёный — v1, а синий — v2.


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

Значение, возвращаемое функцией Edge, является площадью параллелограмма, образованного векторами, но нас интересует площадь треугольника, равная её половине. Однако, поскольку мы делим результаты функции Edge (e1, e2, e3) на ещё один результат функции Edge (площадь), то 1/2 сокращается, поэтому нам не нужно об этом заботиться.
Когда треугольник меньше размера всего окна/изображения, то будет неэффективно обходить весь размер окна/изображения. Логичнее будет создать ограничивающий прямоугольник этого треугольника, вычислив его минимальные и максимальные значения X и Y, а затем обойдя только эту область.

Результаты

После выполнения программы получается следующий затенённый треугольник:


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

Заключение

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

В OpenGL мы передаём в GPU буфер данных вершин, содержащий атрибуты каждой вершины (например, позицию, цвет, нормаль), а он затем интерполирует эти атрибуты между пикселями (фрагментами), составляющими треугольник на экране.


Из этого материала вы узнаете, как с помощью циркуля построить правильный треугольник. Напомним, что треугольник является правильным, если длина всех его сторон одинакова, а каждый из углов составляет 60°.

На листе бумаги отметьте произвольную точку. Установите в эту точку иглу циркуля и нарисуйте окружность.

Как начертить равносторонний треугольник

Установите иглу циркуля в любую произвольную точку, лежащую на окружности, и нарисуйте вторую окружность с центром в этой точке.

При этом не меняйте раствор циркуля, то есть радиус первой окружности должен быть равен радиусу второй окружности.

Как начертить равносторонний треугольник

Отметьте точки пересечения окружностей.

Как начертить равносторонний треугольник

Соедините полученные точки линией. Полученный отрезок будет первой стороной треугольника.

Как начертить равносторонний треугольник

Далее, через центры обеих окружностей нужно провести прямую линию.

Как начертить равносторонний треугольник
Как начертить равносторонний треугольник

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

Соедините все три точки между собой.

Как начертить равносторонний треугольник

Полученный треугольник имеет одинаковую длину сторон, а величина каждого его угла составляет 60°, а значит он правильный.


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

Как рисовать треугольник с равными сторонами?

Как нарисовать треугольник, стороны у которого равны? Для этого можно воспользоваться одним из трех методов.

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

Равнобедренный треугольник

Варианты создания фигуры

Обязательно используйте линейку и один из представленных ниже способов:

  1. Применение циркуля: надо начертить ровную линию. Проведите карандаш вдоль прямого края бумаги. Этот сегмент линии образует одну из сторон. А это означает, что нужно будет чертить вторую и третью линии одинаковой длины, каждая из которых достигает точки под углом 60° от первой линии. Удостоверьтесь, что достаточно места для рисования всех трех сторон!
  2. Разделите сегмент циркулем. Вставьте карандаш и убедитесь, что он острый! Поместите точку циркуля на один конец сегмента и установите карандаш на другую. Опишите дугу. Не изменяйте установленную «ширину» инструмента от точки циркуля до точки карандаша. Нарисуйте вторую дугу, чтобы она пересекала первую дугу, которую уже нарисовали. Отметьте точку, в которой пересекаются две дуги. Это вершина (верхняя точка) треугольника. Он должен лежать в точном центре сегмента линии, который нарисовали. Теперь можете сделать две прямые линии, ведущие к этой точке: по одному от каждого конца «нижнего» сегмента линии. Закончите треугольник. Далее с помощью линейки надо нарисовать еще два сегмента прямой линии – это стороны в треугольнике. Подключите каждый конец исходного сегмента линии к точке, в которой пересекаются дуги. Чтобы закончить работу, сотрите дуги, которые нарисовали, так, чтобы остался только треугольник.
  3. Использование объекта с круглой базой: этот совет подойдет для построения дуги. Предложенный метод по сути такой же, как с использованием циркуля.

Указанные советы помогут выяснить, как нарисовать равносторонний треугольник.

Рекомендации по построению равнобедренного треугольника

Равнобедренный треугольник представляет собой фигуру с двумя равными сторонами и двумя равными углами. Если знаете длину, основание и высоту стороны, это можно сделать только с линейкой и циркулем (или просто циркулем, если заданы размеры).

Как нарисовать равнобедренный треугольник:

  1. Учитывая все боковые длины. Чтобы использовать этот метод, важно знать длину основания треугольника и длину двух равных сторон.
  2. Учитывая две равные стороны и угол между ними. Чтобы использовать этот метод, нужно знать длину двух равных сторон и измерение угла между этими двумя сторонами.
  3. Учитывая базовые и смежные углы – необходимо знать длину базы, градусы двух углов, смежных с основанием. Помните, что два угла, смежные с основанием равнобедренного треугольника, будут равны.
  4. Основа и высота. Нужно знать длину основания треугольника, а также высоту этой геометрической фигуры.

Линейка и циркуль

Вписанный треугольник

Как нарисовать вписанный треугольник? Выберите круглый объект. Используйте предмет с круглым основанием. Выбор компакт-диска станет хорошим вариантом. Но можно взять и другой объект нужного размера. Для этого метода свойственно, что длина каждой стороны равносторонней геометрической фигуры с тремя углами будет равна размерам радиуса (половине диаметра) круга.

Вписанный треугольник

Как нарисовать треугольник, если используете компакт-диск? Представьте себе равносторонний треугольник, который вписывается в верхнюю правую часть компакт-диска. Надо начертить первую из сторон. Радиус круглого объекта – расстояние на полпути до получения желаемого результата. Удостоверьтесь, что линии нарисованы ровно.

С помощью линейки просто выполните измерения диаметра объекта и нарисуйте линию на половину длины. Если ее нет, поместите круглый объект на бумагу, затем тщательно проведите по окружности карандашом. Удалите объект – должен быть идеальный круг. Используйте прямой край, чтобы нарисовать линию через точный центр круга: точку, которая полностью равноудалена от любой точки по окружности круга.

Как начертить треугольник?

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

Начертите еще одну дугу. Теперь сдвиньте круглый объект так, чтобы край касался другого конца сегмента линии.

Подведем итоги

В статье были предоставлены рекомендации, как нарисовать треугольник равносторонний, равнобедренный и вписанный в окружность.

Читайте также: