Как нарисовать круг в с

от admin

C++ для начинающих Рисование окружности алгоритм Брезенхайма

==============
#include <graphics.h>
#include <iostream.h>

//Окружность по алгоритму Брезенхайма
void Circle (int x , int y , int r ,unsigned char color )
<
int x1 , y1 , yk = 0 ;
int sigma , delta , f ;

x1 = 0 ;
y1 = r ;
delta = 2 *( 1 – r );

do
<
putpixel ( x + x1 , y + y1 , color );
putpixel ( x – x1 , y + y1 , color );
putpixel ( x + x1 , y – y1 , color );
putpixel ( x – x1 , y – y1 , color );

f = 0 ;
if ( y1 < yk )
break;
if ( delta < 0 )
<
sigma = 2 *( delta + y1 )- 1 ;
if ( sigma <= 0 )
<
x1 ++;
delta += 2 * x1 + 1 ;
f = 1 ;
>
>
else
if ( delta > 0 )
<
sigma = 2 *( delta – x1 )- 1 ;
if ( sigma > 0 )
<
y1 –;
delta += 1 – 2 * y1 ;
f = 1 ;
>
>
if (! f )
<
x1 ++;
y1 –;
delta += 2 *( x1 – y1 – 1 );
>
>
while( 1 );
>

void main ()
<
int R = 100 ;
//Задаем радиус
double x ;
double y ;

int gdriver = DETECT , gm ;
initgraph (& gdriver ,& gm , “” );

x = getmaxx ()/ 2 ;
y = getmaxy ()/ 2 ;

Circle ( x , y , R , 1 );
cin . get ();
>

==============
Самую нужную часть хорошо комментировать я не смогу. Но кое что поясню. В отличии от встроенной функции, описываемая здесь называется по другому. Различны регистры букв. К регистру стоит быть всегда внимательным. Кроме этого, тут проявился некоторый эффект, который немного противоречит правилам хорошего тона программирования. Я заранее знаю какие значения должен принимать центр окружности и, размышляя логически, могу инициализировать x,y сразу в момент объявления, но при попытке такой инициализации и дальнейшей работы, у меня программа срабатывала не так как я того ожидал. Во время инициализации графического режима эти x,y меняли свое значение и вся инициализация во время объявления теряла смысл.Поэтому присваивание им значений я выполнил непосредственно перед вызовом функции. Это слегка забавно, но это стоит расценивать только как: “Будьте внимательны”.

Как нарисовать круг на с++?

А, извиняюсь, про С++ не заметил. Ну да ладно, все равно я С++ не знаю и знать не хочу!

P.S. А вот — чистая консолька:

Алгоритм Брезенхэма, второй аргумент функции drawCircle задает поправку на геометрию терминала: если у вас вдруг в терминале высота буквы равна ширине, то пишите 0, если же высота в 2 раза больше ширины, пишите 1.

  • Facebook
  • Вконтакте
  • Twitter
  • Facebook
  • Вконтакте
  • Twitter

gbg

  • Facebook
  • Вконтакте
  • Twitter

Это вообще откуда и зачем?

  • Facebook
  • Вконтакте
  • Twitter
  • Facebook
  • Вконтакте
  • Twitter
  • Facebook
  • Вконтакте
  • Twitter

И где она тут? Не вижу ничего, кроме вычислений.

Хотя сама постановка вопроса это жуть какая-то.

Если это кто-то задания такие даёт студентам — передайте «коллегам», чтобы не маялись дурью, заставляя выполнять дебильные задания, не дающие ровным счётом никаких полезных знаний и навыков. Я понимаю, если бы такое задание дали для выполнения на METAPOST и т.п. (правда для METAPOST оно слишком уж простое), но C++. Дебилизм.

Как в c задать окружность

А, извиняюсь, про С++ не заметил. Ну да ладно, все равно я С++ не знаю и знать не хочу!

P.S. А вот — чистая консолька:

Алгоритм Брезенхэма, второй аргумент функции drawCircle задает поправку на геометрию терминала: если у вас вдруг в терминале высота буквы равна ширине, то пишите 0, если же высота в 2 раза больше ширины, пишите 1.

Это вообще откуда и зачем?

Алгоритм отрисовки круга примерно такой:

И где она тут? Не вижу ничего, кроме вычислений.

Хотя сама постановка вопроса это жуть какая-то.

Если это кто-то задания такие даёт студентам — передайте «коллегам», чтобы не маялись дурью, заставляя выполнять дебильные задания, не дающие ровным счётом никаких полезных знаний и навыков. Я понимаю, если бы такое задание дали для выполнения на METAPOST и т.п. (правда для METAPOST оно слишком уж простое), но C++. Дебилизм.

Создание простых геометрических фигур в C++/SFML

Обновл. 22 Фев 2021 |

Ты всю жизнь ощущал, что мир не в порядке. Странная мысль, но её не отогнать. Она — как заноза в мозгу. Она сводит с ума, не дает покоя. Это и привело тебя ко мне… Примешь синюю таблетку — и сказке конец. Ты проснешься в своей постели и поверишь, что это был сон. Примешь красную таблетку — войдешь в страну чудес. Я покажу тебе, насколько глубока библиотека SFML кроличья нора.

Круги

Предлагаю для начала потренироваться на простых геометрических фигурах типа Михаила круга. В этом деле большую помощь нам окажет класс CircleShape:

конструктор данного класса принимает в качестве параметра радиус нашей будущей фигуры (например, circle(50.f) );

Читать:
Как вывести массив в java

закрасить фигуру можно с помощью метода 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 графике

Заголовочный файл graphics.h содержит функцию circle (), которая рисует окружность с центром в точке (x, y) и заданным радиусом.

Создание простых геометрических фигур в 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 вершин — восьмиугольник (октагон).

Ниже приведен полный код матрицы программы, которая наглядно покажет создание данных фигур:

Похожие статьи