Вращение элемента по кругу на javascript

Да-да. Иногда приходится вспоминать школьный курс и жалеть о том, что мы гнули пальцы на уроках геометрии, говоря, что геометрия нам больше не пригодится.
Вращение элемента по кругу на javascript

Суть в следующем. У нас имеется div, с position:relative и допустим span с position:absolute, который нам надо пустить по кругу

В моем случае надо было пустить по тарелочке яблочко.

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

var radius = 60;	
	
var x_0 = 78;
var y_0 = 78;

Мы получили координаты центра нашей окружность. Пусть также у нас будет стартовый угол в 0 градусов, впишем и его: var deg = 0;

Затем с полученными данными получим координаты x и y нашей будущей точки.

var x = x_0 + radius*Math.cos(deg);
var y = x_0 + radius*Math.sin(deg);

С полученными значениями уже можно работать, но лучше будет у полученных значений отнять половину ширины и высоты элемента. Можете высчитывать, можете просто вручную вписать нужные значения

x = x - 26;
y = y - 26;

И все что остается, прописать новые значения нашему элементу:

var apple = $('#lk_bonus_header .balans .apple');

apple.css('left', x);
apple.css('top', y);

Оформляем полученный результат в готовую функцию.

function rotate_apple(deg = 0){
	
	var radius = 60;	
	
	var x_0 = 78;
	var y_0 = 78;
	
	var x = x_0 + radius*Math.cos(deg);
	var y = x_0 + radius*Math.sin(deg);
	
	var apple = $('#lk_bonus_header .balans .apple');
	
	x = x - 26;
	y = y - 26;
	
	apple.css('left', x);
	apple.css('top', y);	
}

И все, что остается, использовать ее в setInterval

var deg = 0;

var animate_apple_rotate = setInterval(function(){
	
	deg = deg + 0.1;
	
	if( deg == 360 ) deg = 0;
	
	rotate_apple(deg);
}, 50);