Анимация. Летающий шарик по кругу
Lighting/Colors
Для расчета текущих координат на окружности нам потребуются простейшие тригонометрические функции такие как синус и косинус.
Координата Х = ЦентрХ + Радиус * Косинус (Угол)
Координата Y = ЦентрY + Радиус * Синус (Угол)
Объявим переменные для текущего состояния анимации: angle - текущий угол в градусах для шарика на круге. radius - радиус круга по которому летает объект, circleWidth - радиус отрисовываемого шарика который летает по окружности
double angle = 0;
float radius = 100;
float circleWidth = 10;
Расчитаем центр нашего окна используя ClientSize Далее на каждом шаге отрисовки будет прибавлять +0.5 градуса к текущему положению шарика, если значение угла становится больше 360, то будем вычитать 360 градусов, для этого восползуемся оператором остаток от деления %. Перевод в радианы осуществляется путем домножения градусов на PI/180
var centerX = ClientSize.Width / 2;
var centerY = ClientSize.Height / 2;
angle += 0.5;
angle %= 360;
var radians = angle / 180.0 * Math.PI;
var circleX = (float)(centerX + radius * Math.Cos(radians));
var circleY = (float)(centerY + radius * Math.Sin(radians));
gr.DrawEllipse(Pens.Black, centerX - radius, centerY - radius, radius * 2, radius * 2);
gr.FillEllipse(Brushes.Blue, circleX - circleWidth, circleY - circleWidth, circleWidth * 2, circleWidth * 2);
В дальнейшем движение по кругу используя синус и косинус будет использоваться множество разных. Необходимо знать и понимать как они работают.
Вставив и запустив данный пример мы увидим следующую анимацию:

Исходный код данного примера вы можете найти здесь
Упражнения
- Сделать несколько летающих шариков
- Сделать несколько летающих объектов (шарик, квадратик), с разными цветами и разной скоростью
- Сделать модель планетарной системы. Несколько летающих шариков-планет разного размера и каждый на своей "орбите" с разным радиусом
- Вместо шарика сделать вторую окружность центр которой летает вместо шарика, а шарик сделать летающим по орбите второй окружности