Как нарисовать треугольник в с
The task is to write a C program to make a triangle with the line function of graphics.
To run the program we have to include the below header file:
Approach: The idea is to create a triangle with the help of several lines. We will draw a line in graphics by passing 4 numbers to line() function as:
line(a, b, c, d)
The above function will draw a line from coordinates (a, b) to (c, d) in the output window.
Создание простых геометрических фигур в C++/SFML

Ты всю жизнь ощущал, что мир не в порядке. Странная мысль, но её не отогнать. Она — как заноза в мозгу. Она сводит с ума, не дает покоя. Это и привело тебя ко мне… Примешь синюю таблетку — и сказке конец. Ты проснешься в своей постели и поверишь, что это был сон. Примешь красную таблетку — войдешь в страну чудес. Я покажу тебе, насколько глубока библиотека SFML кроличья нора.
Круги
Предлагаю для начала потренироваться на простых геометрических фигурах типа Михаила круга. В этом деле большую помощь нам окажет класс CircleShape:
конструктор данного класса принимает в качестве параметра радиус нашей будущей фигуры (например, circle(50.f) );
закрасить фигуру можно с помощью метода setFillColor() , который очень похож на уже знакомый нам метод window.clear() ;
ну и для отображения круга в окне используется метод window.draw() .
Результат выполнения программы:

Наша фигура может иметь контур. Для его создания используется метод setOutlineThickness(), а для цвета контура — setOutlineColor():
Результат выполнения программы:

Как уже знаем из предыдущего урока, при закрашивании фигур или фона можно еще указать значение прозрачности. Например, строкой setOutlineColor(Color(80, 220, 50, 150)) мы устанавливаем 150 в качестве значения прозрачности контура:

А теперь с помощью строки setOutlineColor(Color(80, 220, 50, 50)) мы установим 50 в качестве значения прозрачности контура:

Вы уже наверняка заметили, что наш круг выходит за границы окна, а это не совсем хорошо. Нужно его немного подвинуть, а поможет нам в этом метод move():
Результат выполнения программы:

Регулярные полигоны
-Welcome to the real world!
Отлично! Сейчас мы рассмотрим, как нарисовать и другие фигуры. Теперь ты готов узнать истину. Она заключается в том, что, на самом деле, ложки не существует, Нео твой круг — это немножко не круг, а многоугольник. Да-да, самый обычный многоугольник с большИм количеством вершин. Всё дело в том, что у конструктора класса CircleShape есть еще и второй параметр (помимо радиуса), который отвечает за количество вершин у создаваемой фигуры, и он по умолчанию равен 30 . Именно при значениях близких к 30, многоугольник становится мало отличимым от круга. В то же время, задавая этот параметр самостоятельно, мы можем получить абсолютно другие геометрические элементы. Не трудно догадаться, что 3 вершины — это треугольник, 4 вершины — квадрат, 5 вершин — пятиугольник, ну а 8 вершин — восьмиугольник (октагон).
Ниже приведен полный код матрицы программы, которая наглядно покажет создание данных фигур:
Построить треугольник, описать и вписать окружность на C#
В статье мы займемся рисованием, рисовать будем треугольник, вписанную и описанную окружность. Конечно, рисовать будет программа, код которой мы сейчас напишем.
Координаты вершин треугольника будут находиться в структуре “Pt”. Для этого создадим переменные для работы со структурой и саму структуру.
Далее напишем функции для вычисления длин, углов треугольника и т.д. и процедуру для вывода графики на форму.
Пишем функцию нахождения длины строны треугольника по заданным координатам. Будем использовать формулу нахождения расстояния между двумя точками.
S = ((x2 — x1) ^2+ (y2-y1) ^2) ^ (1/2), где (x1, y1) и (x2, y2) — это координаты начала и конца отрезка.
Чтобы найти углы треугольника воспользуемся формулой скалярного произведения векторов
cos(ang) = a/(s1*s2), где a — скалярное произведение векторов s1 и s2,а s1 и s2 — стороны треугольника (абсолютные величины векторов).
Периметр находим как сумма длин трех сторон треугольника.
Площадь треугольника находится с помощью формулы Герона:
Теперь найдем радиусы вписанной и описанной окружности.
И, наконец, процедура, которая будет осуществлять конечные вычисления, и рисовать окружность на форме программы.
Процедура кнопки, которая будет вызывать всю процедуру рисования треугольника и окружностей.
Объявим нужные переменные и занесем в структуру координаты вершин треугольника из текстовых полей на форме.
Нарисуем форме три линии, которые будут составлять наш треугольник и названия вершин A, B и C.
Используя написанные функции, найдем длины сторон, полупериметр, площадь, радиусы вписанной и описанной окружности и углы треугольника.
Выведем на форму все эти вычисленные значения в ListBox “znach”.
Найдем середины сторон s1 и s2.
Необходимо повернуть точки на угол 90 градусов.
Поворачиваем точку а[2] вокруг середины стороны:
Поворачиваем точку а[0] вокруг середины стороны s1:
Вызовем нашу процедуру для вывода графики и построим описанную окружность с центром в точке пересечения серединных перепендикуляров.
int coef1 = 1, coef2 = 1; //коэффициенты,указывающие напрвление поворота
Вычисляем знак третьей координаты векторного произведения векторов, между которыми строится биссектриса.
Поворачиваем точку a[2] вокруг a[0] на угол равный половине угла ang2
И последнее, что мы делаем это выполняем построение вписанной окружности с центром в точке пересечения биссектрисс.

Построить треугольник, описать и вписать окружность
Треугольник и две окружности построены, для решения этой задачи нам понадобились небольшие знания C# и геометрии.
Автор: Евтеев Евгений Александрович
graphics.h Рисование треугольника по заданным координатам
Программирование графики всегда предполагает то, что вы знакомы с геометрией. Чем больше у вас геометрических знаний, тем проще ориентироваться в программировании графики. Рассматривая graphics.h иногда полезно попробовать создать примитив. Так как обучающие материалы предполагают простоту кода, то будет рассмотрен примитивный пример рисования треугольника по заданным координатам.
Я покажу два способа создания треугольника по заданным координатам. Это достаточно простой для понимания урок и полезный для получения практических знаний.
Нарисовать треугольник можно чистым контуром, проведя три линии, а можно использовать функцию drawpoly , рисующую многоугольник. В обоих случаях код получается достаточно компактным и каждый волен решать что ему больше подходит
Шаг первый. Анализ и Мозговой штурм .
- Для начала нужно создать класс и определить в нем поведение объекта. Наш объект – это треугольник.
- Под поведением объекта понимается то, что этот объект должен уметь делать. В нашем случае Объект треугольник должен уметь рисовать себя, значит нужно описать метод, который научит объект Треугольник себя рисовать.
- Что такое треугольник? Треугольник является подмножеством многоугольников и у него три угла. Какие данные нужны, чтобы треугольник нарисовать по заданным координатам? Нужно три точки
Детали объекта скрыты от прямого доступа извне, но нам нужно передавать в них данные. Наши данные – это указания о месте положения точек. Чтобы передать эти данные, используется конструктор с параметрами
Если все, что написано понятно, то
Triangle :: Triangle ( pointtype A , pointtype B , pointtype C ) //Я описываю конструктор вне класса
<
a = A ; //Копирование данных из структуры A в a и далее по аналогии
b = B ;
c = C ;
>
================
Так при помощи конструктора, принимаемые в объект параметры будут передаваться в детали объекта. Теперь осталось описать поведение объекта и научить треугольник рисовать себя. Я упоминал, что покажу два способа. Первый способ – рисование линиями:
Triangle :: Triangle ( pointtype A , pointtype B , pointtype C ) //Я описываю конструктор вне класса
<
a = A ; //Копирование данных из структуры A в a и далее по аналогии
b = B ;
c = C ;
>
void Triangle :: Show () //Описываю метод Show вне класса
<
moveto ( a . x , a . y ); //Для начала рисования определяем начальную точку
lineto ( b , x , b . y ); //Нарисовали сторону ab треугольника
lineto ( c . x , c . y ); //Нарисовали сторону bc треугольника
lineto ( a . x , a . y ); //Нарисовали сторону ac треугольника
>
================
Triangle :: Triangle ( pointtype A , pointtype B , pointtype C ) //Я описываю конструктор вне класса
<
a = A ; //Копирование данных из структуры A в a и далее по аналогии
b = B ;
c = C ;
>
void Triangle :: Show () //Описываю метод Show вне класса
<
int Poly [ 8 ]= < a . x , a . y , b . x , b . y , c . x , c . y , a . x , a . y >; //Инициализация массива параметрами переданными в объект
drawpoly ( 4 , Poly ); //Рисование треугольника по данным, записанным в массив
>
================
Функция drawpoly может использоваться для рисования любых многоугольников. Когда мы к ней обращаемся, первым параметром нужно указать количество сторон многоугольника плюс один, вторым параметром массив, хранящий данные координат. Параметр сторон на один больше потому что последним параметром контур многоугольника замыкается. Если посмотреть на первый способ, то видно, что необходимо четыре функции, тут также
Последний шаг – Объявление объекта треугольник, передача ему параметров и Рисование треугольника по указанным координатам
graphics.h Нарисовать треугольник по заданным координатам (Способ2)
================
#include <iostream.h>
#include <graphics.h>
class Triangle
<
pointtype a , b , c ; //Детали треугольника = три точки для построения
public:
Triangle ( pointtype , pointtype , pointtype ); //Прототип конструктора с параметрами
void Show (); //Метод, помогающий понять треугольнику, как себя рисовать
>;
void Triangle :: Show () //Описываю метод Show вне класса
<
int Poly [ 8 ]= < a . x , a . y , b . x , b . y , c . x , c . y , a . x , a . y >; //Инициализация массива параметрами переданными в объект
drawpoly ( 4 , Poly ); //Рисование треугольника по данным, записанным в массив
>
void main ()
<
int gd = DETECT , gm ;
initgraph (& gd ,& gm , “” );
pointtype a , b , c ; //Три точки треугольника
a . x = 20 ; a . y = 20 ;
b . x = 100 ; b . y = 90 ;
c . x = 33 ; c . y = 88 ;
Triangle Tr1 ( a , b , c ); //Объявили объект, типа треугольник
Tr1 . Show (); //Заставили объект нарисовать себя по указанным координатам
class Triangle
<
pointtype a , b , c ; //Детали треугольника = три точки для построения
public:
void Show ( pointtype , pointtype , pointtype ); //Метод, помогающий понять треугольнику, как себя рисовать
>;
void main ()
<
int gd = DETECT , gm ;
initgraph (& gd ,& gm , “” );
pointtype a , b , c ; //Три точки треугольника
a . x = 20 ; a . y = 20 ;
b . x = 100 ; b . y = 90 ;
c . x = 33 ; c . y = 88 ;
Triangle Tr1 ; //Объявили объект, типа треугольник
Tr1 . Show ( a , b , c ); //Заставили объект нарисовать себя по указанным координатам