2010-12-03 56 views
-1

Un graphique de ce problème est ici: http://dl.dropbox.com/u/13390614/Question2.jpgEllipse correspondent à un point en modifiant un axe

Prenez un axe ellipse aligné avec un axe fixe, et étirer l'ellipse le long de son axe principal jusqu'à ce que les coïncide Perimiter de l'ellipse avec un point (A dans le graphique). Quelle est la nouvelle longueur de l'axe principal?

Je peux résoudre ce problème lorsque les deux axes doivent être modifiés, mais je suis perplexe lorsqu'un seul axe est modifié.

Toute idée serait appréciée.

Gary

+0

Ceci n'est pas lié à la programmation, du moins pas de la façon dont c'est demandé –

Répondre

1

Tout d'abord, faire semblant l'ellipse est à l'origine de simplifier les choses. Imaginez que ce soit un cercle dont le diamètre est votre petit axe. Quelle serait la largeur du cercle le long de la ligne où y = P y y? De façon équivalente, quel est le x du point sur le diamètre du cercle où y = P y. (Il y a deux solutions à cela: soit vous le ferez, mais il se peut que vous deviez ajuster un signe plus tard.) Vous pouvez calculer ceci en utilisant trig ou le théorème de Pythagore.

Votre grand axe est maintenant l'axe mineur * ((P's x)/x).

0

Un grand merci pour l'aide de Laurence, qui semble fonctionner.

Gary

// Dans le code

Depuis l'ellipse et le point sont alignés axe, le point est un vecteur.

Convertir le point P sur un cercle d'axe mineur en utilisant la longueur d'axe secondaire fixe et la constante .

double y = fabs(P.y); 
double x = sqrt(semiMnrAxLen * semiMnrAxLen - y * y); 
// Calc the new Semi Major Axis length. 
newSemiMajAxis = fabs(semiMnrAxLen * (P.x/x));