Лабораторный практикум по информатике



бет50/83
Дата06.01.2022
өлшемі1,1 Mb.
#15674
түріПрактикум
1   ...   46   47   48   49   50   51   52   53   ...   83

Движение по траектории


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

В случае движения на плоскости обычно изменению подвергает- ся один параметр. Рассмотрим пример реализации движения окруж- ности по декартову листу. Декартов лист – это плоская кривая третьего порядка, удовлетворяющая уравнению в прямоугольной сис- теме x3 + y3 = 3·a·x·y. Параметр 3·a определяется как диагональ квадрата, сторона которого равна наибольшей хорде петли.

При переходе к параметрическому виду получаем:

где t = tg φ.





Рис. 11.1. Декартов лист

Описание ряда интересных кривых для создания траектории дви- жения можно найти в Википедии в статье Циклоидальная кривая2.

Программная реализация выглядит следующим образом:

private int x1, y1, x2, y2; private double a, t, fi;

private Pen pen = new Pen(Color.DarkRed, 2);

private void Form1_Load(object sender, EventArgs e)

{

x1 = ClientSize.Width / 2; y1 = ClientSize.Height / 2; a = 150;



fi = –0.5;

t = Math.Tan(fi);

x2 = x1 + (int)((3 * a * t) / (1 + t * t * t));

y2 = y1 ‐ (int)((3 * a * t * t) / (1 + t * t * t));

}
private void Form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics; g.DrawEllipse(pen, x2, y2, 20, 20);



}
private void timer1_Tick(object sender, EventArgs e)

{





2 https://ru.wikipedia.org/wiki/Циклоидальная_кривая

fi += 0.01;

t = Math.Tan(fi);

x2 = x1 + (int)((3 * a * t) / (1 + t * t * t));

y2 = y1 ‐ (int)((3 * a * t * t) / (1 + t * t * t)); Invalidate();

}



Достарыңызбен бөлісу:
1   ...   46   47   48   49   50   51   52   53   ...   83




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет