Ellipsoid di GraphicsComplex
Saya mencoba menggunakan Ellipsoiddi GraphicsComplexdan saya terjebak. Pemahaman saya GraphicsComplexadalah bahwa tugas koordinat titik eksplisit diganti dengan nilai integer yang menunjuk ke daftar koordinat sebagai gantinya.
Jadi, bukan
Graphics3D[Sphere[{0, 0, 0}, 1]]
Saya bisa menggunakan
Graphics3D[GraphicsComplex[{{0, 0, 0}}, Sphere[1, 1]]]
sebagai gantinya. Perhatikan, argumen pertama Spherediganti dengan poin pertama dari daftar, yaitu {0,0,0} sedangkan argumen kedua diidentifikasikan dengan benar sebagai radius (bukan koordinat) dan tidak diganti dengan {0,0,0}.
Jika saya gunakan Ellipsoidsebagai gantinya, jadi bukan
Graphics3D[Ellipsoid[{0, 0, 0}, {2, 3, 4}]]
saya menggunakan
Graphics3D[GraphicsComplex[{{0, 0, 0}}, Ellipsoid[1, {2, 3, 4}]]]
Saya mendapatkan kesalahan:
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}.
dan
Coordinate index 0 is out of range for the enclosing GraphicsComplex.
Dua pertanyaan: apakah saya menggunakan secara GraphicsComplextidak benar? dan apakah ada solusi sederhana Ellipsoiduntuk memasukkan s ke GraphicsComplex?
Jawaban
Catatan yang Ellipsoiddiberikan dengan menggunakan GeometricTransformationunder the hood:
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 }}], Ellipsoid [{1, 1, 1}, {2, 3, 4}]]]
Pada dasarnya, sebuah bola di asalnya diterjemahkan dan diubah oleh GeometricTransformation3DBoxsehingga terlihat seperti yang diinginkan Ellipsoid. Sekarang, perhatikan bahwa pusat dari Ellipsoidadalah bagian dari argumen transformasi. Sayangnya, GraphicsComplexhanya dapat menangani indeks koordinat saat berada di dalam grafik primitif normal, dalam hal ini di dalam SphereBox. Inilah sebabnya mengapa GraphicsComplexdari Ellipsoidtidak bekerja. Pertimbangkan GraphicsComplexversi yang sesuai :
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}]]]]
Jika GraphicsComplex3DBoxdapat memahami bahwa bagian 1dalam GeometricTransformation3DBoxmewakili titik {1, 1, 1}maka itu akan ditampilkan dengan benar. Namun, sulit untuk mengetahui bagian mana dari daftar tersebut yang sesuai dengan suatu poin, dan kemudian GraphicsComplex3DBoxmenyerah.