Cone¶
Qualified name: algan.mobs.shapes\_3d.Cone
- class Cone(radius=1, height=1, direction=tensor([0., 1., 0.]), v_range=(0, 360), closed=False, resolution=None, *args, **kwargs)[source]¶
Bases:
SurfaceA circular cone, tessellated from a
Surface.The cone is open at its base by default;
closedcaps it with a flat disc added as a child – a lit triangle mesh carrying the cone’s own mesh identity, so the rim is an interior edge of one surface. The uncapped disc is always built and available asbase_circle.- Parameters:
radius – Radius of the base, in world units. Defaults to
1.height – Distance from base to tip along
direction, in world units. Defaults to1.direction – Direction the tip points, shape
(*, 3); it need not be normalized. Defaults toUP(the +y axis), the same default asCylinder’s axis.closed – Whether to cap the base with a filled circle. Defaults to
False: the cone is open, so the camera can see inside it. The disc samples its rim more finely than the cone samples its rings – it has to, since a flat disc’s boundary cannot be refined at render time the way the curved side’s is – so a capped cone carries more triangles than the side alone suggests.v_range – Angular sweep around the axis, in degrees.
(0, 180)gives a half cone. Defaults to(0, 360)(the full cone).resolution – Manim-style grid resolution as
(u_patches, v_patches), or one int for both; each value becomesgrid_width/grid_heightplus one, since Manim counts patches and Algan counts vertices. Defaults toNone, meaning Algan sizes the grid itself fromgeometry_tolerance.*args – Passed to
Surface– notablycolor, andcolor_texturefor the two-tone styling Manim spellscheckerboard_colors:color_texture=get_checkerboard((BLUE, BLUE_E)).**kwargs – Passed to
Surface– notablycolor, andcolor_texturefor the two-tone styling Manim spellscheckerboard_colors:color_texture=get_checkerboard((BLUE, BLUE_E)).
Examples
A capped cone pointing up the screen:
Example: Example1Cone ¶
from algan import * Cone(radius=0.6, height=1.2, direction=UP, closed=True).spawn() Scene.save_video()
Methods
Map the surface's
(u, v)parameters to positions in space.get_directionget_endget_startAttributes
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.
color_textureAn image painted across the surface, as an
[W, H, 5]RGBA+glow tensor.draws_descendantsWhether
get_render_primitivesreturns geometry belonging to this Mob's DESCENDANTS as well as its own.forwardGet the direction the Mob is facing.
geometry_toleranceHow far this surface's mesh may sit from the exact shape, in world units.
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.
render_tolerance_pixelsHow far a drawn triangle may sit from the true surface, in pixels.
rightGet the Mob's own rightward direction.
scale_coefficientThe Mob's scale along its own right, up and forward axes, shape
(*, 3).Whether this Mob's geometry should be lit from whichever side the ray arrives on.
upGet the Mob's own upward direction.
verticesThe surface's vertex positions, shape
(*, grid_width * grid_height, 3).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).- coord_function(uv)[source]¶
Map the surface’s
(u, v)parameters to positions in space.This is what defines the surface’s shape, and what each 3-D shape class overrides:
Spheremaps the unit square onto a sphere,Torusonto a torus, and so on. The base implementation gives a flat plane spanning[-1, 1]on both axes.- Parameters:
uv – Parameter coordinates to map, shape
(*, 2), with both components in[0, 1].- Returns:
Positions relative to the surface’s location, shape
(*, 3).- Return type:
torch.Tensor
- two_sided = False¶
Whether this Mob’s geometry should be lit from whichever side the ray arrives on.
True(the default) is for geometry with no meaningful outside – a 2-D shape,Text, a parametricSurface, an imported mesh whose winding nobody has checked – where a back-facing hit is shaded with its normal flipped toward the viewer, so the surface is lit from behind instead of coming out black.The built-in solids set it
False: their normals face out (seetests/unit_tests/test_normal_orientation.py), so a back-facing hit is genuinely the inside of the solid and is shaded as such. That is what stops a half-transparent solid’s far shell from being lit like a second front shell – the bright and dark “planes” through a fading Octahedron. Set itTrueon an instance to get the old two-sided lighting back (an openConeyou want lit inside, say); it must be set before the Mob is spawned, since the render primitive reads it once.