С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 13.10.2013
Сообщений: 29
1

Анимация движения шарика по параболе

02.04.2015, 16:37. Показов 4025. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите написать программу для движения шарика с регулируемой скоростью . График функции у = х*х

Пример работы(но он работает неправильно):
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
103
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Text;
using System.Text;
using System.Windows.Forms;
 
namespace Graphic
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public void DrawGraphic()
        {
            int t, z, t0, z0;
            GenericFontFamilies a = new GenericFontFamilies();
            FontFamily FF = new FontFamily(a);  
            Font f = new Font(FF,12);
            Gr = Graphics.FromImage(Ball);
            Gr.DrawString("^y", f, black_br, 244, -3);
            Gr.DrawString(">", f, black_br, 488, 141);
            Gr.DrawString("x", f, black_br, 490, 150);
            Gr.DrawLine(black_p, 250, 0, 250, 300);
            Gr.DrawLine(black_p, 50, 150, 500, 150);
            t0 =50;
            z0 = 160;
            for (t = t0; t < 500; t++)
            {
                z = Convert.ToInt16(x*x);
                Gr.DrawLine(black_p, t0, z0, t, z);
                t0 = t;
                z0 = z;
            }
        }
        Graphics Gr;
        Bitmap Ball = new Bitmap(500, 300);
        SolidBrush black_br = new SolidBrush(Color.Blue);
        SolidBrush control_br = new SolidBrush(Color.FromKnownColor(KnownColor.Control));
        SolidBrush green_br = new SolidBrush(Color.Red);
        Pen black_p = new Pen(Color.Blue);
        Pen red_p = new Pen(Color.Red);
        int x, y, x0, y0;
 
        private void button1_Click(object sender, EventArgs e) 
        {
            x0 = 10;
            y0 = 10;
            x = x0;
            switch (trackBar1.Value) //задание скорости
            {
 
                case 1: timer1.Interval = 250; break;
                case 2: timer1.Interval = 200; break;
                case 3: timer1.Interval = 150; break;
                case 4: timer1.Interval = 100; break;
                case 5: timer1.Interval = 50; break;
                case 6: timer1.Interval = 1; break;
 
            }
            timer1.Enabled = true;  //начало движения
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            Gr.FillEllipse(control_br, x0 - 10, y0 - 10, 20, 20);       //закрашивание старого положения шарика
            x++;
            y = Convert.ToInt16(x*x);     //новые координаты
            x0 = x;
            y0 = y;
            DrawGraphic();                                              
            Gr.FillEllipse(green_br, x - 10, y - 10, 20, 20);           //рисование нового положения шарика
            pictureBox1.Image = Ball;
            if (x>520)
                timer1.Enabled=false;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            Gr = Graphics.FromImage(Ball);
            DrawGraphic();
            pictureBox1.Image = Ball;
        }
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
 
        }
 
       
 
        
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2015, 16:37
Ответы с готовыми решениями:

Анимация движения шарика по параболе с затуханием
Нужно сделать графику: движение шарика по параболе с затуханием. Ничего не получается, помогите...

Анимация движения шарика по окружности
Есть программа в которой шарик движется от правой до левой стенки. Нужно переделать программу чтобы...

Анимация движения шарика по пятиконечной звезде
Здравствуйте. Требуется создать анимацию движения шарика по пятиконечной звезде (только линии, не...

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

1
Эксперт .NETАвтор FAQ
10418 / 5148 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
02.04.2015, 19:16 2
Семенова Ольга,
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
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication268
{
    public partial class Form1 : Form
    {
        Func<float, float> function = (x) => -x * x;
        private float time = 0f;
        private TrackBar tb;
 
        public Form1()
        {
            InitializeComponent();
 
            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true);
 
            tb = new TrackBar {Minimum = 5, Maximum = 20, Parent = this};
            Application.Idle += (o, e)=>Invalidate();
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            var dt = tb.Value/4000f;
            var p = VirtualToAbsolute(time, function(time));
            e.Graphics.FillEllipse(Brushes.Green, p.X - 5, p.Y - 5, 10, 10);
 
            var points = new List<PointF>();
            for (var t = 0f; t <= 1; t += dt)
                points.Add(VirtualToAbsolute(t, function(t)));
 
            e.Graphics.DrawLines(Pens.Maroon, points.ToArray());
 
            if (p.X > Height)
                time = 0;
 
            time += dt;
        }
 
        PointF VirtualToAbsolute(float x, float y)
        {
            return new PointF(x * Width, Height / 2 -  y * Height);
        }
    }
}
3
02.04.2015, 19:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2015, 19:16
Помогаю со студенческими работами здесь

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

Динамика движения круга по параболе
динамика движения круга по параболе y=x*x

Написать програму для движения мерцающего круга по эллипсу (анимация движения)
Добрый день,передо мной стоит задача : Написать програму для движения мерцающего круга по...

Динамика движения шарика
динамика движения шарика


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru