6.三维线条(Line3D)
Line3D
是用来在三维空间中绘制一条线的一个函数(通常出现在绘图库如 Matplotlib 中)。
Line3D(start=array([-1., 0., 0.]), end=array([1., 0., 0.]), thickness=0.02,
color=None, **kwargs)
具体解释如下:
函数名
- Line3D:表示创建一个三维线段的对象。
参数
-
start:
- 类型:
array
- 描述:线段的起点坐标,通常是一个包含三个元素的数组,分别代表 x、y、z 坐标。
- 示例:
array([-1., 0., 0.])
表示起点在三维坐标系中的位置为 (-1, 0, 0)。
- 类型:
-
end:
- 类型:
array
- 描述:线段的终点坐标,同样是一个包含三个元素的数组。
- 示例:
array([1., 0., 0.])
表示终点在三维坐标系中的位置为 (1, 0, 0)。
- 类型:
-
thickness:
- 类型:
float
- 描述:线段的厚度,数值越大,线段看起来越粗。
- 示例:
0.02
表示线段的厚度为 0.02 单位。
- 类型:
-
color:
- 类型:可选,通常是字符串或数组
- 描述:线段的颜色。如果为
None
,则会使用默认颜色。 - 示例:可以指定为颜色名称(如
'red'
)、十六进制字符串(如'#FF0000'
),或 RGB 值(如array([1, 0, 0])
)。
-
kwargs:
- 用于传递其他额外参数,这些参数可能是其他的样式设置,比如透明度、线型等,取决于具体的库实现。
示例1:
from manim import *
class ExampleLine3D(ThreeDScene):
def construct(self):
axes = ThreeDAxes()
line = Line3D(start=np.array([0, 0, 0]), end=np.array([2, 2, 2]),color=RED)
self.set_camera_orientation(phi=75 * DEGREES, theta=30 * DEGREES)
self.add(axes, line)
三维线条的子函数:
1平行线段
parallel_to(line, point=array([0., 0., 0.]), length=5, **kwargs)
函数说明
- 该函数用于创建一条与给定线
line
平行的线段。
参数
- line: 需要平行的线段,一般是一个线段对象。
- point:
- 类型:
array
- 描述:平行线段的起始点,默认为原点
(0, 0, 0)
。
- 类型:
- length:
- 类型:
float
- 描述:新线段的长度,默认为
5
单位。
- 类型:
- kwargs:
- 描述:其他额外参数,比如颜色、线型等,这些将被传递给创建的线段。
示例:
from manim import *
class ParallelLineExample(ThreeDScene):
def construct(self):
self.set_camera_orientation(PI / 3, -PI / 4)
ax = ThreeDAxes((-5, 5), (-5, 5), (-5, 5), 10, 10, 10)
line1 = Line3D(RIGHT * 2, UP + OUT, color=RED)
line2 = Line3D.parallel_to(line1, color=YELLOW)
self.add(ax, line1, line2)
2.垂直的线段
perpendicular_to(line, point=array([0., 0., 0.]), length=5, **kwargs)
函数说明
- 该函数用于创建一条与给定线
line
垂直的线段。
参数
- line: 需要垂直的线段,一般是一个线段对象。
- point:
- 类型:
array
- 描述:垂线的起始点,默认为原点
(0, 0, 0)
。
- 类型:
- length:
- 类型:
float
- 描述:新线段的长度,默认为
5
单位。
- 类型:
- kwargs:
- 描述:其他额外参数,用于进一步定制新生成的线段。
示例:
from manim import *
class PerpLineExample(ThreeDScene):
def construct(self):
self.set_camera_orientation(PI / 3, -PI / 4)
ax = ThreeDAxes((-5, 5), (-5, 5), (-5, 5), 10, 10, 10)
line1 = Line3D(RIGHT * 2, UP + OUT, color=RED)
line2 = Line3D.perpendicular_to(line1, color=BLUE)
self.add(ax, line1, line2)
3.线条转换为一个点
pointify(mob_or_point, direction=None)
函数说明
- 该函数的目的是将一个对象(可能是移动对象或单一的点)转换为一个点。如果提供了方向,可能还会结合该方向进行处理。
参数
- mob_or_point:
- 描述:可以是一个点或者一个可移动对象(mob),函数会将其转化为点的形式。
- direction:
- 可选参数,描述一个方向向量,可能用于确定转换的方式或最终结果的位置。
4.线段设置起始点和终点的属性
set_start_and_end_attrs(start, end, **kwargs)
函数说明
- 该函数用于为线段设置起始点和终点的属性。
参数
- start:
- 类型:
array
- 描述:线段的起始点坐标,通常是一个三维坐标数组。
- 类型:
- end:
- 类型:
array
- 描述:线段的终点坐标,同样是一个三维坐标数组。
- 类型:
- kwargs:
- 描述:其他可选参数,可以用来设置起点或终点的额外属性,比如颜色、厚度等。这些属性将应用于线段的视觉效果。
7.创建一个棱柱(Prism)
Prism(dimensions=[3, 2, 1], **kwargs)
表示一个函数或构造函数,用于创建一个棱柱(Prism)对象。以下是对该函数及其参数的详细解释:
Prism(dimensions=[3, 2, 1], **kwargs)
函数说明
Prism
通常用于在几何或图形处理上下文中表示一个三维的棱柱体。在这个例子中,构造一个具有特定维度的棱柱体。
参数
-
dimensions:
- 类型:
list
orarray
- 描述:这是一个包含多个维度的列表。在此示例中,
[3, 2, 1]
表示棱柱的每个维度的长度。具体来说:3
表示在 x 轴方向的长度。2
表示在 y 轴方向的长度。1
表示在 z 轴方向的长度。
- 这意味着该棱柱体在三维空间中的尺寸为 3(x 轴)、2(y 轴)和 1(z 轴)。
- 类型:
-
kwargs:
- 类型:
dict
- 描述:这是一个可选参数,允许您传递额外的关键字参数,用于配置创建的棱柱的属性。这些属性可能包括但不限于:
- 颜色:定义棱柱的颜色。
- 透明度:定义棱柱的透明度值。
- 边界参数:例如线条的粗细、轮廓颜色等。
kwargs
提供了灵活性,可以根据需要自定义棱柱的外观和行为。
- 类型:
示例:
from manim import *
class ExamplePrism(ThreeDScene):
def construct(self):
self.set_camera_orientation(phi=60 * DEGREES, theta=150 * DEGREES)
prismSmall = Prism(dimensions=[1, 2, 3]).rotate(PI / 2).set_color(RED)
prismLarge = Prism(dimensions=[1.5, 3, 4.5]).move_to([2, 0, 0])
self.add(prismSmall, prismLarge)
8.创建一个球体(Sphere)
Sphere(center=array([0., 0., 0.]), radius=1, resolution=None, u_range=(0,
6.283185307179586), v_range=(0, 3.141592653589793), **kwargs)
是一个用于创建球体对象的函数或构造函数。以下是对该函数及其参数的详细解释:
函数说明
Sphere
用于在三维空间中创建一个球体。它通常用于计算机图形学、游戏开发或物理模拟中,以表示球形对象。
参数
-
center:
- 类型:
array
- 描述:这是一个表示球体中心位置的数组。在此示例中,
array([0., 0., 0.])
表示球体的中心位于原点(0, 0, 0)。
- 类型:
-
radius:
- 类型:
float
- 描述:表示球体的半径。在此示例中,
radius=1
表示球体的半径为 1 个单位。
- 类型:
-
resolution:
- 类型:
int
orNone
- 描述:可选参数,表示球体的分辨率。分辨率通常决定了球面网格的细分程度(多少个面来近似球体)。如果设置为
None
,通常使用默认值,具体取决于实现。
- 类型:
-
u_range:
- 类型:
tuple
- 描述:一个元组,表示球体的 u 参数的范围。u 参数通常用于定义球体的一个特定方向的角度范围。在此示例中,
u_range=(0, 6.283185307179586)
代表一整圈(0 到 2π)。
- 类型:
-
v_range:
- 类型:
tuple
- 描述:一个元组,表示球体的 v 参数的范围。v 参数通常用于定义球体的另一个方向的角度范围。在此示例中,
v_range=(0, 3.141592653589793)
代表从0到π(半球),即从赤道到北极(或南极)。
- 类型:
-
kwargs:
- 类型:
dict
- 描述:可选参数,允许您传递额外的关键字参数,用于配置创建的球体的属性。这些属性可能包括球体的颜色、纹理、光照等。
- 类型:
示例 :
class ExampleSphere(ThreeDScene):
def construct(self):
self.set_camera_orientation(phi=PI / 6, theta=PI / 6)
sphere1 = Sphere(
center=(3, 0, 0),
radius=1,
resolution=(20, 20),
u_range=[0.001, PI - 0.001],
v_range=[0, TAU]
)
ax= axes = ThreeDAxes().set_color(YELLOW)
self.add(ax)
sphere1.set_color(RED)
self.add(sphere1)
sphere2 = Sphere(center=(-1, -3, 0), radius=2, resolution=(18, 18))
sphere2.set_color(GREEN)
self.add(sphere2)
sphere3 = Sphere(center=(-1, 2, 0), radius=2, resolution=(16, 16))
sphere3.set_color(BLUE)
self.add(sphere3)