在數學的動畫中,函式以及影象是不可避免的元素,為實現數學函式及影象的展示,manim提供了一個函式場景類GraphScene。下文將給出函式場景類的使用說明。
GraphScene
繪製函式的影象類GraphScene,其基類為上面的場景類Scene
GraphScene使用之前,可以按照需求,參考上述引數,對座標系進行設定。然後在construct()方法中新增函式影象,例如:
GraphScene渲染的函式影象如下圖:
下面介紹GraphScene的方法,將繼續使用上述函式及程式碼。
GraphScene方法使用
透過繼承GraphScene,定義新的GraphScene類,用get_graph()方法描述函式圖形。
setup_axes(
animate=False
):該方法設定graph的軸線;
get_graph(
func
,
color=None
,
x_min=None
,
x_max=None
,
**kwargs
):獲得一個繪製的曲線,返回型別為ParametricFunction;
func為function型別,用於繪圖,其返回值為給定x座標的y座標;
color為可選的RGB顏色字串,用於指定曲線顏色;
x_min為可選的int或float型引數,曲線繪製的下限值;
x_max為可選的int或float型引數,曲線繪製的上限值;
add_T_label(
x_val
,
side=array([1.0, 0.0, 0.0])
,
label=None
,
color='#FFFFFF'
,
animated=False
,
**kwargs
):該方法將向場景中新增三個物件:一個在x軸上的三角形標記;一條x座標軸與影象之間的、垂直直線,垂足為指定的x座標;以及一個MathTex標籤。使用該方法之前,需要指定self。v_graph。
x_val為float或int型,割線進入的x座標,首次與函式圖相交;
side,可選的np。array();
label,可選的字串,直線和三角形標記的標籤;
color,可選的字串型別,label的hex顏色;
animated,可選的布林型別,是否動畫展示T_label的新增;
加標籤
標籤渲染效果如圖:
angle_of_tangent(
x
,
graph
,
dx=0.01
):返回函式曲線在給定x座標處的切線與x軸的夾角;
引數x為int或float,是曲線的一個切點;
graph,型別為ParametricFunction,用於計算切線;
dx是int或float型的可選引數,用於x的變化,導致的y變化,求得切線值;
get_secant_slope_group(
x
,
graph
,
dx=None
,
dx_line_color=None
,
df_line_color=None
,
dx_label=None
,
df_label=None
,
include_secant_line=True
,
secant_line_color=None
,
secant_line_length=10
):返回一個VGroup,包含兩條代表dx和df的線,dx和df的標籤,指定x值處的切線;
int或float型的x,割線的x輸入值;
graph型別為ParametricFunction;
dx為可選的int或float型引數,割線退出後x的變化;
dx_line_color為可選的顏色字串,標示x變化的線的顏色;
df_line_color為可選的顏色字串,標示y變化的線的顏色;
dx_label為可選的字串,為變化的x提供標籤;
df_label為可選的字串,為變化的y提供標籤;
include_secant_line為可選的bool型別,是否包含函式影象中的割線,或只是dx和df線和標籤;
secant_line_color為可選的字串,指定割線的顏色;
secant_line_length為可選的int或float型引數,指定割線的長度;
獲取函式曲線在某點的切線:
切線渲染效果:
animate_secant_slope_group_change(
secant_slope_group
,
target_dx=None
,
target_x=None
,
run_time=3
,
added_anims=None
,
**anim_kwargs
):動畫展示割線坡度組的變化,從老的割線坡度組變為新的割線坡度組;注意,target_dx和target_x要至少有一個為非空。
secant_slope_group為VGroup型別,老的割線坡度組;
target_dx為int或float型的可選引數,新的dx值;
target_x為int或float型的可選引數,指定割線的位置;
run_time為int或float型的可選引數,動畫的執行時間;
added_anims為可選的列表,任何可同時播放的動畫;
呈現兩點之間的切線動態變化:
切線的變化效果如圖:
coords_to_point(
x
,
y
):因為graph要比場景小的多,所以場景的座標不能對映到graph的座標;該方法返回graph的一個比例化座標,給出對應場景的笛卡爾座標;
引數x和y均為int或float型;
一個座標轉化的例子,geometry物件的座標轉化為GraphScene的座標:
座標轉化後,渲染效果:
購買manim專欄,快速入門數學動畫的製作。