GraphicsComplexの楕円体

Sep 23 2020

で使用しようとしていますEllipsoidが、GraphicsComplex行き詰まっています。私の理解でGraphicsComplexは、明示的なポイント座標の割り当ては、代わりに座標のリストを指す整数値に置き換えられます。

だから代わりに

 Graphics3D[Sphere[{0, 0, 0}, 1]]

使うことができます

 Graphics3D[GraphicsComplex[{{0, 0, 0}}, Sphere[1, 1]]]

代わりに。の最初の引数はSphereリストの最初のポイント、つまり{0,0,0}に置き換えられますが、2番目の引数は半径(座標ではなく)として正しく識別され、{0,0,0}に置き換えられないことに注意してください。

Ellipsoid代わりに使用する場合は、代わりに

Graphics3D[Ellipsoid[{0, 0, 0}, {2, 3, 4}]]

私が使う

Graphics3D[GraphicsComplex[{{0, 0, 0}}, Ellipsoid[1, {2, 3, 4}]]]

エラーが発生します:

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}.

そして

Coordinate index 0 is out of range for the enclosing GraphicsComplex.

2つの質問:GraphicsComplex間違って使用しますか?・飼料への簡単な回避策があるEllipsoidとSはGraphicsComplex?

回答

2 CarlWoll Sep 22 2020 at 23:59

これEllipsoidは、内部を使用GeometricTransformationしてレンダリングされることに注意してください。

ToBoxes @ Graphics3D[Ellipsoid[{1,1,1}, {2,3,4}]]

Graphics3DBox [InterpretationBox [GeometricTransformation3DBox [SphereBox [{0、0、0}]、{{{2、0、0}、{0、3、0}、{0、0、4}}、{1、1、1 }}]、楕円体[{1、1、1}、{2、3、4}]]]

基本的に、原点の球は、によって変換および変換されGeometricTransformation3DBox、目的のように見えますEllipsoid。ここで、の中心がEllipsoid変換引数の一部であることに注意してください。残念ながら、GraphicsComplex座標インデックスは、通常のグラフィックプリミティブの内部、この場合はの内部にある場合にのみ処理できSphereBoxます。これが、のGraphicsComplexがEllipsoid機能しない理由です。対応するGraphicsComplexバージョンを検討してください。

ToBoxes @ Graphics3D[GraphicsComplex[{{1,1,1}}, Ellipsoid[1, {2, 3, 4}]]]

Graphics3DBox [GraphicsComplex3DBox [{{1、1、1}}、InterpretationBox [GeometricTransformation3DBox [SphereBox [{0、0、0}]、{{{2、0、0}、{0、3、0}、{0、 0、4}}、1}]、Ellipsoid [1、{2、3、4}]]]]

内部がポイントを表しGraphicsComplex3DBoxていることを理解できれば、適切にレンダリングされます。ただし、そのようなリストのどの部分がポイントに対応するかを理解するのは難しいため、あきらめます。1GeometricTransformation3DBox{1, 1, 1}GraphicsComplex3DBox