• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы Denisss
  • Дата начала
D

Denisss

Дорабатывал текст программы для построения в оконном режиме графика функции: link removed cos^5+2sinx, интервал (0;8пи)
Вот вырезка из кода 157 строка: (Тестовый пример построения)
[codebox]for (i=0; i<NUM; i++)
{
pt.x=i*(Nx*StepX)/NUM;
pt.y=(int) ((Ny*StepY)/2*(1-sin(PI*i*8/NUM));= ';[/codebox]

В этом вся промлема, тестовый пример строит, а когда пробую по примеру составить свою функцию:

[codebox]for (i=0; i<NUM; i++)
{
pt.x=i*(Nx*StepX)/NUM;
pt.y=(int) ((Ny*StepY)/(2*(sin(8*PI*i/NUM))+cos...;= ';[/codebox]
NUM=1000
То программа не может это построить.

Помогите пожалуйста это понять и задать, ниже все файлы с проекта. Компилятор Visual Studio.

Посмотреть вложение ____.rar
 
Z

zeus

построение графика это простая задача... ;)

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">для начала нужно найти все точки и вычислить экстремальные точки</div></div><div class="sp-body"><div class="sp-content">
C++:
struct Point2D
{
double x,y;
};

Point2D pt[NUM];
for (int i = 0; i < NUM; ++i)
{
pt[i].x = stepX * i;
pt[i].y = cos(pt[i].x) + 2*sin(pt[i].x);
} // for

double minX, minY, maxX, maxY;
minX = maxX = pt[0].x;
minY = maxY = pt[0].y;
for (int i = 1; i < NUM; ++i)
{
minX = min(minX, pt[i].x);
maxX = max(maxX, pt[i].x);
minY = min(minY, pt[i].y);
maxY = max(maxY, pt[i].y);
} // for
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">затем нарисовать кривую, используя преобразование из декартовых координат в координаты окна</div></div><div class="sp-body"><div class="sp-content">
C++:
int sx = (pt[0].x - minX) * Width / (maxX- minX);
int sy = (pt[0].y - maxY) * Height / (minY - maxY);
moveto(sx, sy); // перемещаем перо в точку (sx,sy)
for (int i = 1; i < NUM; ++i)
{
sx = (pt[i].x - minX) * Width / (maxX- minX);
sy = (pt[i].y - maxY) * Height / (minY - maxY);
lineto(sx, sy); // рисуем линию из тек. положения пера в точку (sx,sy) и перемещаем перо...
} // for
Width и Height соответственно ширина и высота окна...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!