Class: ImplicitFunction
Defined in: mobjects/graphing/ImplicitFunction.ts:60
ImplicitFunction - Plots the zero-level set of f(x, y) = 0
Uses the Marching Squares algorithm with adaptive refinement to find and render implicit curves. Cells containing sign changes are recursively subdivided from minDepth up to maxDepth for higher fidelity near the contour without paying the cost of a globally fine grid.
Can handle multiple disjoint curves, closed loops, and saddle points.
Example
// Plot a circle: x^2 + y^2 - 1 = 0
const circle = new ImplicitFunction({
func: (x, y) => x * x + y * y - 1,
});
// Plot a hyperbola: x^2 - y^2 - 1 = 0
const hyperbola = new ImplicitFunction({
func: (x, y) => x * x - y * y - 1,
xRange: [-3, 3],
yRange: [-3, 3],
});
// Plot with axes and adaptive refinement
const axes = new Axes();
const curve = new ImplicitFunction({
func: (x, y) => Math.sin(x) - y,
axes,
minDepth: 4,
maxDepth: 8,
});
Extends
Constructors
Constructor
new ImplicitFunction(
options):ImplicitFunction
Defined in: mobjects/graphing/ImplicitFunction.ts:68
Parameters
options
Returns
ImplicitFunction
Overrides
Properties
__savedMobjectState
__savedMobjectState:
unknown=null
Defined in: core/Mobject.ts:82
JSON-serializable saved state (used by restoreState()).
Inherited from
_color
protected_color:string='#ffffff'
Defined in: core/Mobject.ts:57
Inherited from
_dirty
_dirty:
boolean=true
Defined in: core/Mobject.ts:75
Inherited from
_disableChildZLayering
protected_disableChildZLayering:boolean=false
Defined in: core/Mobject.ts:72
When true, children skip the 2D z-layering offset in _syncToThree.
Inherited from
VMobject._disableChildZLayering
_fillMaterial
protected_fillMaterial:MeshBasicMaterial=null
Defined in: core/VMobjectRendering.ts:39
Three.js fill material
Inherited from
_geometryDirty
protected_geometryDirty:boolean=true
Defined in: core/VMobjectRendering.ts:42
Whether geometry needs rebuild (separate from material dirty)
Inherited from
_opacity
protected_opacity:number=1
Defined in: core/Mobject.ts:68
Inherited from
_points3D
protected_points3D:number[][] =[]
Defined in: core/VMobject.ts:38
Array of cubic Bezier control points in 3D. Each point is [x, y, z]. Stored as: [anchor1, handle1, handle2, anchor2, handle3, handle4, anchor3, ...]
Inherited from
_sceneFrameWidth
_sceneFrameWidth:
number=null
Defined in: core/VMobjectRendering.ts:78
Inherited from
_sceneRendererHeight
_sceneRendererHeight:
number=null
Defined in: core/VMobjectRendering.ts:77
Inherited from
_sceneRendererWidth
_sceneRendererWidth:
number=null
Defined in: core/VMobjectRendering.ts:76
Per-instance renderer context (set by Scene when VMobject is added). When non-null these override the class-level statics so that multiple Scene instances do not corrupt each other's stroke-width calculations.
Inherited from
_strokeMaterial
protected_strokeMaterial:LineMaterial=null
Defined in: core/VMobjectRendering.ts:36
Three.js stroke material (Line2 LineMaterial for thick strokes)
Inherited from
_style
protected_style:MobjectStyle
Defined in: core/Mobject.ts:73
Inherited from
_threeObject
_threeObject:
Object3D<Object3DEventMap> =null
Defined in: core/Mobject.ts:74
Inherited from
_visiblePointCount
protected_visiblePointCount:number=null
Defined in: core/VMobject.ts:41
Number of points visible (for Create animation)
Inherited from
children
children:
Mobject[] =[]
Defined in: core/Mobject.ts:52
Inherited from
createdAtBeginning
createdAtBeginning:
boolean=false
Defined in: core/Mobject.ts:56
Inherited from
fillOpacity
fillOpacity:
number=0
Defined in: core/Mobject.ts:70
Inherited from
id
readonlyid:string
Defined in: core/Mobject.ts:50
Inherited from
parent
parent:
Mobject=null
Defined in: core/Mobject.ts:51
Inherited from
position
position:
Vector3
Defined in: core/Mobject.ts:53
Inherited from
rotation
rotation:
Euler
Defined in: core/Mobject.ts:54
Inherited from
savedState
savedState:
Mobject=null
Defined in: core/Mobject.ts:78
Saved mobject copy (used by Restore animation). Set by saveState().
Inherited from
scaleVector
scaleVector:
Vector3
Defined in: core/Mobject.ts:55
Inherited from
strokeWidth
strokeWidth:
number=4
Defined in: core/Mobject.ts:69
Inherited from
targetCopy
targetCopy:
Mobject=null
Defined in: core/Mobject.ts:80
Target copy used by generateTarget() / MoveToTarget animation.
Inherited from
useStrokeMesh
useStrokeMesh:
boolean=false
Defined in: core/VMobjectRendering.ts:146
When true, render stroke as a mesh ring with miter-joined corners instead of Line2 for closed paths.
Inherited from
_frameWidth
static_frameWidth:number=14
Defined in: core/VMobjectRendering.ts:69
Camera frame width in world units (set by Scene, for stroke width conversion)
Inherited from
_rendererHeight
static_rendererHeight:number=450
Defined in: core/VMobjectRendering.ts:66
Inherited from
_rendererWidth
static_rendererWidth:number=800
Defined in: core/VMobjectRendering.ts:65
Renderer resolution for LineMaterial (set by Scene)
Inherited from
useShaderCurves
staticuseShaderCurves:boolean=false
Defined in: core/VMobjectRendering.ts:131
When true, VMobjects use GPU Bezier SDF shaders for stroke rendering instead of the default Line2/LineMaterial approach.
Inherited from
Accessors
color
Get Signature
get color():
string
Defined in: core/Mobject.ts:58
Returns
string
Set Signature
set color(
value):void
Defined in: core/Mobject.ts:61
Parameters
value
string
Returns
void
Inherited from
fillColor
Get Signature
get fillColor():
string
Defined in: core/Mobject.ts:171
Returns
string
Set Signature
set fillColor(
color):void
Defined in: core/Mobject.ts:175
Parameters
color
string
Returns
void
Inherited from
isDirty
Get Signature
get isDirty():
boolean
Defined in: core/Mobject.ts:448
Returns
boolean
Inherited from
numPoints
Get Signature
get numPoints():
number
Defined in: core/VMobject.ts:108
Get the number of points
Returns
number
Inherited from
opacity
Get Signature
get opacity():
number
Defined in: core/Mobject.ts:101
Returns
number
Set Signature
set opacity(
value):void
Defined in: core/Mobject.ts:105
Parameters
value
number
Returns
void
Inherited from
points
Get Signature
get points():
Point[]
Defined in: core/VMobject.ts:58
Get all points as 2D Point objects (derived from _points3D)
Returns
Point[]
Inherited from
shaderCurves
Get Signature
get shaderCurves():
boolean
Defined in: core/VMobjectRendering.ts:168
Check whether this instance should use shader-based Bezier curve rendering.
Returns
boolean
Set Signature
set shaderCurves(
value):void
Defined in: core/VMobjectRendering.ts:173
Enable or disable shader-based Bezier rendering for this instance.
Parameters
value
boolean
Returns
void
Inherited from
style
Get Signature
get style():
MobjectStyle
Defined in: core/Mobject.ts:109
Returns
Inherited from
submobjects
Get Signature
get submobjects():
Mobject[]
Defined in: core/Mobject.ts:123
Returns
Mobject[]
Inherited from
visiblePointCount
Get Signature
get visiblePointCount():
number
Defined in: core/VMobject.ts:115
Get the number of visible points (for Create animation)
Returns
number
Set Signature
set visiblePointCount(
count):void
Defined in: core/VMobject.ts:122
Set the number of visible points (for Create animation)
Parameters
count
number
Returns
void
Inherited from
Methods
_buildEarcutFillGeometry()
protected_buildEarcutFillGeometry(points3D):BufferGeometry<NormalBufferAttributes,BufferGeometryEventMap>
Defined in: core/VMobjectRendering.ts:204
Parameters
points3D
number[][]
Returns
BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>
Inherited from
VMobject._buildEarcutFillGeometry
_createCopy()
protected_createCopy():ImplicitFunction
Defined in: mobjects/graphing/ImplicitFunction.ts:537
Create a copy of this ImplicitFunction
Returns
ImplicitFunction
Overrides
_createThreeObject()
protected_createThreeObject():Object3D
Defined in: core/VMobjectRendering.ts:216
Create the Three.js backing object for this VMobject.
Returns
Object3D
Inherited from
_disposeRenderingResources()
protected_disposeRenderingResources():void
Defined in: core/VMobjectRendering.ts:613
Returns
void
Inherited from
VMobject._disposeRenderingResources
_getBoundingBox()
_getBoundingBox():
object
Defined in: core/Mobject.ts:367
Returns
object
depth
depth:
number
height
height:
number
width
width:
number
Deprecated
Use getBoundingBox() instead.
Inherited from
_getEdgeInDirection()
_getEdgeInDirection(
direction):Vector3Tuple
Defined in: core/Mobject.ts:360
Parameters
direction
Returns
Inherited from
_interpolatePointList3D()
protected_interpolatePointList3D(points,targetCount):number[][]
Defined in: core/VMobject.ts:448
Interpolate a 3D point list to have a specific number of points.
Parameters
points
number[][]
targetCount
number
Returns
number[][]
Inherited from
VMobject._interpolatePointList3D
_markDirty()
_markDirty():
void
Defined in: core/Mobject.ts:438
Returns
void
Inherited from
_markDirtyUpward()
_markDirtyUpward():
void
Defined in: core/Mobject.ts:442
Returns
void
Inherited from
_pointsToCurvePath()
protected_pointsToCurvePath():CurvePath<Vector3>
Defined in: core/VMobjectRendering.ts:200
Returns
CurvePath<Vector3>
Inherited from
_pointsToShape()
protected_pointsToShape():Shape
Defined in: core/VMobjectRendering.ts:196
Returns
Shape
Inherited from
_setSceneContext()
_setSceneContext(
rendererWidth,rendererHeight,frameWidth):void
Defined in: core/VMobjectRendering.ts:109
Set per-instance scene context for multi-scene support. Called by Scene when a VMobject is added or the scene is resized.
Parameters
rendererWidth
number
rendererHeight
number
frameWidth
number
Returns
void
Inherited from
_syncMaterialToThree()
protected_syncMaterialToThree():void
Defined in: core/VMobjectRendering.ts:555
Returns
void
Inherited from
_syncToThree()
_syncToThree():
void
Defined in: core/Mobject.ts:416
Returns
void
Inherited from
_updateGeometry()
protected_updateGeometry(group):void
Defined in: core/VMobjectRendering.ts:245
Update the geometry within the Three.js group.
Parameters
group
Group
Returns
void
Inherited from
add()
add(...
mobjects):this
Defined in: core/Mobject.ts:247
Parameters
mobjects
...Mobject[]
Returns
this
Inherited from
addPoints()
addPoints(...
points):this
Defined in: core/VMobject.ts:168
Add points to this VMobject using 2D Point objects
Parameters
points
...Point[]
Returns
this
Inherited from
addPointsAsCorners()
addPointsAsCorners(
corners):this
Defined in: core/VMobject.ts:223
Add straight line segments from the last point to each corner. Each corner creates a new cubic Bezier segment with linear handles. Matches Manim's add_points_as_corners.
Parameters
corners
number[][]
Array of [x, y, z] corner points to connect to
Returns
this
this for chaining
Inherited from
addUpdater()
addUpdater(
updater,callOnAdd):this
Defined in: core/Mobject.ts:474
Parameters
updater
callOnAdd
boolean = false
Returns
this
Inherited from
alignPoints()
alignPoints(
target):void
Defined in: core/VMobject.ts:322
Align points between this VMobject and a target so they have the same count, consistent winding, and optimal rotation for smooth morphing.
Parameters
target
The target VMobject to align with
Returns
void
Inherited from
alignTo()
alignTo(
target,direction):this
Defined in: core/Mobject.ts:345
Parameters
target
direction
Returns
this
Inherited from
applyFunction()
applyFunction(
fn):this
Defined in: core/Mobject.ts:504
Parameters
fn
(point) => number[]
Returns
this
Inherited from
applyToFamily()
applyToFamily(
func):this
Defined in: core/Mobject.ts:462
Parameters
func
(mobject) => void
Returns
this
Inherited from
become()
become(
other):this
Defined in: core/Mobject.ts:294
Parameters
other
Returns
this
Inherited from
center()
center():
this
Defined in: core/Mobject.ts:397
Returns
this
Inherited from
clearPoints()
clearPoints():
this
Defined in: core/VMobject.ts:257
Clear all points
Returns
this
Inherited from
clearUpdaters()
clearUpdaters():
this
Defined in: core/Mobject.ts:486
Returns
this
Inherited from
copy()
copy():
VMobject
Defined in: core/VMobject.ts:496
Create a copy of this VMobject. Subclasses override _createCopy() to produce an instance of the right concrete type (Circle, Square, etc.), but those constructors typically regenerate points from their own parameters (radius, sideLength, ...). After a Transform animation has morphed the point data, the regenerated points no longer match the actual visual state. We therefore always overwrite the clone's _points3D with the source's current data.
Returns
Inherited from
dispose()
dispose():
void
Defined in: core/VMobject.ts:616
Clean up Three.js resources
Returns
void
Inherited from
flip()
flip(
axis):this
Defined in: core/Mobject.ts:225
Parameters
axis
Vector3Tuple = ...
Returns
this
Inherited from
generateTarget()
generateTarget():
Mobject
Defined in: core/Mobject.ts:516
Returns
Inherited from
getBottom()
getBottom():
Vector3Tuple
Defined in: core/Mobject.ts:376
Returns
Inherited from
getBoundingBox()
getBoundingBox():
object
Defined in: core/Mobject.ts:363
Returns
object
depth
depth:
number
height
height:
number
width
width:
number
Inherited from
getBounds()
getBounds():
object
Defined in: core/Mobject.ts:310
Returns
object
max
max:
object
max.x
x:
number
max.y
y:
number
max.z
z:
number
min
min:
object
min.x
x:
number
min.y
y:
number
min.z
z:
number
Inherited from
getCenter()
getCenter():
Vector3Tuple
Defined in: core/VMobject.ts:548
Get the center of this VMobject based on its points. Uses bounding box center (matching Python Manim's get_center behavior) rather than point centroid, which is inaccurate for Bezier control points.
Returns
Inherited from
getEdge()
getEdge(
direction):Vector3Tuple
Defined in: core/Mobject.ts:370
Parameters
direction
Returns
Inherited from
getFamily()
getFamily():
Mobject[]
Defined in: core/Mobject.ts:468
Returns
Mobject[]
Inherited from
getFunction()
getFunction(): (
x,y) =>number
Defined in: mobjects/graphing/ImplicitFunction.ts:480
Get the implicit function
Returns
(
x,y):number
Parameters
x
number
y
number
Returns
number
getLeft()
getLeft():
Vector3Tuple
Defined in: core/Mobject.ts:379
Returns
Inherited from
getPoints()
getPoints():
number[][]
Defined in: core/VMobject.ts:101
Get all points defining this VMobject as 3D arrays
Returns
number[][]
Copy of the points array
Inherited from
getRight()
getRight():
Vector3Tuple
Defined in: core/Mobject.ts:382
Returns
Inherited from
getThreeObject()
getThreeObject():
Object3D
Defined in: core/Mobject.ts:452
Returns
Object3D
Inherited from
getTop()
getTop():
Vector3Tuple
Defined in: core/Mobject.ts:373
Returns
Inherited from
getUnitVector()
getUnitVector():
Vector3Tuple
Defined in: core/VMobject.ts:524
Get the unit vector from the first to the last point of this VMobject, accounting for the object's current rotation transform.
Returns
Inherited from
getUpdaters()
getUpdaters():
UpdaterFunction[]
Defined in: core/Mobject.ts:493
Returns
Inherited from
getVisiblePointCount()
getVisiblePointCount():
number
Defined in: core/VMobject.ts:157
Get the visible point count (null means all points visible).
Returns
number
Inherited from
getVisiblePoints()
getVisiblePoints():
Point[]
Defined in: core/VMobject.ts:131
Get points that should be visible (for rendering) as 2D Points
Returns
Point[]
Inherited from
getVisiblePoints3D()
getVisiblePoints3D():
number[][]
Defined in: core/VMobject.ts:139
Get points that should be visible (for rendering) as 3D arrays
Returns
number[][]
Inherited from
getXRange()
getXRange(): [
number,number]
Defined in: mobjects/graphing/ImplicitFunction.ts:496
Get the x range
Returns
[number, number]
getYRange()
getYRange(): [
number,number]
Defined in: mobjects/graphing/ImplicitFunction.ts:512
Get the y range
Returns
[number, number]
hasUpdaters()
hasUpdaters():
boolean
Defined in: core/Mobject.ts:490
Returns
boolean
Inherited from
interpolate()
interpolate(
target,alpha):this
Defined in: core/VMobject.ts:275
Interpolate this VMobject towards a target VMobject
Parameters
target
The target VMobject to interpolate towards
alpha
number
Progress from 0 (this) to 1 (target)
Returns
this
this for chaining
Inherited from
markGeometryDirty()
markGeometryDirty():
void
Defined in: core/VMobjectRendering.ts:180
Mark geometry as needing rebuild on next render.
Returns
void
Inherited from
moveTo()
moveTo(
target,alignedEdge?):this
Defined in: core/Mobject.ts:192
Parameters
target
alignedEdge?
Returns
this
Inherited from
moveToAligned()
moveToAligned(
target,alignedEdge?):this
Defined in: core/Mobject.ts:355
Parameters
target
alignedEdge?
Returns
this
Inherited from
nextTo()
nextTo(
target,direction,buff):this
Defined in: core/Mobject.ts:328
Parameters
target
direction
Vector3Tuple = RIGHT
buff
number = 0.25
Returns
this
Inherited from
prepareForNonlinearTransform()
prepareForNonlinearTransform(
numPieces):this
Defined in: core/Mobject.ts:509
Parameters
numPieces
number = 50
Returns
this
Inherited from
VMobject.prepareForNonlinearTransform
remove()
remove(...
mobjects):this
Defined in: core/Mobject.ts:260
Parameters
mobjects
...Mobject[]
Returns
this
Inherited from
removeUpdater()
removeUpdater(
updater):this
Defined in: core/Mobject.ts:480
Parameters
updater
Returns
this
Inherited from
replace()
replace(
target,stretch):this
Defined in: core/Mobject.ts:299
Parameters
target
stretch
boolean = false
Returns
this
Inherited from
restoreState()
restoreState():
boolean
Defined in: core/Mobject.ts:526
Returns
boolean
Inherited from
rotate()
rotate(
angle,axisOrOptions?):this
Defined in: core/Mobject.ts:213
Rotate the mobject around an axis. Delegates to rotateMobject for the heavy lifting.
Parameters
angle
number
axisOrOptions?
Vector3Tuple | { aboutPoint?: Vector3Tuple; axis?: Vector3Tuple; }
Returns
this
Inherited from
rotateAboutOrigin()
rotateAboutOrigin(
angle,axis):this
Defined in: core/Mobject.ts:221
Parameters
angle
number
axis
Vector3Tuple = ...
Returns
this
Inherited from
saveState()
saveState():
this
Defined in: core/Mobject.ts:521
Returns
this
Inherited from
scale()
scale(
factor):this
Defined in: core/Mobject.ts:233
Parameters
factor
number | Vector3Tuple
Returns
this
Inherited from
setAxes()
setAxes(
axes):this
Defined in: mobjects/graphing/ImplicitFunction.ts:528
Set the reference axes
Parameters
axes
Returns
this
setColor()
setColor(
color):this
Defined in: core/Mobject.ts:127
Parameters
color
string
Returns
this
Inherited from
setFill()
setFill(
color?,opacity?):this
Defined in: core/Mobject.ts:165
Parameters
color?
string
opacity?
number
Returns
this
Inherited from
setFillOpacity()
setFillOpacity(
opacity):this
Defined in: core/Mobject.ts:155
Parameters
opacity
number
Returns
this
Inherited from
setFunction()
setFunction(
func):this
Defined in: mobjects/graphing/ImplicitFunction.ts:487
Set a new implicit function to plot
Parameters
func
(x, y) => number
Returns
this
setOpacity()
setOpacity(
opacity):this
Defined in: core/Mobject.ts:135
Parameters
opacity
number
Returns
this
Inherited from
setPoints()
setPoints(
points):this
Defined in: core/VMobject.ts:68
Set the points defining this VMobject. Accepts either Point[] ({x, y} objects) or number[][] ([x, y, z] arrays).
Parameters
points
Array of points in either format
number[][] | Point[]
Returns
this
this for chaining
Inherited from
setPoints3D()
setPoints3D(
points):this
Defined in: core/VMobject.ts:93
Set the points defining this VMobject using 3D arrays (alias for setPoints with number[][])
Parameters
points
number[][]
Array of [x, y, z] control points for cubic Bezier curves
Returns
this
this for chaining
Inherited from
setPointsAsCorners()
setPointsAsCorners(
corners):this
Defined in: core/VMobject.ts:182
Set the points to form straight line segments between corner points. Each pair of consecutive corners becomes a cubic Bezier with linear handles. Matches Manim's set_points_as_corners.
Parameters
corners
number[][]
Array of [x, y, z] corner points
Returns
this
this for chaining
Inherited from
setStrokeWidth()
setStrokeWidth(
width):this
Defined in: core/Mobject.ts:145
Parameters
width
number
Returns
this
Inherited from
setStyle()
setStyle(
style):this
Defined in: core/Mobject.ts:113
Parameters
style
Partial<MobjectStyle>
Returns
this
Inherited from
setVisiblePointCount()
setVisiblePointCount(
count):void
Defined in: core/VMobject.ts:148
Set visible point count for progressive creation animations. Use null to show all points.
Parameters
count
number
Returns
void
Inherited from
setX()
setX(
x):this
Defined in: core/Mobject.ts:385
Parameters
x
number
Returns
this
Inherited from
setXRange()
setXRange(
xRange):this
Defined in: mobjects/graphing/ImplicitFunction.ts:503
Set the x range
Parameters
xRange
[number, number]
Returns
this
setY()
setY(
y):this
Defined in: core/Mobject.ts:389
Parameters
y
number
Returns
this
Inherited from
setYRange()
setYRange(
yRange):this
Defined in: mobjects/graphing/ImplicitFunction.ts:519
Set the y range
Parameters
yRange
[number, number]
Returns
this
setZ()
setZ(
z):this
Defined in: core/Mobject.ts:393
Parameters
z
number
Returns
this
Inherited from
shift()
shift(
delta):this
Defined in: core/Mobject.ts:184
Parameters
delta
Returns
this
Inherited from
toCorner()
toCorner(
direction,buff,frameDimensions?):this
Defined in: core/Mobject.ts:406
Parameters
direction
Vector3Tuple = ...
buff
number = 0.5
frameDimensions?
[number, number]
Returns
this
Inherited from
toEdge()
toEdge(
direction,buff,frameDimensions?):this
Defined in: core/Mobject.ts:401
Parameters
direction
buff
number = 0.5
frameDimensions?
[number, number]
Returns
this
Inherited from
update()
update(
dt):void
Defined in: core/Mobject.ts:497
Parameters
dt
number
Returns
void
Inherited from
_toLinewidth()
static_toLinewidth(this,strokeWidth):number
Defined in: core/VMobjectRendering.ts:123
Convert Manim-compatible strokeWidth to LineMaterial linewidth in pixels. Python Manim uses cairo_line_width_multiple=0.01, so: linewidth_px = strokeWidth * 0.01 * (rendererWidth / frameWidth)
NOTE: This static method uses class-level statics. For multi-scene correctness, internal code should use the instance method _computeLinewidth().
Parameters
this
typeof VMobjectRendering
strokeWidth
number
Returns
number