|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
||||||
График параметрической функции (C++)21.01.2019, 18:30. Показов 18492. Ответов 29
Всем привет!
На C++ SFML написал код программы, позволяющей строить графики функций вида y = f(x) и параметрически заданных x = f1(t), y = f2(t). Однако функции параметрические программа строит кривовато (см. скрин). Помогите скорректировать код, чтобы норм. строились функции. Такое ощущение, что дело в угле ang. Принцип построения графиков: ищем точки графика по функции, эти точки соединяем прямоугольниками, которые играют роль линий. У прямоугольника задаём ширину (const), длину (по теореме Пифагора между соседними точками), координаты истока (леволежащая точка) и угол от горизонтали. У меня подозрение на угол, но это не точно. Спасибо тем, кто поможет!
0
|
||||||
| 21.01.2019, 18:30 | |
|
Ответы с готовыми решениями:
29
График параметрической функции График параметрической функции в Scilab Построить график параметрической функции |
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 23.01.2019, 21:51 | |||
|
“Окружность также можно описать с помощью параметрического уравнения:” https://ru.wikipedia.org/wiki/Окружность задаете x0,y0,R, количество точек. Находите шаг угла в радианах и в цикле получаете массив. Обычно строят окружность R=1 в начале координат, так проще видно косяки.
0
|
|||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
||
| 24.01.2019, 09:34 [ТС] | ||
|
У меня было: (Терминалы параметра: от 0 до 12) + (Крупный шаг) Крупный шаг - это для отладки, чтобы лучше было как линии прочерчены. Потом я изменил интервал параметров на правильный, стал уменьшать шаг => увеличилось число точек, окружность стала смыкаться (с уменьшением шага). Нужно: (Терминалы параметра: от 0 до 2 * pi) + (Мелкий шаг) Сейчас наделаю и выложу скринов, на которых можно проследить описанную градацию. А почему он строил несомкнутыми линиями, как будь то штрихами, я про то что на скрине самого вопроса. Потому что я для поиска угла разворота линий, интерполирующих набор точек, использовал asin() вместо atan2(). После замены на atan2() с передачей необходимых аргументов - стало всё отлично строить и обычные и функции заданные параметрически. Я также реализовывал светофильтры, фракталы год назад на C++ SFML. Так вод, часть фракталов также вместо замкнутых линий они штрихами прочерчивались (например, фрактал "Дракон"). Там я использовал как обычно asin(), а он в некоторых случаях угол возвращает такой, что приводит к неверному прочерчиванию линий (без замыкания цепочкой). Если у меня возникнет желание, я там тоже asin() заменю на atan2().
0
|
||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|
| 24.01.2019, 09:35 [ТС] | |
|
Ещё скрины.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||
| 24.01.2019, 15:22 | ||||
|
Шаг радиан=2 пи/ кол-во точек Настоящий атан2 возвращает угол от 0 до пи, а знак укажет выше горизонтали OX или ниже. Во всем мире угол считают против часовой в радианах. Правильно под такие углы со знаком затачивать все алгоритмы т.к. нет бреда типа вычитание Пи это замедляющий костыль. Но SFML лучше! Они похоже считают зачем-то по часовой, во вторых зачем-то в градусах, и от 0 до 360. Сразу 3 косяка. Добавлено через 4 минуты В итоге на ПУСТОМ окне с одним слайдером с кода сделанного из примера по книге FPS плавал в 4 раза + фризы GUI. Переделал код по своему FPS стали стабильны. Похоже эти “Эксперты” читают мышку например 500 раз в сек… Стер Qt к черту
0
|
||||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
||||||||||||||||
| 25.01.2019, 14:55 [ТС] | ||||||||||||||||
t_min = 0; t_max = 2 * pi; step = 0.05; Потом идёт подготовка данных к отрисовке.
0
|
||||||||||||||||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|
| 25.01.2019, 14:57 [ТС] | |
|
Скрин.
0
|
|
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|
| 25.01.2019, 15:09 [ТС] | |
|
Я ещё добавил, можно в полярных координатах строить. Там клевер на скрине.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||
| 25.01.2019, 16:06 | ||||
|
Нужно задать количество из сколько точек строить ломанную, зная пределы параметров находим какой шаг в радиан нужно брать step вычисляют а не задают…что тут сложного? Судя по этому там обязаны быть просто сотни грубейших алгоритмических ошибок самих создателей этой Qt, раз очевидные вещи сделаны криво. Это как дети которые ставят в конфиге игры 999 FPS при максимальных 60 FPS монитора. Поэтому люди и ругают его за лаги GUI. Если не пашет правильно даже жалкий слайдер на пустом окне, о какой скорости работы говорить и зачем терзать это лаговое чудо? Вон у меня в профиле 6 тем на Qt 4.8 предельная версия что пашет. Просил примеры от гуру но ничего =). Хотел рисовать фракталы \ странные аттракторы и любую графику но так и остался на месте…а потом бросил. Нарисовать, двигать, сохранить линию Qt 4.8.4
0
|
||||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|||||||
| 25.01.2019, 17:53 [ТС] | |||||||
0
|
|||||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 25.01.2019, 18:49 | ||
|
А зачем эти велики вообще?
Разве нет готового рисователя кривых\графиков +адаптивное сглаживание + приличный и самый быстрый код умных дядей. Помню написал велик одной функции над массивом понятный мне велик…так человек с форума заюзал какую-то готовую функцию…а там наверно вставки из ассемблера. В общем готовая в 3 раза по скорости была быстрей…недаром хают велики.
0
|
||
| 25.01.2019, 18:49 | |
|
График функции в параметрической форме Как построить график параметрической функции
Написать программу, которая строит график параметрической функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|