Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 10

Написать програму для движения мерцающего круга по эллипсу (анимация движения)

12.12.2015, 21:11. Показов 3185. Ответов 5

Студворк — интернет-сервис помощи студентам
Добрый день,передо мной стоит задача : Написать програму для движения мерцающего круга по эллипсу.Проблема в том,что не могу сообразить как составить функцию для движения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include "stdafx.h"
#include "iostream"
#include "stdio.h"
#include "conio.h"
#include "cmath"
#include "Windows.h"
#include "random"
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
int   xr = 400, yr = 400, r = 100, R = 200,RR=15,xr2=400,yr2=200;
 
 
 
void gen_cv(int *r1, int *r2, int *r3)
{
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution  <> dist(0, 255);
    *r1 = dist(gen);
    *r2 = dist(gen);
    *r3 = dist(gen);
}
 
void cls(HDC h)
{
    RECT rr; rr.left = 0;rr.top = 0;rr.bottom = 8140;rr.right = 840;
    HBRUSH rc = CreateSolidBrush(RGB(0, 0, 0));
    FillRect(h, &rr, rc);
}
void circle(HDC h, int RR, int xr2, int yr2, int rgb1, int rgb2, int rgb3)
 
{
    HBRUSH  hbr = CreateSolidBrush(RGB(rgb1, rgb2, rgb3));
    int x1, x2, y1, y2;
    x1 = xr2 - RR;
    y1 = yr2 - RR;
    x2 = xr2 + RR;
    y2 = yr2 + RR;
    SelectObject(h, hbr);
    Ellipse(h, x1, y1, x2, y2);
}
 
 
void ellipse(HDC h, int r, int R, int xr, int yr)
{
    HBRUSH  hbr = CreateSolidBrush(RGB(0, 0, 0));
    int x1, x2, y1, y2;
    x1 = xr - r;
    y1 = yr - R;
    x2 = xr + r;
    y2 = yr + R;
    SelectObject(h, hbr);
    Ellipse(h, x1, y1, x2, y2);
}
 
void dvig1(HDC h, int x1, int x2, int y1, int y2)
{
    int x = x1, y = y2, t = 0, pi = 3.14159265359;
    while (t <= pi)
    {
        x = R* cos (t);
        y = r*cos (t);
            
        cls(h);
        ellipse(h,r,R, xr,  yr);
        int r1, r2, r3;
        gen_cv(&r1, &r2, &r3);
        circle(h, RR, xr2, yr2, r1, r2, r3);
        Sleep(10);
        if (_kbhit()) break;
 
        t = t + 0.1;
    }
}
void dvig(HDC h)
{
    while (!_kbhit())
    {
        if (_kbhit()) break;
        dvig1(h, RR, xr2, yr2);
        //dvig1(h, x2t, x1t, y2t, y1t);
 
    }
 
}
 
int main()
{
    int x, y;
    int u, pi = 3.14, t, phi;
    setlocale(LC_ALL, "russian");
    system("mode con cols=130 lines=50");
 
 
    HDC hDC = GetDC(GetConsoleWindow());
    HPEN Pen = CreatePen(PS_SOLID, 2, RGB(255, 255, 255));
    SelectObject(hDC, Pen);
    dvig(hDC);
 
    system("pause");
    return 0;
}
Добавлено через 1 час 17 минут
+up
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2015, 21:11
Ответы с готовыми решениями:

Анимация движения (найти ошибку)
#include &lt;stdlib.h&gt; #include &lt;iostream.h&gt; #include &lt;graphics.h&gt; // подключение графической библиотеки #define A 120 class...

Написать программу - анимацию для движения стрелок часов
Ребята помогите! анимация, ни одной идеи в голове :cry: Написать программу - анимацию для движения стрелок часов

Анимация движения круга
Здравствуйте! Мне нужно чтобы по круговой рамке по и против часовой стрелки двигался круг. Как можно этот треугольник заменить на круг? ...

5
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
12.12.2015, 22:20
Цитата Сообщение от MisterShelby Посмотреть сообщение
не могу сообразить как составить функцию для движения
Берешь уравнение эллипса в полярных координатах.
Изменяя полярный угол со временем, можно вычислить соответствующий радиус вектор для эллипса - это и текущим центром окружности.
0
0 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 10
12.12.2015, 22:20  [ТС]
пример в коде,если можно
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
12.12.2015, 22:38
Цитата Сообщение от MisterShelby Посмотреть сообщение
пример в коде,если можно
Код это долго.
Берешь некоторый угол относительно оси абсцисс, берешь, например, формулу для радиуса эллипса из вики,
получаешь позицию точки в полярных координатах.
Если не нравятся полярные координаты, тамже есть параметрическое уравнение для эллипса, перебираешь параметр с некоторым шагом, вычисляешь x и y, рисуешь по этим координатам окружность.

Добавлено через 4 минуты
Кстати, в функции dvig1 у тебя как раз что-то похожее на движение для координат x и y сделано.
Тольео формулы для x и y для эллипса возьми из вики.
0
0 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 10
12.12.2015, 23:13  [ТС]
Я делал через параметрическое уравнение,и не могу дать ему движение
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
13.12.2015, 00:41
Цитата Сообщение от MisterShelby Посмотреть сообщение
не могу дать ему движение
У тебя есть переменные x и y, но ты их почему-то нигде не используешь при отрисовке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2015, 00:41
Помогаю со студенческими работами здесь

Составить програму изображения: а)растущего круга; б)движения "кругов на воде"
Составить програму изображения: а)растущего круга; б)движения &quot;кругов на воде&quot;

Рисование движения по эллипсу
Рисую модель обращения планет вокруг Солнца, как сделать чтоб они обращались по эллипсу? Пока для обращения по кругу есть такая функция: ...

Задать ограничения для движения круга
вот код программы: program dvigai_krug_2; uses crt,GraphABC; var a: string; var x,y,r,b,c: integer; begin SetWindowSize(450,...

Составьте программу для описания движения круга
Работа с графикой. 8. Составьте программу для описания движения круга.

Движения круга и прямоугольника в круге
Здравствуйте,мне нужна помощь. Решил сделать программу в которой при нажатии на стрелки,круг и прямоугольник в круге будут двигаться. Когда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен 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, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru