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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】Python视频制作工具Manim入门,基础形状详细介绍

發布時間:2025/3/12 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】Python视频制作工具Manim入门,基础形状详细介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
來源:Python數據之道 (ID:PyDataLab)

作者:陽哥

01寫在前面

最近幾個月,我在微信視頻號「價值前瞻」和「Python數據之道」發布了一些視頻,有不少同學問到這些視頻是怎么做的,用什么工具制作的。

在文章 用 python 制作高逼格的數學動畫 中,我跟大家介紹了 Manim 這個視頻制作工具,以及以及案例演示。

不少同學覺得這個工具不錯,問到有沒有完整的使用教程或者相關書籍。據我所知,目前應該是沒有專門的書籍來介紹這個工具的。至于教程,不同版本的Manim有一部分文檔,其中 Manim社區版的文檔相對而言要完善些。

本次,我將基于 Manim社區版(Manim Community)給大家分享Manim入門的第一部分,基礎形狀的使用。

本次使用的版本為 Manim Community v0.14.0,文中介紹的基礎形狀如下:

02Manim的安裝與運行

安裝

如何安裝社區版Manim,參見下面的官方鏈接:

https://docs.manim.community/en/stable/installation.html

如何運行 Manim

用 Manim 繪制圖形,首先需要引入 Manim 庫,然后將需要繪制的內容封裝到一個 類(class) 里面。

社區版的導入代碼如下:

from?manim?import?*

對于 編輯好的程序文件( XXXX.py 文件),需要在同一個文件夾下運行命令來運行程序,命令格式如下:

manim?-pql?XXXX.py?DemoSquare

上面的命令行中:

  • manim 是社區版Manim運行程序的主要標志用語;

  • p 表示程序運行后會進行預覽(圖片或視頻);

  • ql 表示低質量(quality low), 其他的選項有 -ql, -qm, -qh, -qk, 分別表示 低質量、正常質量、高質量、4K質量;

  • XXXX.py 是py代碼文件;

  • DemoSquare 是 py代碼文件中的一個類;

演示過程錄屏如下:

命令行中,還有其他許多參數可以設置,可以通過社區版的支持文檔來進一步了解:

https://docs.manim.community/en/stable/tutorials/configuration.html#command-line-arguments

03Manim 的基礎形狀介紹

通用屬性

Manim 中基礎形狀有些屬性和方法,對于大部分形狀是通用的,因此在介紹具體的形狀之前,在這里通過 正方形 來講解下形狀的基礎用法。

在下面的案例中,實現了對正方形的邊框顏色設置、線寬度設置、填充顏色、旋轉、大小變換等。

#?manim?-pql?manimce-intro-01.py?DemoSquare class?DemoSquare(Scene):def?construct(self):WaterMark.construct(self)r?=?1sq1?=?Square(side_length=2?*?r,color=BLUE,)sq1.to_corner(UL,buff=2)self.add(sq1)self.wait()sq2?=?Square(side_length=2?*?r,color=BLUE,stroke_width=10,??#?設置邊框線的粗細)sq2.next_to(sq1,RIGHT,buff=1)self.add(sq2)self.wait()sq3?=?Square(side_length=2?*?r,color=BLUE,fill_color=ORANGE,??#?設置填充顏色fill_opacity=0.5,??#?設置透明度)sq3.next_to(sq2,RIGHT,buff=1)self.add(sq3)self.wait()#?形狀大小變換sq4?=?sq1.copy()sq4.scale(0.6)?#?縮小到?60%sq4.next_to(sq1,DOWN,buff=0.5)self.add(sq4)self.wait()#?形狀旋轉sq5?=?sq2.copy()sq5.rotate(45*DEGREES)??#?旋轉45度sq5.next_to(sq2,DOWN,buff=0.5)self.add(sq5)self.wait()

演示效果如下:

對于 點 , manim 中目前有幾種不一樣的形狀可以來展示,包括:

  • Dot

  • AnnotationDot

  • LabeledDot

class?DemoDot(Scene):def?construct(self):WaterMark.construct(self)g?=?Group(#?點Dot(color=PINK),AnnotationDot(stroke_color=YELLOW,?fill_color=BLUE,fill_opacity=1),#?帶文字標簽的點LabeledDot(Tex("2022",?color=RED)),LabeledDot(MathTex("a",?color=GREEN)),LabeledDot(Text("Python數據之道",?color=BLUE)).scale(0.3),LabeledDot("Lemon"),)g.arrange(RIGHT,buff=0.5).scale(1.5)g[:2].move_to(UP*1.5)g[2:].next_to(g[:2],DOWN,buff=1)for?shape?in?g:self.add(shape)self.wait(0.5)

演示效果如下:

在這里,線 的形狀,包括 直線、虛線、箭頭、雙箭頭、彎曲的箭頭等,如下:

  • Line

  • DashedLine

  • Arrow

  • DoubleArrow

  • CurvedArrow

class?DemoLine(Scene):def?construct(self):WaterMark.construct(self)g?=?Group(#?線Line(0.5*LEFT,0.5*RIGHT,color=YELLOW),#?虛線DashedLine(0.5*LEFT,0.5*RIGHT,color=TEAL),#?箭頭Arrow(color=BLUE),?Arrow(color=?BLUE,?tip_shape=ArrowCircleFilledTip),?#??ArrowCircleTipArrow(color=?BLUE,?tip_shape=ArrowSquareTip),#?ArrowSquareFilledTip#?雙箭頭DoubleArrow(color=BLUE),#?彎曲的箭頭CurvedArrow(LEFT,RIGHT,angle=90*DEGREES,color=?BLUE),?)g.arrange(RIGHT,buff=0.5)g[:3].move_to(UP*1.5)g[3:].next_to(g[:3],DOWN,buff=1)for?shape?in?g:self.add(shape)self.wait(0.5)

演示效果如下:

圓形

圓形包括 圓、圓環、扇形、橢圓、弧形等,如下:

  • Circle

  • Annulus

  • Ellipse

  • Sector

  • Arc

  • ArcBetweenPoints

class?DemoCircle(Scene):def?construct(self):WaterMark.construct(self)g?=?Group(#?圓形Circle(radius=0.8,color=YELLOW,fill_color=BLUE,fill_opacity=1),#?圓環Annulus(inner_radius=0.7,?outer_radius=1,fill_color=?DARK_BLUE,?stroke_color=YELLOW,?stroke_width=4),?#?橢圓Ellipse(color=?BLUE),#?扇形Sector(inner_radius=0.7,?outer_radius=1,fill_color=?BLUE,?stroke_color=YELLOW,?stroke_width=4),#?弧形Arc(radius=1.3,?start_angle=-PI/8,?angle=PI,color=?BLUE),ArcBetweenPoints(start=2?*?RIGHT,?end=2*LEFT,?stroke_color=BLUE)?,)g.arrange(RIGHT,buff=0.5)g[:3].move_to(UP*1.5)g[3:].next_to(g[:3],DOWN,buff=1)for?shape?in?g:self.add(shape)self.wait(0.5)

演示效果如下:

下面的這個視頻,就是基于 扇形(Sector)來制作的。

矩形

矩形類的形狀,是咱們經常使用到的一類圖形,在 manim 中包括:

  • Rectangle

  • RoundedRectangle

  • Square

class?DemoRect(Scene):def?construct(self):WaterMark.construct(self)g?=?Group(#?矩形Rectangle(width=1,height=0.6,color=BLUE,fill_color=ORANGE,fill_opacity=1),Rectangle(width=1,height=0.6,color=BLUE,grid_xstep=0.5,grid_ystep=0.2),#?圓角矩形RoundedRectangle(corner_radius=0.3,width=1,height=0.6,fill_color=PURPLE,fill_opacity=1),#?正方形Square(side_length=1,color=BLUE,fill_color=ORANGE,??#?設置填充顏色fill_opacity=0.5,??#?設置透明度),)g.arrange(RIGHT,buff=0.5).scale(2)for?shape?in?g:self.add(shape)self.wait(0.5)

演示效果如下:

多邊形

多邊形性,相對來說要復雜些,主要是需要設置邊緣點的位置,在manim中有多種方式來表示多邊形,包括:

  • Triangle

  • Polygon

  • RegularPolygon

  • Star

  • Polygram

  • RegularPolygram

class?DemoPolygon(Scene):def?construct(self):WaterMark.construct(self)g?=?Group(#?正三角形Triangle(radius=2,color=BLUE),#?三角形Polygon([-5,?1.5,?0],?[-2,?1.5,?0],?[-3.5,?-2,?0]),#?多邊形Polygon([-5,?1.5,?0],?[-2,?1.5,?0],?[-2.5,?-2,?0],?[-4.5,?-1.5,?0]),#正多邊形RegularPolygon(n=6,color=BLUE),#?星型Star(color=BLUE),#多邊形Polygram([[0,?2,?0],?[-np.sqrt(3),?-1,?0],?[np.sqrt(3),?-1,?0]],[[-np.sqrt(3),?1,?0],?[0,?-2,?0],?[np.sqrt(3),?1,?0]],),RegularPolygram(num_vertices?=?7),RegularPolygram(5,?radius=1),)g.arrange(RIGHT,buff=0.5).scale(0.7)g[:4].move_to(UP*1.5)g[4:].next_to(g[:3],DOWN,buff=1)for?shape?in?g:self.add(shape)self.wait(0.5)

演示效果如下:

符號

在manim 中,也經常會用到 大括號等形狀,如下:

class?DemoCross(Scene):def?construct(self):WaterMark.construct(self)#?十字叉cross?=?Cross(stroke_color?=?BLUE,stroke_width=20).scale(0.8)cross.to_corner(UL,buff=2)self.add(cross)self.wait(0.5)#?大括號br1?=?Brace(Line(LEFT,RIGHT),color=?BLUE)br1.next_to(cross,RIGHT,buff=0.5)self.add(br1)self.wait(0.5)#?帶文字的大括號line=Line(LEFT,RIGHT)?br2=?BraceLabel(line,?text=?"14cm",?color=?YELLOW,?buff=0.1)?br2.submobjects[1].set_color(BLUE)?self.add(VGroup(line,br2).next_to(br1,RIGHT,buff=0.5))self.wait(0.5)#?帶弧度的大括號arc?=?Arc(radius=1,start_angle=0,angle=3*PI/4)?br3?=?ArcBrace(arc).set_color(BLUE)self.add(VGroup(arc,br3).next_to(VGroup(line,br2),RIGHT,buff=0.5))#?self.add(arc,br3)self.wait(0.5)

演示效果如下:

04小結

相對而言,manim 中的基礎形狀,還是比較齊全的,在這些基礎形狀的基礎上,自己可以進一步來組合其他的形狀。


大家讀完順手點下右下角的 ?“在看” ,就是最大的鼓勵和支持了。

往期精彩回顧適合初學者入門人工智能的路線及資料下載(圖文+視頻)機器學習入門系列下載中國大學慕課《機器學習》(黃海廣主講)機器學習及深度學習筆記等資料打印《統計學習方法》的代碼復現專輯 AI基礎下載機器學習交流qq群955171419,加入微信群請掃碼:

?

總結

以上是生活随笔為你收集整理的【Python】Python视频制作工具Manim入门,基础形状详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

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