Как определить, на какой половине эллиптического пути находится точка в данный момент?
Вот статический кадр из анимации атома, над которой я работаю в 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 неотрицательным, делает то же самое.