GraphicsComplex'te Elipsoid

Sep 23 2020

Ben kullanmaya çalışıyorum Ellipsoidbir de GraphicsComplexben şaşırıp. Anladığım kadarıyla, GraphicsComplexaçık nokta koordinat atamalarının, bunun yerine bir koordinat listesine işaret eden tamsayı değerleriyle değiştirilmesidir.

Yani yerine

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

kullanabilirim

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

yerine. Unutmayın, ilk bağımsız değişken Spherelistedeki ilk nokta ile değiştirilir, yani {0,0,0} ikinci bağımsız değişken yarıçap olarak doğru şekilde tanımlanır (koordinat değil) ve {0,0,0} ile değiştirilmez.

Onun Ellipsoidyerine kullanırsam, bunun yerine

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

kullanırım

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

Bir hata alıyorum:

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

ve

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

İki soru: GraphicsComplexyanlış mı kullanıyorum ? ve Ellipsoids'yi a'ya beslemek için basit bir çözüm var GraphicsComplexmı?

Yanıtlar

2 CarlWoll Sep 22 2020 at 23:59

Kaputun altında Ellipsoidkullanılarak oluşturulduğunu unutmayın 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 }}], Elipsoid [{1, 1, 1}, {2, 3, 4}]]]

Temel olarak, başlangıçtaki bir küre GeometricTransformation3DBox, istenen gibi görünecek şekilde çevrilir ve dönüştürülür Ellipsoid. Şimdi, merkezin Ellipsoiddönüşüm argümanının bir parçası olduğuna dikkat edin. Ne yazık ki, GraphicsComplexkoordinat endekslerini yalnızca normal grafik ilkelinin içindeyken işleyebilir, bu durumda içinde SphereBox. Bu yüzden GraphicsComplexbir Ellipsoidişe yaramaz. İlgili GraphicsComplexsürümü düşünün :

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}], Elipsoid [1, {2, 3, 4}]]]]

Eğer GraphicsComplex3DBoxo anlayabileceği 1iç GeometricTransformation3DBoxnoktasını temsil {1, 1, 1}sonra düzgün hale getirebilir. Ancak, böyle bir listenin hangi bölümlerinin bir noktaya karşılık geldiğini anlamak zordur ve bu yüzden GraphicsComplex3DBoxpes eder.