日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

manim边学边做--向量相关的场景类

發布時間:2025/3/8 编程问答 27 如意码农
生活随笔 收集整理的這篇文章主要介紹了 manim边学边做--向量相关的场景类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VectorSceneManim動畫庫中專門用于向量空間可視化的場景類,繼承自基礎 Scene 類。

它通過封裝一系列向量操作方法,使數學教育、物理模擬等領域的動畫制作更加高效。

本文主要介紹VectorScene的作用、主要參數和方法,并通過示例動畫來展示其特點。

1. VectorScene概要

VectorScene的核心功能包括:

  • 自動管理坐標系與網格系統
  • 支持向量的創建、標注與動態操作
  • 提供向量空間變換的可視化工具
  • 內置多種動畫過渡效果

在教學中,VectorScene可以幫助學生更好地理解向量的概念和性質,例如向量的坐標表示、基向量的作用以及向量的線性組合等。

通過動畫的形式,我們可以更直觀地看到向量的變化過程,從而加深對數學概念的理解。

在科研和工程領域,VectorScene也可以用于展示向量場、力的分析等,幫助研究人員和工程師更清晰地表達和理解復雜的向量關系。

1.1. 主要參數

VectorScene繼承自Scene,父類的參數它也都可以使用,VectorScene特有的參數不多:

參數名稱 類型 說明
basis_vector_stroke_width int 基向量的筆觸寬度。也就是基向量箭頭的粗細程度

1.2. 主要方法

VectorScene的方法大多與向量操作有關,主要包括:

名稱 說明
add_axes 添加一對坐標軸到場景中。通過設置animate=True,可以以動畫的形式展示坐標軸的生成過程,增強視覺效果。
add_plane 在背景中添加一個NumberPlane對象。這個方法可以創建一個二維平面,用于展示向量的位置和方向。
add_vector 將一個向量添加到平面上,并返回該向量的箭頭對象。通過設置 animate=True,可以以動畫的形式展示向量的生成過程。
coords_to_vector 將向量表示為列矩陣,并展示向量的 x 和 y 分量對應的線段。
get_basis_vectors 返回一個包含基向量(1,0)(0,1)VGroup對象。通過設置不同的顏色,可以區分不同的基向量。
get_vector_label 為給定的向量生成標簽。這個方法可以方便地為向量添加描述性文本,增強動畫的可讀性。
label_vector 為向量添加標簽,并可以選擇是否以動畫的形式展示。
lock_in_faded_grid 凍結背景中的 NumberPlane 和坐標軸,并在前景中添加新的可操作的平面和坐標軸。這個方法可以用于在動畫中切換不同的平面和坐標軸,增強視覺效果。
show_ghost_movement 播放一個動畫,部分展示整個平面沿著特定向量方向移動的效果。這個方法可以用于展示向量的方向和作用,而不會實際移動平面。
vector_to_coords 將向量表示為基于Vector的向量,并展示向量的xy分量對應的線段,然后在向量頭部附近創建一個列矩陣標簽。
write_vector_coordinates 將向量的坐標寫為列矩陣,并返回該列矩陣對象。

2. 使用示例

以下的示例展示VectorScene的特點。

2.1. 向量的加法

這個示例展示了如何使用VectorScene來展示向量的加法。

通過添加兩個向量并計算它們的和,可以直觀地展示向量加法的幾何意義。

self.add_plane(
animate=True,
x_range=[-6, 6],
y_range=[-6, 6],
x_length=5,
y_length=5,
) # 添加平面
# TODO: add_axes 方法的 **kwargs 參數無效
self.add_axes(animate=True) # 添加坐標軸 # 定義兩個向量
vector1 = self.add_vector([-2, 1], color=BLUE, animate=True)
vector2 = self.add_vector([1, 1], color=RED, animate=True) # 計算向量和
sum_vector = vector1.get_end() + vector2.get_end()
sum_vector = self.add_vector(sum_vector, color=GREEN, animate=True) # 添加標簽
self.label_vector(vector1, "v1", animate=True)
self.label_vector(vector2, "v2", animate=True)
self.label_vector(sum_vector, "v1 + v2", animate=True)

2.2. 向量的標量乘法

這個示例展示了如何使用VectorScene來展示基向量的變換。

通過改變基向量的方向和大小,可以直觀地展示基向量在向量空間中的作用。

self.add_plane(
animate=True,
x_range=[-6, 6],
y_range=[-6, 6],
x_length=5,
y_length=5,
) # 添加平面 # 定義一個向量
v = np.array([1, 0.5])
vector = self.add_vector(v, color=BLUE, animate=True)
self.label_vector(vector, "v", animate=True) # 標量乘法
scaled_vector = self.add_vector(v * 2, color=RED, animate=True)
self.label_vector(
scaled_vector,
MathTex(r"\overrightarrow{2V}", color=RED, font_size=30),
animate=True,
)

2.3. 向量的投影

這個示例展示了如何使用VectorScene來展示向量的投影。

通過計算一個向量在另一個向量上的投影,可以直觀地展示向量投影的幾何意義。

self.add_plane(
animate=True,
x_range=[-6, 6],
y_range=[-6, 6],
x_length=5,
y_length=5,
) # 添加平面 # 定義兩個向量
vector1 = self.add_vector([2.5, 1.5], color=BLUE, animate=True)
vector2 = self.add_vector([0.5, 0.5], color=RED, animate=True)
self.label_vector(vector1, "v1", animate=True)
self.label_vector(vector2, "v2", animate=True) # 計算向量1在向量2上的投影
projection = vector2.get_projection(vector1.get_end())
projected_vector = Arrow(start=ORIGIN, end=projection, color=GREEN) self.add_vector(projected_vector, animate=True)
self.label_vector(projected_vector, "proj_{v2}(v1)", animate=True)

3. 附件

文中的代碼只是關鍵部分的截取,完整的代碼共享在網盤中(vector.py),

下載地址: 完整代碼 (訪問密碼: 6872)

總結

以上是生活随笔為你收集整理的manim边学边做--向量相关的场景类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。