Polyhedron¶
Qualified name: algan.mobs.shapes\_3d.Polyhedron
- class Polyhedron(vertex_coords, faces_list, faces_config=None, graph_config=None, **kwargs)[source]¶
Bases:
MobA solid built from explicit vertices and indexed polygon faces.
This is the flat-sided family of 3-D shapes. Its faces are already planar, so each is triangulated once at construction and nothing is refined per frame – the opposite of the curved
Surface-backed shapes.- Parameters:
vertex_coords – The vertices, shape
(N, 3)in world units. Any nested sequence is cast to a tensor and reshaped, so a list of[x, y, z]lists works.faces_list – One entry per face, each a sequence of indices into
vertex_coordsnaming that face’s corners in order. Faces may have any number of corners; they are triangulated for you.faces_config – Style overrides applied to every face, using Manim’s names –
fill_color,fill_opacity,stroke_width. Defaults toNone(no overrides).graph_config – Retained for Manim compatibility, where it styles the vertex-and-edge graph drawn over the solid. Defaults to
None.**kwargs – Passed to
Mob– notablycolorandlocation.
Examples
A square pyramid from four base corners and an apex:
Example: Example1Polyhedron ¶
from algan import * Polyhedron( [[-0.6, -0.5, -0.6], [0.6, -0.5, -0.6], [0.6, -0.5, 0.6], [-0.6, -0.5, 0.6], [0, 0.7, 0]], [[0, 1, 2, 3], [0, 1, 4], [1, 2, 4], [2, 3, 4], [3, 0, 4]], color=BLUE, ).spawn() Scene.save_video()
Methods
extract_face_coordsget_edgesget_render_primitivesThe faces this Polyhedron draws and the graph it declines to draw.
update_facesAttributes
animation_managerThis mob's scene-owned animation manager.
basisThe Mob's orientation and scale, as a flattened 3x3 matrix of shape
(*, 9).casts_shadowsWhether this Mob's geometry blocks light on its way from a light source to another surface -- whether it casts a shadow.
childrenThe Mobs attached below this one, in attachment order.
closed_shellWhether this Mob's triangles form a CLOSED shell -- every camera ray that enters the geometry crosses a second time on its way out.
get_render_primitivesbelow hands the renderer every face under one_mesh_key, and nothing else -- so the faces are this Mob's internals rather than Mobs of their own, and the vertexDot3D``s and edge Mobs under ``self.graph(kept for Manim parity, wheregraph_configstyles them) are geometry it owns but never puts on screen.forwardGet the direction the Mob is facing.
lifespanThis mob's [spawn, despawn) interval on its Scene timeline (a
Lifespan).locationThe Mob's position in world space, shape
(*, 3).normalized_basisThe Mob's orientation with scale divided out, shape
(*, 9).parentsThe Mobs this one is attached to, in attachment order.
receives_shadowsWhether this Mob's surfaces are darkened by shadows cast onto them.
rightGet the Mob's own rightward direction.
scale_coefficientThe Mob's scale along its own right, up and forward axes, shape
(*, 3).two_sidedWhether this Mob's geometry should be lit from whichever side the ray arrives on.
upGet the Mob's own upward direction.
xThe Mob's x coordinate in world units, shape
(*, 1).xyThe Mob's x and y coordinates in world units, shape
(*, 2).yThe Mob's y coordinate in world units, shape
(*, 1).zThe Mob's z coordinate in world units, shape
(*, 1).- draws_descendants = True¶
get_render_primitivesbelow hands the renderer every face under one_mesh_key, and nothing else – so the faces are this Mob’s internals rather than Mobs of their own, and the vertexDot3D``s and edge Mobs under ``self.graph(kept for Manim parity, wheregraph_configstyles them) are geometry it owns but never puts on screen. Both facts matter tobecome(): without this flag a morphed Polyhedron grew a wireframe and eight vertex beads a spawned one does not have, and drew each of its faces twice.
- owned_subtrees()[source]¶
The faces this Polyhedron draws and the graph it declines to draw.
Both are its own construction and neither is a Mob in its own right. Anything else below it is a user’s, and stays a Scene actor – speaking for a user’s child too would make their geometry vanish from a morph.