Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2017, 20:14   #1
Shamchik
Новичок
Джуниор
 
Регистрация: 15.10.2017
Сообщений: 1
По умолчанию Графика на си

Здравствуйте,я не могу понять программу,хочу сделать,чтобы в программе сразу выходили фигуры,а не шла заливка их во время просмотра,премного благодарен буду за помощь.
Код:
#define _USE_MATH_DEFINES
#include "math.h"
#include "graphics.h"

void fill_figure(int,int,int,int);
void star_polygon(int,int,int,int,int,int,int);

int main()
{
   initwindow(800,800);
   star_polygon(200,200,150,5,2,WHITE,LIGHTRED);
   star_polygon(600,200,150,6,2,WHITE,LIGHTBLUE);
   star_polygon(200,600,150,7,3,WHITE,LIGHTCYAN);
   star_polygon(600,600,150,8,3,WHITE,LIGHTGREEN);   
   getch();   
   closegraph();
   return 0;
}

void fill_figure(int x,int y,int border_color,int fill_color)
{
   // Закрашивание фигуры
   // x и y - координаты начальной точки
   // border_color - цвет границы закрашиваемой фигуры
   // fill_color - цвет закраски
   
   if (getpixel(x,y)!=border_color && getpixel(x,y)!=fill_color)
   {
      putpixel(x,y,fill_color);
      fill_figure(x-1,y,border_color,fill_color);
      fill_figure(x+1,y,border_color,fill_color);
      fill_figure(x,y-1,border_color,fill_color);
      fill_figure(x,y+1,border_color,fill_color);
   }
}

void star_polygon(int x_center,int y_center,int radius,int n,int m,int line_color,int fill_color)
{
   // Рисование {n/m} звезды
   // x_center и y_center - координаты центра
   // radius - радиус описанной окружности
   // line_color - цвет линий
   // fill_color - цвет закраски
   
   int *points;
   double angle,delta;
   
   points=new int[2*(n+1)];   
   delta=2*M_PI/n;
   
   setcolor(line_color);
   
   for (int i=0;i<(n%m?1:m);i++)
   {
      angle=M_PI/2+i*delta;
      for (int j=0;j<n+1;j++)
      {      
         points[2*j]=x_center+radius*cos(angle);
         points[2*j+1]=y_center-radius*sin(angle);
         angle+=m*delta;
         putpixel(points[2*j],points[2*j+1],line_color);
      }      
      drawpoly(n+1,points);
   }
   
   angle=M_PI/2;
   delta=2*M_PI/n;
   
   for (int i=0;i<n;i++)
   {
      fill_figure(x_center+0.9*radius*cos(angle),y_center-0.9*radius*sin(angle),line_color,fill_color);
      angle+=delta;
   }
   
   if (m%2==1)
   {
      fill_figure(x_center,y_center,line_color,fill_color);
   }
   
   delete[] points;
}

Последний раз редактировалось Shamchik; 15.10.2017 в 20:20. Причина: редактирование кода для читаемости
Shamchik вне форума Ответить с цитированием
Старый 15.10.2017, 20:32   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я сейчас гадаю... ну, удали вот это:

1.jpg

пиши, что получилось.
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое изменение графика при переносе данных, формулы и графика на другой лист REztor Microsoft Office Excel 0 01.06.2013 18:01
Графика Kazik Помощь студентам 1 06.05.2012 13:32
Графика Solnze2 Общие вопросы Delphi 0 15.06.2010 09:46
Графика Doholyan Паскаль, Turbo Pascal, PascalABC.NET 6 24.06.2009 00:59
графика jenja Общие вопросы Delphi 0 07.05.2009 13:56