|
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
|
||||||
Динамическое изображение: астроида04.06.2019, 23:28. Показов 6199. Ответов 30
Метки нет (Все метки)
Здравствуйте. Я написал код для рисования графика астроиды. Может кто-то поможет дописать код, чтобы астроида рисовалась постепенно (зайдите на Википедию, страница "Астроида", справа есть gif-изображение). Нужно точно так же. Был бы очень благодарен, если для кого-то это пустяки, а то я даже примерно не представляю, как это сделать. Код графика прилагаю.
0
|
||||||
| 04.06.2019, 23:28 | |
|
Ответы с готовыми решениями:
30
динамическое изображение маятника
|
|
Модератор
|
||
| 05.06.2019, 06:38 | ||
|
0
|
||
|
Супер-модератор
|
||||||
| 05.06.2019, 11:44 | ||||||
Сообщение было отмечено Allekk как решение
Решение
Набирал прямо здесь, так что извиняй, если что не так - ошибки, если будут, поправишь...
2
|
||||||
|
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
|
|
| 05.06.2019, 14:55 [ТС] | |
|
Спасибо огромнейшее тебе, очень помог, теперь буду разбираться и немного корректировать под свои нужды. Можно пару вопросов. Можно ли каждый раз менять размерность, а радиус R вводить самому в Edit? Какая переменная отвечает за радиус R? И можно ли сделать так, чтобы он рисовал не сразу при открытии формы, а при введении радиуса в Edit и нажатии на кнопку Button?
0
|
|
|
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
|
||||||
| 05.06.2019, 16:07 [ТС] | ||||||
|
volvo, а вы случайно не знаете, что нужно изменить здесь, чтобы он рисовал кардиоиду, циклоиду и конхоиду. До этого я пользовался параметрическими уравнениями прямо в коде и просто изменял их каждый раз, а тут не совсем понятна зависимость этих углов для построения фигур.
0
|
||||||
|
Супер-модератор
|
||
| 05.06.2019, 17:36 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
|
|
| 05.06.2019, 18:46 [ТС] | |
|
volvo, ну ладно, буду пробовать разбираться
0
|
|
|
place status here
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
|
|
| 08.06.2019, 10:40 | |
|
0
|
|
|
place status here
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
|
||||||
| 09.06.2019, 16:10 | ||||||
|
Кардиоида:
Конхоиду прямой [Никомеда] попробуй построить сам, используя параметрическое представление (http://know.sernam.ru/dict_math.php?id=518): Если же нужна конхоида окружности (улитка Паскаля - https://ru.wikipedia.org/wiki/... 0%BB%D1%8F), то она строится подобно кардиоиде (с некоторой поправкой).
1
|
||||||
|
place status here
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
|
||||||
| 09.06.2019, 20:13 | ||||||
|
Гипоциклоида https://ru.wikipedia.org/wiki/... 0%B4%D0%B0 (при k = 4 получаем астроиду):
1
|
||||||
|
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
|
||||||
| 10.06.2019, 20:48 [ТС] | ||||||
|
gunslinger, спасибо огромнейшее) Ну тут уж более понятней, тут по параметрическому уравнению строится) А то в прошлой программе надо полгода разбираться, а у меня нет ни времени, ни желания. Я уже плюнул и в GeoGebra сделал по туториалам с YouTube. Но сдать ещё не успел. Тем более конхоиду Никомеда я там не нашёл. Может попробую всё-таки в билдере сделать заново всё, теперь желание загорелось)
Добавлено через 2 часа 34 минуты gunslinger, я написал код системы координат. Вставляю код в таймер ниже вашего кода, тогда система координат моргает постоянно. Это логично, ведь там стоит Refresh() Но как сделать так, чтобы система координат не моргала и оставалась неподвижной, а таймер рисовал изображение как обычно. Чтобы даже внутри неподвижной окружности система координат была видна тоже и не моргала тоже. Куда нужно вставить мой код? Уже пробовал разные варианты. И в кнопку, по нажатию которой активируется таймер, вставлял. Но тогда она вообще не видна. И в FormPaint, и в FormActivate, и в FormCreate, тоже ничего. И до вашего кода и Refresh(), тоже толку ноль.
0
|
||||||
|
place status here
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
|
|||||||||||
| 10.06.2019, 21:26 | |||||||||||
|
Про моргания я в курсе (мой код лишь набросок). Чтобы это как-то минимизировать, перерисовывать нужно не всю получающуюся кривую, а просто добавлять точки на "незатираемой" канве того же PaintBox-а и перерисовывать радиус-вектор. А движущуюся окружность рисовать не на канве, а использовать объект Shape и двигать его.
Когда кривая начинает повторяться, обновлять (затирать) изображение (и потом рисовать его снова). Например, очищать можно так (для Image; для PaintBox аналогично):
Пример сетки:
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
|
|
| 10.06.2019, 23:21 [ТС] | |
|
gunslinger, ещё у вас код циклоиды немного неправильный. Он не рисует циклоиду, а рисует прямую линию. Окружность не катится по прямой, а просто плывёт.
Кликните здесь для просмотра всего текста
https://www.cyberforum.ru/attachment.php?attachmentid=1047193&stc= 1&d=1560192612
Добавлено через 1 час 30 минут gunslinger, отбой, это я тупанул, забыл Math.hpp подключить
0
|
|
|
place status here
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
|
||||||
| 10.06.2019, 23:24 | ||||||
|
Нормально там рисуется.
А насчет решения проблемы мерцания (только в конце точки затираются линией, нужно подумать, как исправить):
0
|
||||||
|
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
|
|||||||||||
| 11.06.2019, 00:45 [ТС] | |||||||||||
|
Круто. Я ещё попробовал интервал увеличить. Немного помогло, почти не моргает.
А для эпициклоиды поможете пару значений поменять в коде в таймере. Сам код уже я подкорректировал уже. Вот он.
0
|
|||||||||||
|
place status here
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
|
|||||||||||
| 11.06.2019, 12:47 | |||||||||||
|
Ты все равно идешь своим путем... Как знаешь...
Тем не менее, подправил код, кардиоида не мерцает и рисуется полностью:
Нужно включить немного мозги. Достаточно понимания простейшей геометрии и тригонометрии. попробуй сам прийти к подобному коду
[Вангую] Следующим этапом тебе понадобится какая-нибудь [эпи] [гипо] трохоида? А потом еще что-нибудь? Я, конечно, люблю "всякую ерунду" с помощью билдера рисовать, но стараюсь (не всегда успешно, к сожалению) этим сильно не злоупотреблять (когда нет спортивного интереса, делать полностью за других мне уже не так сильно хочется, как раньше). А для твоей конхоиды, скорей всего, нужен другой поход. Насчет отрезка не знаю, еще по этому поводу не думал.
0
|
|||||||||||
|
place status here
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
|
|
| 11.06.2019, 14:01 | |
|
В качестве примера: Построение конхоиды Никомеда по параметрическому представлению.
0
|
|
|
0 / 0 / 0
Регистрация: 04.06.2019
Сообщений: 16
|
|
| 11.06.2019, 19:01 [ТС] | |
|
gunslinger, нет, больше ничего не надо, к счастью. Всего 5 кривых надо. Спасибо большое ещё раз, вы мне очень помогли, я в принципе красиво оформил уже астроиду, кардиоиду и циклоиду, осталось только динамическое изображение эпициклоиды и конхоиды. Эпициклоиду сейчас я сделаю, осталась конхоида, надо её динамически как-то нарисовать.
P.S. Забавный факт, если делать одну программу (одно exe-приложение) с выбором кривой по кнопке на главной форме и переходом на другие формы, то астроида рисуется нормально, а вот кардиоида и циклоида не рисуются, а на форме происходит какая-то ерунда. Отрезки просто тянутся, кривые не рисуются. Но если делать отдельный проект для каждой кривой (для каждой кривой своё exe-приложение), то кривые рисуются нормально и как положено. Код везде абсолютно одинаковый, проверял несколько раз каждый символ в коде. Даже не знаю, с чем это может быть связано. Но я сделал разные приложения для каждой кривой, мне по сути не принципиально. Просто привык уже к первому варианту, а тут так получилось забавно. Хорошо, что додумался отдельно проверить, создав новый проект.
0
|
|
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
||
| 11.06.2019, 20:22 | ||
|
0
|
||
| 11.06.2019, 20:22 | |
|
Помогаю со студенческими работами здесь
20
Кривая астроида Напишите программу, которая выводит динамическое изображение маятника, совершающего колебания
Opengl, Астроида (c++, delphi) График функции ”Астроида” Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2.
Номеклатура. . .
|