Comment calculer le centre d'une ellipse de deux points et de rayon tailles
Tout en travaillant sur SVG mise en œuvre pour Internet Explorer fondés sur sa propre VML format je suis venu pour un problème de traduction d'une SVG d'arc elliptique à une VML arc elliptique.
Dans VML un arc est donnée par: deux angles de deux points de l'ellipse et de la longueur des rayons,
En SVG un arc est donnée par: deux paires de coordonnées de deux points sur l'ellipse et de tailles de l'ellipse boîte de frontière
Donc, la question est: Comment exprimer les angles de deux points sur l'ellipse de deux paires de leurs coordonnées.
Intermédiaire en question pourrait être: Comment trouver le centre d'une ellipse par les coordonnées d'une paire de points sur la courbe.
mise à Jour: nous allons avoir une condition préalable à dire qu'une ellipse est normalement placé (ses rayons sont parallèles au système de coordonnées linéaires de l'axe), donc pas de rotation est appliquée.
mise à Jour: Cette question n'est pas liée à svg:élément ellipse, plutôt "un" arc elliptique de commande en svg:élément du chemin (SVG Chemins: L'arc elliptique de la courbe de commandes)
Vous devez vous connecter pour publier un commentaire.
Donc la solution est ici:
La paramétrées formule d'une ellipse:
Mettons connu coordonnées de deux points:
Maintenant, nous avons un système d'équations avec 4 variables: le centre de l'ellipse (x0/y0) et deux angles t1, t2
Nous allons soustraire équations afin de se débarrasser des coordonnées du centre:
Cela peut être réécrite (avec produit-somme des identités formules) que:
Nous allons remplacer certains des équations:
Alors nous obtenons les équations simples du système:
Divisant première équation par seconde produit:
L'ajout de ce résultat à la première équation donne:
Ou, simple (à l'aide de compositions de trigonométriques et trigonométriques inverses des fonctions):
ou encore plus simple:
Maintenant la période initiale de quatre-système d'équations peut être résolu facilement et sous tous les angles ainsi que eclipse les coordonnées du centre peut être trouvé.
r2
à l'intérieur de lasqrt
se débarrasse de son signe, donne de mauvais résultats pour certains cas!La courbe elliptique arc lien que vous avez posté comprend un lien vers arc elliptique notes de mise en œuvre.
Là, vous trouverez les équations pour la conversion de point de terminaison pour le centre de paramétrage.
Voici mon code JavaScript de la mise en œuvre de ces équations, prises de une démonstration interactive de l'arc elliptique chemins, à l'aide de Sylvester.js pour effectuer la matrice et vecteur de calculs.
Une ellipse ne peut pas être définie par deux points. Même un cercle (un spécial tubé ellipse) est défini par trois points.
Même avec trois points, vous auriez infini ellipses passant par ces trois points (pensez: rotation).
Notez qu'une boîte englobante suggère un centre de l'ellipse, et plus probablement suppose que ses axes majeurs et mineurs sont parallèles à l'axe x et y (ou y,x) axes.
L'intermédiaire question est assez facile... vous n'avez pas. - Vous le centre d'une ellipse à partir de la boîte englobante (à savoir, le centre de la boîte est le centre de l'ellipse, aussi longtemps que l'ellipse est centrée dans la boîte).
Pour votre première question, je regarderais la forme polaire de l'ellipse d'équation, qui est disponible sur Wikipédia. Vous devrez travailler sur l'excentricité de l'ellipse ainsi.
Ou vous pourriez brute force les valeurs de la boîte englobante... pour savoir si un point est sur l'ellipse et correspond à l'angle, et de parcourir chaque point dans la boîte englobante.