Manim 中的多个 linear/non 线性变换
Multiple linear/non linear transformations in Manim
我正在 manim 中编写脚本来执行一些转换。我想将多个 linear/non 线性变换按顺序应用于图形。我试过了但失败了。这是我的代码
from manim import *
import numpy as np
class transformation(LinearTransformationScene):
def construct(self):
# Linear transformation
self.apply_matrix([[1, 0], [1, 1]]) # <============
# Non-linear transformation
self.apply_nonlinear_transformation(self.func) # <============
self.wait()
def func(self, dot):
return np.array((max(dot[0], 0), max(dot[1], 0), dot[2]))
还有一个我无法理解的奇怪行为是,如果我 运行 只有一个突出显示的行。然后那个转换工作正常。但是如果我同时 运行 两行然后它通过这个错误:
ValueError: operands could not be broadcast together with shapes (4,3) (200,3)
那么这个错误的原因是什么?以及如何 运行 两种转换?
在转换之间添加 self.wait()
。
from manim import *
import numpy as np
class transformation(LinearTransformationScene):
def construct(self):
# Linear transformation
self.apply_matrix([[1, 0], [1, 1]]) # <============
self.wait(0) #just add this
# Non-linear transformation
self.apply_nonlinear_transformation(self.func) # <============
self.wait()
def func(self, dot):
return np.array((max(dot[0], 0), max(dot[1], 0), dot[2]))
编辑:将 self.wait()
更改为 self.wait(0)
我正在 manim 中编写脚本来执行一些转换。我想将多个 linear/non 线性变换按顺序应用于图形。我试过了但失败了。这是我的代码
from manim import *
import numpy as np
class transformation(LinearTransformationScene):
def construct(self):
# Linear transformation
self.apply_matrix([[1, 0], [1, 1]]) # <============
# Non-linear transformation
self.apply_nonlinear_transformation(self.func) # <============
self.wait()
def func(self, dot):
return np.array((max(dot[0], 0), max(dot[1], 0), dot[2]))
还有一个我无法理解的奇怪行为是,如果我 运行 只有一个突出显示的行。然后那个转换工作正常。但是如果我同时 运行 两行然后它通过这个错误:
ValueError: operands could not be broadcast together with shapes (4,3) (200,3)
那么这个错误的原因是什么?以及如何 运行 两种转换?
在转换之间添加 self.wait()
。
from manim import *
import numpy as np
class transformation(LinearTransformationScene):
def construct(self):
# Linear transformation
self.apply_matrix([[1, 0], [1, 1]]) # <============
self.wait(0) #just add this
# Non-linear transformation
self.apply_nonlinear_transformation(self.func) # <============
self.wait()
def func(self, dot):
return np.array((max(dot[0], 0), max(dot[1], 0), dot[2]))
编辑:将 self.wait()
更改为 self.wait(0)