2012-10-15 4 views
3

Voici un cadre statique d'une animation atomique sur laquelle je travaille en JavaScript, modélisée this image.Comment déterminer la moitié d'un trajet elliptique sur lequel un point est actuellement activé?

enter image description here

Voici le code utilisé pour déterminer la position d'un électron sur son orbite en fonction du temps:

// 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); 

Ce que je voudrais faire est de placer l'électron ci-dessus la noyau lorsque sur la partie orange du chemin, et ci-dessous le noyau au cours du segment vert.

Lorsque this.timer.delta() == 0, l'électron est à l'extrémité extrême droite, puis se déplace dans le sens antihoraire.

Je suis à la recherche de l'aide avec les deux choses suivantes:

1) Trouver le point dans le temps où l'électron sera à l'extrême gauche de son orbite.

2) Déterminer la moitié de la trajectoire actuelle d'un électron à un moment donné.

Idéalement, les solutions devraient fonctionner quelle que soit la valeur de this.speed (multiplicateur de nombre pour accélérer ou ralentir l'animation).

Répondre

4

Tout dépend de l'angle - et l'angle est cette partie dans l'expression:

this.timer.delta() * this.speed 

Ainsi, vous pouvez simplement déterminer si l'angle est compris entre zéro et PI - et si elle est - le noyau est "devant".

Bien sûr, le simple fait de vérifier si y est non négatif fait le même tour.

+0

Merci beaucoup. Cette réponse était plus simple que ce à quoi je m'attendais, mais c'était exactement ce dont j'avais besoin. :) – Joncom

+0

+1: Simple, explicatif, concis. –

Questions connexes