Как строить графики в си
Перейти к содержимому

Как строить графики в си

  • автор:

Графика в Си.

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

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

Структура программы с графикой в Си.

#include // подключение заголовочного файла с графическими функциями
#include
main()
initwindow ( 500, 500 ); // инициализировали и открыли окно размером 500 на 500
…рисуем графические объекты
getch(); // ждем нажатия клавиши
closegraph(); // закрываем графический режим
>

Основные графические объекты в си, такие как точка, линия, окружность, прямоугольник задаются с помощью системы координат. Система координат в графическом режиме Си задается следующим образом. Верхний левый угол экрана имеет координату x=0 и y=0.

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

Координата Y задается сверху вниз. Т.е. чем больше Y, тем ниже точка.

Максимальные X это ширина окна. Максимальное Y это высота окна.

графический режим в си с

Задание цвета изображения в Си

Чтобы задать цвет изображаемого объекта, используется оператор setcolor(номер цвета);

Таблица цветов в Си.

0 черный
1 синий
2 зеленый
3 морской волны
4 красный
5 фиолетовый
6 коричневый
7 светло-серый
8 темно-серый
9 светло-синий
10 светло-зеленый
11 светлый морской волны
12 светло-красный
13 светло-фиолетовый
13 светло-фиолетовый
14 желтый
15 белый

setcolor(4) ;// устанавливаем красный цвет

Отображение точки в Си.

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

putpixel (x, y, номер цвета );

x, y – координаты точки

номер цвета – цвет, которым будет отображена точка

Отображение линии в Си

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

x1, y1 – координаты одного конца отрезка

x2, y2 – координаты другого конца отрезка

Отображение окружности в Си

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

x, y – координаты центра окружности

r- радиус окружности

Пример. Отображение окружности белого цвета с центром 100, 100 и радиусом 20.

setcolor(15);// устанавливаем цвет рисования 15 — белый

circle(100,100, 20);// рисуем окружность с центром 100, 100 и радиусом 20

Отображение прямоугольника в Си.

Для рисования прямоугольной рамки в графических программах си используется оператор.

rectangle (x1, y1, x2, y2);

x1, y1 – координаты верхнего левого угла прямоугольника

x2, y2 – координаты нижнего правого угла прямоугольника

Чтобы задать цвет рамки необходимо предварительно установить цвет рисования с помощью оператора setcolor(номер цвета);

Для отображения закрашенного прямоугольника в Си используются два оператора.

setfillstyle ( 1, номер цвета );

bar (x1, y1, x2, y2);

x1, y1 – координаты верхнего левого угла прямоугольника

x2, y2 – координаты нижнего правого угла прямоугольника

Закрашивание ограниченной области в Си.

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

setfillstyle (1, цвет закраски );

floodfill (x, y, цвет границы области);

x, y – координаты внутри области

цвет закраски – цвет , которым будет закрашиваться область

цвет границы области – цвет границы закрашиваемой области

Пример закрашенного кругав графических программах си

setcolor(15);// устанавливаем цвет рисования 15 — белый

circle(100,100, 20);// рисуем окружность с центром 100, 100 и радиусом 20

setfillstyle ( 1, 15 ); // устанавливаем цвет заполнения круга белый -15

floodfill (100, 100, 15); // заполняем окружность, указывая точку внутри ее – центр

Пример графической программы на си

Пример программы 17 графическая программа на си рисует автомобиль.

#include
#include
main()
initwindow(500, 500);// инициализируем графическое окно
// рисуем кузов
setfillstyle (1,4 ); // устанавливаем вид заливки 1 -полный, цвет заливки 4 — красный
bar(100, 150, 200, 170);// закрашенный прямоугольник нижняя часть кузова
bar(120, 150, 170, 130);// закрашенный прямоугольник верхняя часть кузова
// рисуем колеса
setcolor(15); // устанавливаем цвет колеса
circle(120, 170, 10); // левое колесо окружность ниже кузова
circle(170, 170, 10); // правое колесо окружность ниже кузова
setfillstyle (1,8); // устанавливаем вид заливки полный — 1 цвет серый — 8
floodfill(120,170,15); // закрашиваем круг левого колеса до границы круга цветом 15
floodfill(170,170,15); // закрашиваем круг левого колеса до границы круга цветом 15
getch(); // ждем нажатия кнопки
closegraph(); // выход из графического режима
>

рисунок на си

Вернуться к содержанию Перейти к следующему уроку Случайные числа в Си

Программа на си для построения графика функции

В этой статье мы разберем программу на языке программирования си для построения графиков функций. В нашей программе будут отражаться система координат с делениями и подписями на них и будут строиться графики двух функций, который может сам задать пользователь.
В программе на си для построения графика функции вводятся следующие константы
X0 , Y0 — координаты центра координат
k – масштаб одного деления на осях (сколько пикселов в одном делении)
Опишем все функции и процедуры используемые в программе для построения графиков функций
Подробно о задании функций и процедур в си
int osx (float x) переводит реальную координату на оси ox в координату экрана
int osy (float y) переводит реальную координату на оси oy в координату экрана
float F1 ( float x ) и float F2 ( float x ) задают функции , графики которых мы будем строить
void Point ( float x, float y, int color ) рисует точку графика функции на экране
Перед построением графиков функций необходимо построить систему координат. Для построения системы координат используется процедура
void Axes()
В этой процедуре в цикле for рисуются линии меток делений на равном расстоянии друг от друга, который определяется масштабом одного деления k и выводятся значения делений с помощью двух операторов
sprintf ( s, «%d», i ); // записываем в строковую переменную число деления
outtextxy ( xe-10, Y0+4, s ); // вывод числа
Процедура grafik1() и grafik2() строят графики функций f1 и f2
В этих процедурах в цикле for для всех доступных значений x определяется координата y и точка графика строится с помощью процедуры point()

Пример работы программы построения графиков на си, функции пользователь может менять

графики функций на си

Программа на си для построения графиков функций
#include
#include //графический режим
#include // математические функции

//————————————————
const int X0 = 100, Y0 = 400;// координаты центра координат
const float k = 15;// масштаб в точках одного деления на графике
//——————————————
// перевод y в координаты экрана
//——————————————
int osx (float x)
return X0+k*x;
>
//——————————————
//перевод y в координаты экрана
//——————————————
int osy (float y)
return Y0-k*y;
>
// первая функция
float F1 ( float x )
return sqrt(2*x);
>
// вторая функция
float F2 ( float x )
return x*x/2;
>
// построение осей
void Axes()
int i, xe,ye,y1;
char s[10];
line ( X0, 0, X0, 599 ); // ось ox
line ( 0, Y0, 799, Y0 ); // ось oy
// метки на оси ox
for ( i = 1; i xe = osx ( i );
line ( xe, Y0-2, xe, Y0+2 ); // рисуем деление разметки
sprintf ( s, «%d», i ); // записываем в строковую переменную число деления
outtextxy ( xe-10, Y0+4, s ); // вывод числа
>
// метки на оси oy
for ( i = 1; i ye = osy( i+1 );
line ( X0-2, ye, X0+2, ye ); // рисуем деление
sprintf ( s, «%d»,i ); // записываем в строковую переменную число деления
outtextxy ( X0+10, ye+4, s ); // вывод числа
>
>
// построение точки графика функции
void Point ( float x, float y, int color )
int xe, ye;
xe = osx(x);
ye = osy(y);
if ( xe >= 0 && xe < 800 && ye >= 0 && ye < 600 )
putpixel(xe, ye, color);
>
// построение графика первой функции
void grafik1()
float x, h, xmin, xmax;
h = 1 / k;
xmin = (-X0)/ k;
xmax=(800-X0)/k;
for ( x = xmin; x Point(x, F1(x), WHITE);
>
>
// построение графика второй функции
void grafik2()
float x, h, xmin, xmax;
h = 1 / k;
xmin = (-X0)/ k;
xmax=(800-X0)/k;
for ( x = xmin; x Point(x, F2(x), WHITE);
>
>
// главная программа
main ()
initwindow ( 800, 600 ); // создать окно для графики
Axes(); // построение и разметка осей координат
grafik1(); // строим график первой функции
grafik2(); // строим график второй функции
getch(); // ждать нажатия на клавишу
closegraph(); // закрыть окно для графики
>
Полезно почитать по теме построение графиков функций в программа си
Графика в си
Процедуры и функции в си

Комментарии ( 0 )

Нет комментариев. Ваш будет первым!

Построение графика функции

Разработать программу для построения графика функции у = 2*sinx*e^4/5 . Считать из файла х функции. График функции построить в интервале от -50 до 50. Результатом работы программы будут считаться два массива, которые содержат значения промежуточные значения x и y для интервала [-50; 50]. Возможно кто-то сможет построить график по этим значениям, это будет еще лучше.

К сожалению, решения данной задачи пока нет. Если Вы решили эту задачу, сообщите нам, и мы выложим её на сайте.

Следующие статьи помогут вам в решении данной задачи:
Дата: 13.01.2014
Поделиться:

Комментарии

Ihor Lokki

08.03.2015 Решение с использованием OpenGl:

#include #include #include #include #include #include int count = 0; // Размер масива У,Х float* X; // масив для хранение х-ов float* Y; // масив для хранения у-ов void display() < // Функция перерисовки дисплея glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINES); glColor3f(1.0, 0.0, 0.0); glVertex3f(0, 50, 0); // Рисование системи координат glVertex3f(0, -50, 0); glVertex3f(-50, 0, 0); glVertex3f(50, 0, 0); for(int i = -11; i < 8; i++)< glVertex3f(10 + i * 5, -2, 0); glVertex3f(10 + i * 5, 2, 0); >for(int i = -11; i < 8; i++)< glVertex3f(-2, 10 + i * 5, 0); glVertex3f(2, 10 + i * 5, 0); >// Конец рисования системы крдинат glEnd(); glBegin(GL_POINTS); // Рисование точок графика функции float y; for(int i = 0; i < count; i++)< glVertex3f(X[i], Y[i], 0); >glEnd(); glutSwapBuffers(); > int main(int argc, char** argv) < std::vectorarr; // Вектор в котором будем хранить даные из файла std::ifstream fin; // Для вивода даних из файла std::string path; // Путь к файлу do< // Цикл который обеспечывает открития файла std::cout>path; fin.open(path.c_str()); if(!fin.is_open()) < std::cout>while(!fin.is_open()); float i = 0.0; while(!fin.eof())< // Запись даних из файла в вектор fin>>i; arr.push_back(i); > fin.close(); for(int j = 0; j < arr.size(); j++)< // Цикл для подсчота х-ов в диапазоне if(arr[j] >-50.0 && arr[j] < 50.0) // [-50;50] < count++; >> X = new float[count]; // Создание масива с х Y = new float[count]; // Создание масива с У int n = 0; for(int j = 0; j < arr.size(); j++)< // Цыкл для записи даних(х) указаного if(arr[j] >-50.0 && arr[j] < 50.0)< // диапазона в масив Х X[n] = arr[j]; n++; >> for(int j = 0; j < count; j++)< Y[j] = 2*sin(X[j])*pow(M_E,4/5); // Заполнение масива У >// Стандартное создание окна в OpenGl glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(400, 400); glutInitWindowPosition(20, 810); glutCreateWindow("Rownanie"); glClearColor(0, 0, 0, 0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-55, 55, -55, 55, -100, 100); glutDisplayFunc(display); glutMainLoop(); delete [] X; delete [] Y; >
Sancho

Оставить комментарий

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

�� Rust Journey: Хотите освоить язык программирования, который завоевывает мир?

�� Илон Маск, один из ведущих инноваторов нашего времени, утверждает, что за Rust будущее. А когда последний раз он ошибался в своих прогнозах? ��

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

Построение графика функции на языке C?

Добрый день, подскажите как максимально просто построить график функции средствами языка C?

#include #include int main() < float x, y, z, step; printf("input x:\n"); scanf("%f", &x); printf("Input y:\n"); scanf("%f", &y); printf("input step:\n"); scanf("%f", &step); printf("result:\n"); for(int i = 0; i < 32; i++) < z = (sin(x)+cos(y))/(cos(x)-sin(y))*tan(x*y); printf("%.2f\t %f\n", x, z); x += step; >>

5a9ba82c11315920922107.jpeg

В итоге чтобы получить что то максимально похожее на график из Excel:

  • Вопрос задан более трёх лет назад
  • 6199 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *