Как определить, на какой половине эллиптического пути находится точка в данный момент?

Вот статический кадр из анимации атома, над которой я работаю в JavaScript, смоделированный из этого изображения.

Вот код, используемый для определения положения электрона на его орбите на основе времени:

// Get position along elliptical path.
var x = Math.cos( this.timer.delta() * this.speed ) * ( this.pathWidth / 2 );
var y = Math.sin( this.timer.delta() * this.speed ) * ( this.pathHeight / 2 );

То, что я хотел бы сделать, это поместить электрон над ядром, когда он находится на оранжевой части пути, и под ядром во время зеленого сегмента.

когда this.timer.delta() == 0, электрон находится на крайнем правом конце, и затем продолжает движение против часовой стрелки.

Я ищу помощь в следующих двух вещах:

1) Нахождение момента времени, в который электрон будет находиться в крайнем левом углу своей орбиты.

2) Определение того, на какой половине пути электрон находится в данный момент в данный момент времени.

В идеале решения должны работать независимо от стоимости this.speed (который является множителем для ускорения или замедления анимации).

1 ответ

Решение

Все зависит от угла - и угол - это часть вашего выражения:

this.timer.delta() * this.speed

Таким образом, вы можете просто определить, находится ли угол между нулем и PI - и если это так - ядро ​​находится "впереди".

Конечно, простая проверка, является ли y неотрицательным, делает то же самое.

Другие вопросы по тегам