Je peux penser à deux façons de créer une classe Ellipse.Comment décrire une ellipse adaptée à la 3D (géométrie, rendu, physique), dans n'importe quelle langue
En mathématiques, une ellipse est décrite par deux points focaux et la longueur de l'axe majeur ou semi-majeur.
Une structure typique serait comme ceci:
- Focus 1: Vector3D
- Focus2: Vector3D
- semiMajorAxis: deux
- planeNormal: Vector3D
Cependant, j'ai trouvé c'est sous-optimal, car 99% du temps, je ne me soucie pas vraiment des points focaux.
Il semble plus difficile de déterminer comment croiser des lignes/rayons ou effectuer des projections. Au lieu de cela, je représenterais une ellipse comme un cercle étiré le long d'un vecteur.
La structure serait quelque chose comme ceci:
- centre: Vector3D
- rayon: Double
- stretchVector: Vector3D (l'axe le long duquel le tronçon est appliqué)
- stretchRate: Double
- planeNormal: Vector3D
L'idée est d'effectuer tous les tests/traces/projections comme si c'était fait contre un simple cercle, simplement en mettant à l'échelle les valeurs d'entrée et de sortie avant de les envoyer à mes méthodes de cercle.
Cependant je manque d'expérience dans ce domaine, donc je ne suis pas sûr que l'on est:
- le plus facile à utiliser
- le plus rapide à calculer (il est en 3D, donc J'ai besoin de bonnes perfs)
EDIT: en fait, je besoin ellipse visages volume (section de cylindre, cône sec tion) plutôt que des mouvements. Donc, mon utilisation principale serait de raycast ou de la croiser avec des lignes, des plans, des cercles, d'autres ellipses, etc ...
Pour 3D vous avez également besoin vecteur normal au plan ellipse – MBo
vous pouvez également consulter Outils géométriques/bibliothèque magie sauvage à 'https: //www.geometrictools. com/'et livre'Geometric Tools pour Computer Graphics' pour trouver des approches efficaces – MBo
Oui, je l'ai oublié. Edited;) – cronvel