Ellipsoïde dans GraphicsComplex
J'essaye d'utiliser Ellipsoiddans un GraphicsComplexet je suis bloqué. À ma connaissance, les GraphicsComplexaffectations de coordonnées de points explicites sont remplacées par des valeurs entières pointant vers une liste de coordonnées à la place.
Donc au lieu de
Graphics3D[Sphere[{0, 0, 0}, 1]]
je peux utiliser
Graphics3D[GraphicsComplex[{{0, 0, 0}}, Sphere[1, 1]]]
au lieu. Notez que le premier argument de Sphereest remplacé par le premier point de la liste, c'est-à-dire {0,0,0} tandis que le deuxième argument est correctement identifié comme rayon (pas de coordonnée) et non remplacé par {0,0,0}.
Si j'utilise à la Ellipsoidplace, alors au lieu de
Graphics3D[Ellipsoid[{0, 0, 0}, {2, 3, 4}]]
j'utilise
Graphics3D[GraphicsComplex[{{0, 0, 0}}, Ellipsoid[1, {2, 3, 4}]]]
J'obtiens une erreur:
Affine transform 1 should be one of the forms {{{xx, yx, zx}, {xy, yy, zy}, {xz, yz, zz}}, {tx, ty, tz}}; {{xx, yx, zx}, {xy, yy, zy}, {xz, yz, zz}}; or {tx, ty, tz}.
et
Coordinate index 0 is out of range for the enclosing GraphicsComplex.
Deux questions: est-ce que je n'utilise GraphicsComplexpas correctement? et y a-t-il une solution de contournement simple pour alimenter Ellipsoids à un GraphicsComplex?
Réponses
Notez que cela Ellipsoidest rendu en utilisant GeometricTransformationsous le capot:
ToBoxes @ Graphics3D[Ellipsoid[{1,1,1}, {2,3,4}]]
Graphics3DBox [InterprétationBox [GeometricTransformation3DBox [SphereBox [{0, 0, 0}], {{{2, 0, 0}, {0, 3, 0}, {0, 0, 4}}, {1, 1, 1 }}], Ellipsoïde [{1, 1, 1}, {2, 3, 4}]]]
En gros, une sphère à l'origine est traduite et transformée par le GeometricTransformation3DBoxpour qu'elle ressemble à celle souhaitée Ellipsoid. Maintenant, notez que le centre de Ellipsoidfait partie de l'argument de transformation. Malheureusement, GraphicsComplexne peut gérer les indices de coordonnées que lorsqu'ils sont à l'intérieur d'une primitive graphique normale, dans ce cas à l'intérieur de SphereBox. Voilà pourquoi GraphicsComplexde Ellipsoidne fonctionne pas. Considérez la GraphicsComplexversion correspondante :
ToBoxes @ Graphics3D[GraphicsComplex[{{1,1,1}}, Ellipsoid[1, {2, 3, 4}]]]
Graphics3DBox [GraphicsComplex3DBox [{{1, 1, 1}}, InterprétationBox [GeometricTransformation3DBox [SphereBox [{0, 0, 0}]], {{{2, 0, 0}, {0, 3, 0}, {0, 0, 4}}, 1}], Ellipsoïde [1, {2, 3, 4}]]]]
Si GraphicsComplex3DBoxje pouvais comprendre que l' 1intérieur GeometricTransformation3DBoxreprésentait le point, {1, 1, 1}alors il rendrait correctement. Cependant, il est difficile de déterminer quelles parties d'une telle liste correspondent à un point, et GraphicsComplex3DBoxabandonne ainsi.