Ellipsoid trong GraphicsComplex

Sep 23 2020

Tôi đang cố gắng sử dụng Ellipsoidtrong a GraphicsComplexvà tôi bị mắc kẹt. Sự hiểu biết của tôi GraphicsComplexlà các phép gán tọa độ điểm rõ ràng được thay thế bằng các giá trị số nguyên trỏ đến một danh sách các tọa độ.

Vì vậy, thay vì

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

tôi có thể sử dụng

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

thay thế. Lưu ý rằng đối số đầu tiên của Spheređược thay thế bằng điểm đầu tiên từ danh sách, tức là {0,0,0} trong khi đối số thứ hai được xác định chính xác là bán kính (không phải tọa độ) và không được thay thế bằng {0,0,0}.

Nếu tôi sử dụng Ellipsoidthay thế, vì vậy thay vì

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

tôi sử dụng

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

Tôi gặp lỗi:

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

và

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

Hai câu hỏi: tôi có sử dụng GraphicsComplexsai không? và có cách giải quyết đơn giản nào để cấp dữ liệu Ellipsoidcho một GraphicsComplexkhông?

Trả lời

2 CarlWoll Sep 22 2020 at 23:59

Lưu ý rằng Ellipsoidđược hiển thị bằng cách sử dụng ẩ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 }}], Ellipsoid [{1, 1, 1}, {2, 3, 4}]]]

Về cơ bản, một hình cầu tại điểm gốc được dịch và biến đổi GeometricTransformation3DBoxđể nó trông giống như mong muốn Ellipsoid. Bây giờ, lưu ý rằng tâm của Ellipsoidlà một phần của đối số biến đổi. Thật không may, GraphicsComplexchỉ có thể xử lý các chỉ số tọa độ khi chúng ở bên trong một đồ họa nguyên thủy bình thường, trong trường hợp này là bên trong SphereBox. Đây là lý do GraphicsComplexcủa Ellipsoidkhông hoạt động. Xem xét GraphicsComplexphiên bản tương ứng :

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

Nếu GraphicsComplex3DBoxcó thể hiểu rằng 1bên trong GeometricTransformation3DBoxđại diện cho điểm {1, 1, 1}thì nó sẽ hiển thị đúng. Tuy nhiên, thật khó để tìm ra những phần nào của một danh sách như vậy tương ứng với một điểm, và do đó, GraphicsComplex3DBoxbỏ cuộc.