1066 lines
33 KiB
Python

from manim import *
from manim_physics import *
from manim.typing import Point3D
from manim.utils.rate_functions import sqrt
import numpy as np
class mov1(ThreeDScene):
def construct(self):
self.camera.background_color = WHITE
ax = ThreeDAxes(
x_range=[-0.3, 10.3, 1],
y_range=[-0.3, 10.3, 1],
z_range=[-0.3, 10.3, 1],
x_length=7.5,
y_length=7.5,
axis_config={
"color": BLACK,
},
)
self.set_camera_orientation(
phi=55 * DEGREES, theta=-45 * DEGREES, gamma=-7 * DEGREES, zoom=0.5
)
axes_lables = ax.get_axis_labels().set_color(BLACK)
graph = ax.plot_parametric_curve(
lambda u: (u, u, u**2), t_range=(0, 3, 0.01), color=RED
)
point = Dot3D(point=ax.c2p(2, 2, 4), color=BLUE, radius=0.3)
self.add(ax, axes_lables, graph, point)
class mov2(Scene):
def construct(self):
self.camera.background_color = WHITE
graph = FunctionGraph(
lambda t: sqrt(t), x_range=[0, 10, 0.01], color=RED
).move_to([-0.5, 0, 0])
point = Dot(point=[0, 0.8, 0], color=BLUE, radius=0.08)
vvec = Arrow([-0.2, 0.7, 0], [1, 1, 0], color=GREEN)
self.add(graph, point, vvec)
class mov3(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[1, 1, 0],
[-1, 1.5, 0],
[-2, 2, 0],
[-3, 1, 0],
[-1, 0, 0],
[0, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
dota = Dot(ORIGIN, color=RED, radius=0.08)
dotb = Dot([-2, 1, 0], color=BLUE, radius=0.08)
vl = Line([2, -1, 0], [-4, 2, 0], color=GREEN)
va = Arrow(ORIGIN, [1, 1, 0], color=PINK)
vb = Arrow([-2, 1, 0], [-2.7, -2, 0], color=PINK)
vap = Arrow([-0.2, 0.1, 0], [0.7, -0.35, 0], color=PURPLE)
vbp = Arrow([-2.2, 1.1, 0], [-1.2, 0.6, 0], color=PURPLE)
ta = MathTex(r"A", color=BLACK).move_to([-2, 1.5, 0])
tb = MathTex(r"B", color=BLACK).move_to([0, 0.5, 0])
tva = MathTex(r"\vec{v}_A", color=BLACK).move_to([1, 1.5, 0])
tvb = MathTex(r"\vec{v}_B", color=BLACK).move_to([-2.7, -2.5, 0])
tvap = MathTex(r"\vec{v}_A '", color=BLACK).move_to([0.7, 0.15, 0])
tvbp = MathTex(r"\vec{v}_B '", color=BLACK).move_to([-1.2, 1.1, 0])
self.add(body, dota, dotb, vl, va, vb, vap, vbp, ta, tb, tva, tvb, tvap, tvbp)
class mov4(ThreeDScene):
def construct(self):
self.camera.background_color = WHITE
ax = ThreeDAxes(
x_range=[-0.3, 10.3, 1],
y_range=[-0.3, 10.3, 1],
z_range=[-0.3, 10.3, 1],
x_length=7.5,
y_length=7.5,
axis_config={
"color": BLACK,
},
)
self.set_camera_orientation(
phi=50 * DEGREES, theta=5 * DEGREES, gamma=0 * DEGREES, zoom=0.5
)
axes_lables = ax.get_axis_labels().set_color(BLACK)
body = Sphere([0, 0, 2], radius=1, color=BLUE)
vvec1 = Arrow3D([0, 1, 3], [0, 2, 3], color=RED)
vvec2 = Arrow3D([0, 1, 2], [0, 2, 2], color=RED)
vvec3 = Arrow3D([0, 1, 1], [0, 2, 1], color=RED)
self.add(ax, axes_lables, body, vvec1, vvec2, vvec3)
class mov5(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[2, 1, 0],
[0, 1.5, 0],
[-1, 2, 0],
[-2, 1, 0],
[0, 0, 0],
[1, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
dota = Dot(ORIGIN, color=RED, radius=0.08)
dotb = Dot([-1, 1, 0], color=BLUE, radius=0.08)
dotc = Dot([1, 0.5, 0], color=GREEN, radius=0.08)
va = Arrow(ORIGIN, [1, 1, 0], color=PINK)
vb = Arrow([-1, 1, 0], [0, 2, 0], color=PINK)
vc = Arrow([1, 0.5, 0], [2, 1.5, 0], color=PINK)
ta = MathTex(r"A", color=BLACK).move_to([0, 0.5, 0])
tb = MathTex(r"B", color=BLACK).move_to([-1, 1.5, 0])
tc = MathTex(r"C", color=BLACK).move_to([1, 1, 0])
tva = MathTex(r"\vec{v}_A", color=BLACK).move_to([1, 1.5, 0])
tvb = MathTex(r"\vec{v}_B", color=BLACK).move_to([0, 2.5, 0])
tvc = MathTex(r"\vec{v}_C", color=BLACK).move_to([2, 2, 0])
self.add(body, dota, dotb, dotc, va, vb, vc, ta, tb, tc, tva, tvb, tvc)
class mov6(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[2, 1, 0],
[0, 1.5, 0],
[-1, 2, 0],
[-2, 1, 0],
[0, 0, 0],
[1, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
vvec1 = CurvedArrow([1.5, 1.5, 0], [0.5, 2.5, 0], color=PINK)
vvec2 = CurvedArrow([-1.5, 2.5, 0], [-2.5, 1.5, 0], color=PINK)
vvec3 = CurvedArrow([-1, 0, 0], [0, -1, 0], color=PINK)
self.add(body, vvec1, vvec2, vvec3)
class mov7(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[2, 1, 0],
[0, 1.5, 0],
[-1, 2, 0],
[-2, 1, 0],
[0, 0, 0],
[1, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
pmz = Dot([1, 0, 0], color=RED, radius=0.08)
vvec1 = CurvedArrow([1.5, 1.5, 0], [0.5, 2.5, 0], color=PINK)
vvec2 = CurvedArrow([-1.5, 2.5, 0], [-2.5, 1.5, 0], color=PINK)
vvec3 = CurvedArrow([-1, 0, 0], [0, -1, 0], color=PINK)
tmz = MathTex(r"MZ", color=BLACK).move_to([1, 0.5, 0])
self.add(body, vvec1, vvec2, vvec3, pmz, tmz)
class mov8(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[2, 1, 0],
[0, 1.5, 0],
[-1, 2, 0],
[-2, 1, 0],
[0, 0, 0],
[1, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
vl = Line([-2, 2, 0], [2.5, -1, 0], color=ORANGE)
pmz = Dot([1, 0, 0], color=RED, radius=0.08)
pp = Dot([-0.5, 1, 0], color=BLUE, radius=0.08)
vvec1 = CurvedArrow([1.5, -0.5, 0], [0.5, 0.5, 0], color=PINK)
vvec2 = Arrow([-0.5, 1, 0], [-1.5, -0.5, 0], color=PINK)
tmz = MathTex(r"MZ", color=BLACK).move_to([1, 0.5, 0])
tp = MathTex(r"P", color=BLACK).move_to([-0.5, 1.5, 0])
tvvec2 = MathTex(r"\vec{v}_p", color=PINK).move_to([-1.5, -0.5, 0])
self.add(body, vl, vvec1, vvec2, pmz, tmz, tp, pp, tvvec2)
class mov9(Scene):
def construct(self):
self.camera.background_color = WHITE
sk = Polygon(
[-2, -1.5, 0], [1, -1.5, 0], [2, 1.5, 0], [-1, 1.5, 0], color=BLACK
)
pa = Dot([-2, -1.5, 0], color=RED, radius=0.08)
pb = Dot([1, -1.5, 0], color=BLUE, radius=0.08)
pc = Dot([2, 1.5, 0], color=GREEN, radius=0.08)
pd = Dot([-1, 1.5, 0], color=ORANGE, radius=0.08)
va = CurvedArrow([-0.5, -2, 0], [-0.5, -1, 0], color=PINK)
vb = CurvedArrow([2, 0, 0], [1, 0, 0], color=PINK)
vc = CurvedArrow([0.5, 1, 0], [0.5, 2, 0], color=PINK)
vd = CurvedArrow([-1, 0, 0], [-2, 0, 0], color=PINK)
ta = MathTex(r"A", color=BLACK).move_to([-2, -2, 0])
tb = MathTex(r"B", color=BLACK).move_to([1, -2, 0])
tc = MathTex(r"C", color=BLACK).move_to([2, 2, 0])
td = MathTex(r"D", color=BLACK).move_to([-1, 2, 0])
tva = MathTex(r"\omega_1", color=BLACK).move_to([-0.5, -2.5, 0])
tvb = MathTex(r"\omega_2", color=BLACK).move_to([2.5, 0, 0])
tvc = MathTex(r"\omega_3", color=BLACK).move_to([0.5, 2.5, 0])
tvd = MathTex(r"\omega_4", color=BLACK).move_to([-2.5, 0, 0])
self.add(sk, pa, pb, pc, pd, va, vb, vc, vd, ta, tb, tc, td, tva, tvb, tvc, tvd)
class mov10(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[2, 1, 0],
[0, 1.5, 0],
[-1, 2, 0],
[-2, 1, 0],
[0, 0, 0],
[1, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
vl1 = Line([-2, 2, 0], [2.5, -1, 0], color=ORANGE)
vl2 = Line([0, 2.5, 0], [1.5, -1.25, 0], color=ORANGE)
pmz = Dot([1, 0, 0], color=RED, radius=0.08)
pa = Dot([-0.5, 1, 0], color=BLUE, radius=0.08)
pb = Dot([0.5, 1.25, 0], color=GREEN, radius=0.08)
vvec1 = CurvedArrow([1.5, -0.5, 0], [0.5, 0.5, 0], color=PINK)
vvec2 = Arrow([-0.5, 1, 0], [-1.5, -0.5, 0], color=PINK)
vvec3 = Arrow([0.5, 1.25, 0], [-0.875, 0.5, 0], color=PINK)
tmz = MathTex(r"MZ", color=BLACK).move_to([1, 0.5, 0])
ta = MathTex(r"A", color=BLACK).move_to([-0.5, 1.5, 0])
tb = MathTex(r"B", color=BLACK).move_to([0.5, 1.75, 0])
tvvec2 = MathTex(r"\vec{v}_A", color=PINK).move_to([-1.5, -0.5, 0])
tvvec3 = MathTex(r"\vec{v}_B", color=PINK).move_to([-0.875, 0.5, 0])
self.add(
body,
vl1,
vl2,
vvec1,
vvec2,
vvec3,
pmz,
tmz,
ta,
tb,
pa,
pb,
tvvec2,
tvvec3,
)
class mov11(Scene):
def construct(self):
self.camera.background_color = WHITE
vl = DashedLine([-1.5, -1.5, 0], [1.5, 1.5, 0], color=ORANGE)
pp = Dot([-0.5, -0.5, 0], color=RED)
fvec1 = Arrow([-0.5, -0.5, 0], [0.5, 0.5, 0], color=PINK)
pt = MathTex(r"P \text{: Angriffspunkt}", color=BLACK).move_to([1.5, -0.5, 0])
fvec1t = MathTex(r"\vec{F} = F \cdot \vec{e}_F", color=PINK).move_to(
[1.5, 0.5, 0]
)
self.add(vl, pp, fvec1, pt, fvec1t)
class mov12(Scene):
def construct(self):
self.camera.background_color = WHITE
fvec1 = Arrow([-2, -1.5, 0], [1, -1.5, 0], color=RED)
fvec2 = Arrow([-2, -1.5, 0], [-1, 1.5, 0], color=BLUE)
fvec3 = Arrow([-2, -1.5, 0], [2, 1.5, 0], color=GREEN)
vl1 = DashedLine([-1, 1.5, 0], [2, 1.5, 0], color=ORANGE)
vl2 = DashedLine([1, -1.5, 0], [2, 1.5, 0], color=ORANGE)
pp = Dot([-2, -1.5, 0], color=BLACK, radius=0.08)
pt = MathTex(r"P", color=BLACK).move_to([-2, -2, 0])
fvec1t = MathTex(r"\vec{F}_1", color=BLUE).move_to([-2, 0, 0])
fvec2t = MathTex(r"\vec{F}_2", color=RED).move_to([-0.5, -2, 0])
fvec3t = MathTex(r"\vec{F}_3", color=GREEN).move_to([2, 1.5, 0])
self.add(fvec1, fvec2, fvec3, vl1, vl2, pp, pt, fvec1t, fvec2t, fvec3t)
class mov13(Scene):
def construct(self):
self.camera.background_color = WHITE
body = Polygon([-1, -1, 0], [1, -1, 0], [1, 1, 0], [-1, 1, 0], color=BLACK)
floor = Line(config.left_side, config.right_side, color=BLACK).move_to(
[0, -1, 0]
)
fvec1 = Arrow([0, -1, 0], [0, -2, 0], color=RED)
fvec2 = Arrow([0, -1, 0], ORIGIN, color=BLUE)
fvec1t = MathTex(r"\vec{F}_G", color=RED).move_to([0, -2, 0])
fvec2t = MathTex(r"\vec{F}", color=BLUE).move_to(ORIGIN)
self.add(body, floor, fvec1, fvec2, fvec1t, fvec2t)
class mov14(Scene):
def construct(self):
self.camera.background_color = WHITE
body = Polygon([-1, -1, 0], [1, -1, 0], [1, 1, 0], [-1, 1, 0], color=BLACK)
fvec1 = Arrow([1, 0, 0], [2, 0, 0], color=RED)
fvec2 = Arrow([1, 0, 0], ORIGIN, color=BLUE)
fvec1t = MathTex(r"\vec{F}_G", color=RED).move_to([2, 0, 0])
fvec2t = MathTex(r"\vec{F}", color=BLUE).move_to(ORIGIN)
self.add(body, fvec1, fvec2, fvec1t, fvec2t)
class mov15(Scene):
def construct(self):
self.camera.background_color = WHITE
vl = DashedLine([-1.25, -0.25, 0], [2.75, 1.75, 0], color=ORANGE)
p0 = Dot([1.25, -1.5, 0], color=RED, radius=0.08)
pp = Dot([0.75, 0.75, 0], color=BLUE, radius=0.08)
ppp = Dot([0.25, 0.5, 0], color=GREEN, radius=0.08)
vr = Arrow([1.25, -1.5, 0], [0.25, 0.5, 0], color=PURPLE)
vf = Arrow([0.75, 0.75, 0], [2.75, 1.75, 0], color=PINK)
p0t = MathTex(r"O", color=BLACK).move_to([1.25, -2, 0])
ppt = MathTex(r"P", color=BLACK).move_to([0.75, 1.25, 0])
pppt = MathTex(r"P'", color=BLACK).move_to([-0.25, 0.5, 0])
vrt = MathTex(r"\vec{r}", color=PURPLE).move_to([1.25, -0.5, 0])
vft = MathTex(r"\vec{F}", color=PINK).move_to([2.75, 1.75, 0])
self.add(vl, p0, pp, ppp, vr, vf, p0t, ppt, pppt, vrt, vft)
class mov16(Scene):
def construct(self):
self.camera.background_color = WHITE
vl = DashedLine([-1.25, -0.25, 0], [2.75, 1.75, 0], color=ORANGE)
p0 = Dot([1.25, -1.5, 0], color=RED, radius=0.08)
pp = Dot([0.25, 0.5, 0], color=GREEN, radius=0.08)
vr = Arrow([1.25, -1.5, 0], [0.25, 0.5, 0], color=PURPLE)
vfp = Arrow([0.25, 0.5, 0], [2.25, 1.5, 0], color=PINK)
vf = Arrow([0.25, 0.5, 0], [1.75, 2.5, 0], color=BLUE)
p0t = MathTex(r"O", color=BLACK).move_to([1.25, -2, 0])
ppt = MathTex(r"P", color=BLACK).move_to([-0.25, 0.5, 0])
vrt = MathTex(r"\vec{r}", color=PURPLE).move_to([1.25, -0.5, 0])
vfpt = MathTex(r"F \cdot r \cdot \cos(\alpha)", color=PINK).move_to(
[2.75, 1.75, 0]
)
vft = MathTex(r"F", color=BLUE).move_to([1.75, 2.5, 0])
self.add(vl, p0, pp, vr, vf, vfp, p0t, ppt, vrt, vfpt, vft)
class mov17(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[2, 1, 0],
[0, 1.5, 0],
[-1, 2, 0],
[-2, 1, 0],
[0, 0, 0],
[1, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
po = Dot([-2, -2, 0], color=BLACK, radius=0.06)
pi = Dot([1, 1, 0], color=BLACK, radius=0.06)
vri = Arrow([-2, -2, 0], [1, 1, 0], color=BLUE)
vf1 = Arrow([1, 0, 0], [2, -1, 0], color=GREEN)
vf2 = Arrow([0, 1, 0], [0, 2.5, 0], color=GREEN)
vf3 = Arrow([-1, 1, 0], [-2, 0, 0], color=GREEN)
vfi = Arrow([1, 1, 0], [2, 3, 0], color=RED)
tri = MathTex(r"\vec{r}_i", color=BLUE).move_to([-0.5, -1, 0])
tf1 = MathTex(r"\vec{F}_1", color=GREEN).move_to([2, -1, 0])
tf2 = MathTex(r"\vec{F}_2", color=GREEN).move_to([0, 2.5, 0])
tf3 = MathTex(r"\vec{F}_3", color=GREEN).move_to([-2, 0, 0])
tfi = MathTex(r"\vec{F}_i", color=RED).move_to([2, 3, 0])
tpo = MathTex(r"O", color=BLACK).move_to([-1.5, -2, 0])
tpi = MathTex(r"P_i", color=BLACK).move_to([1.5, 1, 0])
self.add(
body, po, pi, vri, tri, vf1, vf2, vf3, vfi, tf1, tf2, tf3, tfi, tpo, tpi
)
class mov18(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[2, 1, 0],
[0, 1.5, 0],
[-1, 2, 0],
[-2, 1, 0],
[0, 0, 0],
[1, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
p = Dot([0, 1, 0], color=BLACK, radius=0.06)
wl1 = DashedLine([0, 1, 0], [2, 3, 0], color=ORANGE)
wl2 = DashedLine([0, 1, 0], [2, 0, 0], color=ORANGE)
wl3 = DashedLine([0, 1, 0], [-3, 1, 0], color=ORANGE)
vf1 = Arrow([1.75, 2.75, 0], [0.75, 1.75, 0], color=GREEN)
vf2 = Arrow([0.25, 0.875, 0], [1.25, 0.375, 0], color=GREEN)
vf3 = Arrow([-1, 1, 0], [-2, 1, 0], color=GREEN)
tp = MathTex(r"P", color=BLACK).move_to([0.5, 1, 0])
tf1 = MathTex(r"\vec{F_1}", color=GREEN).move_to([1.75, 2.75, 0])
tf2 = MathTex(r"\vec{F_2}", color=GREEN).move_to([1.25, 0.375, 0])
tf3 = MathTex(r"\vec{F_3}", color=GREEN).move_to([-2, 1, 0])
self.add(body, p, wl1, wl2, wl3, vf1, vf2, vf3, tp, tf1, tf2, tf3)
class mov19(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[2, 1, 0],
[0, 1.5, 0],
[-1, 2, 0],
[-2, 1, 0],
[0, 0, 0],
[1, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
p = Dot([0, 0.5, 0], color=BLACK, radius=0.06)
vf1 = Arrow([0, 0.5, 0], [2, 1.5, 0], color=GREEN)
vf2 = Arrow([0, 1.5, 0], [-2, 0.5, 0], color=GREEN)
vr = Arrow([0, 0.25, 0], [0, 1.75, 0], color=BLUE)
tp = MathTex(r"P", color=BLACK).move_to([0.5, 0.5, 0])
tf1 = MathTex(r"\vec{F_1}", color=GREEN).move_to([2, 1.5, 0])
tf2 = MathTex(r"\vec{F_2}", color=GREEN).move_to([-2, 0.5, 0])
tr = MathTex(r"\vec{r}", color=BLUE).move_to([0, 1.75, 0])
self.add(body, p, vf1, vf2, vr, tp, tf1, tf2, tr)
class mov20(Scene):
def construct(self):
self.camera.background_color = WHITE
wl = DashedLine([-3, -3, 0], [3, 3, 0], color=ORANGE)
vfa = Arrow([-2, -2, 0], [-1, -1, 0], color=GREEN)
vfb = Arrow([1, 1, 0], [2, 2, 0], color=GREEN)
tfa = MathTex(r"\vec{F_A}", color=GREEN).move_to([-1, -1.5, 0])
tfb = MathTex(r"\vec{F_B}", color=GREEN).move_to([2, 1.5, 0])
self.add(wl, vfa, vfb, tfa, tfb)
class stat1(Scene):
def construct(self):
self.camera.background_color = WHITE
body = Polygon([-1, -1, 0], [1, -1, 0], [1, 1, 0], [-1, 1, 0], color=BLACK)
floor = Line(config.left_side, config.right_side, color=BLACK).move_to(
[0, -1, 0]
)
self.add(body, floor)
class stat2(Scene):
def construct(self):
self.camera.background_color = WHITE
dot1 = Dot([-2, 0.5, 0], color=BLACK)
dot2 = Dot([2, 0.5, 0], color=BLACK)
dot3 = Dot([4, 0.5, 0], color=BLACK)
sk11 = Line([-2, 0.5, 0], [-3, 0.5, 0], color=BLACK)
sk12 = DashedLine([-3, 0.5, 0], [-3.5, 0.5, 0], color=BLACK)
sk21 = Line([-2, 0.5, 0], [-3, -0.5, 0], color=BLACK)
sk22 = DashedLine([-3, -0.5, 0], [-3.5, -1, 0], color=BLACK)
sk31 = Line([-2, 0.5, 0], [-1, 0.5, 0], color=BLACK)
sk32 = DashedLine([-1, 0.5, 0], [-0.5, 0.5, 0], color=BLACK)
sk41 = Line([-2, 0.5, 0], [-1, -0.5, 0], color=BLACK)
sk42 = DashedLine([-1, -0.5, 0], [-0.5, -1, 0], color=BLACK)
sk51 = Line([2, 0.5, 0], [1, 0.5, 0], color=BLACK)
sk52 = DashedLine([1, 0.5, 0], [0.5, 0.5, 0], color=BLACK)
sk61 = Line([2, 0.5, 0], [1, -0.5, 0], color=BLACK)
sk62 = DashedLine([1, -0.5, 0], [0.5, -1, 0], color=BLACK)
sk71 = Line([4, 0.5, 0], [5, 0.5, 0], color=BLACK)
sk72 = DashedLine([5, 0.5, 0], [5.5, 0.5, 0], color=BLACK)
sk81 = Line([4, 0.5, 0], [5, -0.5, 0], color=BLACK)
sk82 = DashedLine([5, -0.5, 0], [5.5, -1, 0], color=BLACK)
vf1 = Arrow([2, 0.5, 0], [2, 1.5, 0], color=GREEN)
vf2 = Arrow([4, 0.5, 0], [3, 0.5, 0], color=GREEN)
vf3 = Arrow([2, 0.5, 0], [3, 0.5, 0], color=GREEN)
vf4 = Arrow([4, 0.5, 0], [4, -0.5, 0], color=GREEN)
tf1 = MathTex(r"A_x", color=GREEN).move_to([3, 1, 0])
tf2 = MathTex(r"A_y", color=GREEN).move_to([2, 1.5, 0])
tf3 = MathTex(r"A_y", color=GREEN).move_to([4, -0.5, 0])
ra = MathTex(r"\Rightarrow", color=BLACK).move_to([0, 0, 0])
self.add(
dot1,
dot2,
dot3,
sk11,
sk12,
sk21,
sk22,
sk31,
sk32,
sk41,
sk42,
sk51,
sk52,
sk61,
sk62,
sk71,
sk72,
sk81,
sk82,
vf1,
vf2,
vf3,
vf4,
tf1,
tf2,
tf3,
ra,
)
class stat3(Scene):
def construct(self):
self.camera.background_color = WHITE
sk1 = Line([-3, -1, 0], [-1, 1, 0], color=BLACK)
sk2 = Line([1, -1, 0], [3, 1, 0], color=BLACK)
cvx1 = Arrow([-3, 0, 0], [-3, 1, 0], color=BLACK)
cvy1 = Arrow([-3, 0, 0], [-2, 0, 0], color=BLACK)
cvx2 = Arrow([1, 0, 0], [0, 1, 0], color=BLACK)
cvy2 = Arrow([1, 0, 0], [2, 1, 0], color=BLACK)
tvx1 = MathTex(r"x", color=BLACK).move_to([-3, 0, 0])
tvy1 = MathTex(r"y", color=BLACK).move_to([-3, 1, 0])
tvx2 = MathTex(r"x", color=BLACK).move_to([1, 0, 0])
tvy2 = MathTex(r"y", color=BLACK).move_to([0, 1, 0])
self.add(sk1, sk2, cvx1, cvx2, cvy1, cvy2, tvx1, tvx2, tvy1, tvy2)
class stat4(Scene):
def construct(self):
self.camera.background_color = WHITE
floor = Line([-6, -0.75, 0], [6, -0.75, 0], color=BLACK)
pbody1 = Polygon(
[-1.25, -0.75, 0], [-0.75, -0.75, 0], [-1, -0.25, 0], color=BLACK
)
ppivot1 = Dot([-1, -0.25, 0], color=BLACK)
pbody2 = Polygon([1.25, -0.75, 0], [0.75, -0.75, 0], [1, -0.25, 0], color=BLACK)
ppivot2 = Dot([1, -0.25, 0], color=BLACK)
bsk1 = Line([-1, -0.25, 0], [1, -0.25, 0], color=BLACK)
bsk2 = Line([1, -0.25, 0], [0.5, 0.75, 0], color=BLACK)
bsk3 = Line([0.5, 0.75, 0], [-0.5, 0.75, 0], color=BLACK)
bsk4 = Line([-1, -0.25, 0], [-0.5, 0.75, 0], color=BLACK)
bsk5 = Line([0.5, 0.75, 0], [0, -0.25, 0], color=BLACK)
bsk6 = Line([-0.5, 0.75, 0], [0, -0.25, 0], color=BLACK)
bp1 = Dot([0, -0.25, 0], color=BLACK)
bp2 = Dot([0.5, 0.75, 0], color=BLACK)
bp3 = Dot([-0.5, 0.75, 0], color=BLACK)
vv = Arrow([0.5, 0.75, 0], [0, 1.75, 0], color=RED)
vo = CurvedArrow([-0.75, -0.75, 0], [-1.25, 0.25, 0], color=RED)
tv = MathTex(r"\tilde{v}", color=RED).move_to([0.5, 1.25, 0])
to = MathTex(r"\tilde{\omega}", color=RED).move_to([-0.5, -0.75, 0])
pivot1 = VGroup(pbody1, ppivot1)
pivot2 = VGroup(pbody2, ppivot2)
sk = VGroup(bsk1, bsk2, bsk3, bsk4, bsk5, bsk6, bp1, bp2, bp3)
self.add(floor, pivot1, pivot2, sk, vv, vo, tv, to)
class stat5(Scene):
def construct(self):
self.camera.background_color = WHITE
floor = Line([-6, -1.25, 0], [0, -1.25, 0], color=BLACK)
pbody1 = Polygon(
[-5.25, -1.25, 0], [-4.75, -1.25, 0], [-5, -0.75, 0], color=BLACK
)
ppivot1 = Dot([-5, -0.75, 0], color=BLACK)
pbody2 = Polygon(
[-1.25, -1.25, 0], [-0.75, -1.25, 0], [-1, -0.75, 0], color=BLACK
)
ppivot2 = Dot([-1, -0.75, 0], color=BLACK)
bsk1 = Line([-5, -0.75, 0], [-1, -0.75, 0], color=BLACK)
bsk2 = Line([-1, -0.75, 0], [-2, 1.25, 0], color=BLACK)
bsk3 = Line([-2, 1.25, 0], [-4, 1.25, 0], color=BLACK)
bsk4 = Line([-4, 1.25, 0], [-5, -0.75, 0], color=BLACK)
bsk5 = Line([-4, 1.25, 0], [-3, -0.75, 0], color=BLACK)
bp1 = Dot([-3, -0.75, 0], color=BLACK)
bp2 = Dot([-2, 1.25, 0], color=BLACK)
bp3 = Dot([-4, 1.25, 0], color=BLACK)
vsf1 = Arrow([-3, -0.75, 0], [-2.5, 0.25, 0], color=GREEN)
vsf2 = Arrow([-2, 1.25, 0], [-2.5, 0.25, 0], color=GREEN)
bsk6 = Line([2.5, -0.75, 0], [3.5, 1.25, 0], color=BLACK)
vsf3 = Arrow([2.5, -0.75, 0], [2, -1.75, 0], color=GREEN)
vsf4 = Arrow([3.5, 1.25, 0], [4, 2.25, 0], color=GREEN)
pivot1 = VGroup(pbody1, ppivot1)
pivot2 = VGroup(pbody2, ppivot2)
sk = VGroup(bsk1, bsk2, bsk3, bsk4, bsk5, bp1, bp2, bp3, vsf1, vsf2, vsf3, vsf4)
self.add(floor, pivot1, pivot2, sk, bsk6)
class stat6(Scene):
def construct(self):
self.camera.background_color = WHITE
ground = Polygon(
[-8, -1, 0],
[8, -1, 0],
[7, -7, 0],
[-7, -7, 0],
color=GREY,
fill_color=GREY,
fill_opacity=1,
)
body = Polygon(
[-1, 1, 0],
[1, 1, 0],
[1, -1, 0],
[-1, -1, 0],
color=BLUE,
fill_color=BLUE,
fill_opacity=1,
)
velvec = Arrow(
start=[-1, 1.5, 0],
end=[1, 1.5, 0],
color=RED,
)
fricvec = Arrow(
start=[-0.75, -1, 0],
end=[-3, -1, 0],
color=YELLOW,
)
forcevec = Arrow(
start=[0.75, 0, 0],
end=[3, 0, 0],
color=GREEN,
)
tvv = MathTex(r"\vec{v}", color=RED).move_to([0, 2, 0])
tfrv = MathTex(r"\vec{F}", color=YELLOW).move_to([-2, -0.5, 0])
tfov = MathTex(r"\vec{F}_R", color=GREEN).move_to([3.5, 0, 0])
self.add(ground, body, velvec, fricvec, forcevec, tvv, tfrv, tfov)
class stat7(Scene):
def construct(self):
self.camera.background_color = WHITE
ground = Polygon(
[-8, -1, 0],
[8, -1, 0],
[7, -7, 0],
[-7, -7, 0],
color=GREY,
fill_color=GREY,
fill_opacity=1,
)
slope = Line([-2, 1, 0], [2, -1, 0], color=BLACK)
body = (
Polygon(
[-1, 1, 0],
[1, 1, 0],
[1, -1, 0],
[-1, -1, 0],
color=BLUE,
fill_color=BLUE,
fill_opacity=1,
)
.rotate(-26.56 * DEGREES, axis=[0.0, 0.0, 1.0], about_point=None)
.move_to([0, 1.1, 0])
)
velvec = Arrow(start=[-0.5, 2.75, 0], end=[2, 1.5, 0], color=RED)
fricvec = Arrow(start=[-1, 1, 0], end=[-3, 2, 0], color=YELLOW)
forcevec = Arrow(start=[0.5, 0, 0], end=[2.5, -1, 0], color=GREEN)
tvv = MathTex(r"\vec{v}", color=RED).move_to([2, 1.5, 0])
tfrv = MathTex(r"\vec{F}_R", color=YELLOW).move_to([-3, 2, 0])
tfov = MathTex(r"\vec{F}", color=GREEN).move_to([2.5, -1, 0])
tv0 = MathTex(r"\vec{v} = 0", color=RED).move_to([2, 0.5, 0])
self.add(ground, slope, body, velvec, fricvec, forcevec, tvv, tfrv, tfov, tv0)
class stat8(Scene):
def construct(self):
self.camera.background_color = WHITE
ground = Polygon(
[-8, -1, 0],
[8, -1, 0],
[7, -7, 0],
[-7, -7, 0],
color=GREY,
fill_color=GREY,
fill_opacity=1,
)
slope = Line([-2, 1, 0], [2, -1, 0], color=BLACK)
body = (
Polygon(
[-1, 1, 0],
[1, 1, 0],
[1, -1, 0],
[-1, -1, 0],
color=BLUE,
fill_color=BLUE,
fill_opacity=1,
)
.rotate(-26.56 * DEGREES, axis=[0.0, 0.0, 1.0], about_point=None)
.move_to([0, 1.1, 0])
)
velvec = Arrow(start=[-0.5, 2.75, 0], end=[2, 1.5, 0], color=RED)
fricvec = Arrow(start=[-1, 1, 0], end=[-3, 2, 0], color=YELLOW)
forcevec = Arrow(start=[0.5, 0, 0], end=[2.5, -1, 0], color=GREEN)
tvv = MathTex(r"\vec{v}", color=RED).move_to([2, 1.5, 0])
tfrv = MathTex(r"\vec{F}_R", color=YELLOW).move_to([-3, 2, 0])
tfov = MathTex(r"\vec{F}", color=GREEN).move_to([2.5, -1, 0])
tv0 = MathTex(r"\vec{v} \neq 0", color=RED).move_to([2, 0.5, 0])
self.add(ground, slope, body, velvec, fricvec, forcevec, tvv, tfrv, tfov, tv0)
class stat9(Scene):
def construct(self):
self.camera.background_color = WHITE
ground = Polygon(
[-8, -1, 0],
[8, -1, 0],
[7, -7, 0],
[-7, -7, 0],
color=GREY,
fill_color=GREY,
fill_opacity=1,
)
slope = Line([-2, 1, 0], [2, -1, 0], color=BLACK)
body = Circle(radius=1, color=BLACK).move_to([0.25, 1, 0])
velvec = Arrow(start=[-0.5, 2.75, 0], end=[2, 1.5, 0], color=RED)
fricvec = Arrow(start=[0, 0, 0], end=[-2, 1, 0], color=YELLOW)
forcevec = Arrow(start=[0, 0, 0], end=[2, -1, 0], color=GREEN)
tvv = MathTex(r"\vec{v}", color=RED).move_to([2, 1.5, 0])
tfrv = MathTex(r"\vec{F}_R", color=YELLOW).move_to([-2, 1, 0])
tfov = MathTex(r"\vec{F}", color=GREEN).move_to([2, -1, 0])
self.add(ground, slope, body, velvec, fricvec, forcevec, tvv, tfrv, tfov)
class dyn1(Scene):
def construct(self):
self.camera.background_color = WHITE
body = Circle(radius=1, color=BLACK).move_to([0, 2, 0])
pbody1 = Polygon([-0.25, 1.5, 0], [0.25, 1.5, 0], [0, 2, 0], color=BLACK)
ppivot1 = Dot([0, 2, 0], color=BLACK)
line = Line([1, 2, 0], [1, -2, 0], color=BLACK)
m = Dot([1, -2, 0], color=BLACK, radius=0.1)
vr = Arrow([0, 2, 0], [1, 2, 0], color=GREEN)
vphi = CurvedArrow([0, 3.25, 0], [1.25, 2, 0], angle=-90 * DEGREES, color=RED)
vx = Arrow([1, -2, 0], [1, -3, 0], color=BLUE)
tr = MathTex(r"R", color=GREEN).move_to([0.5, 2.5, 0])
tphi = MathTex(r"\phi", color=RED).move_to([1.5, 3, 0])
tx = MathTex(r"x", color=BLUE).move_to([1.25, -2.5, 0])
pivot1 = VGroup(pbody1, ppivot1)
self.add(body, pivot1, line, m, vr, vphi, vx, tr, tphi, tx)
class dyn2(Scene):
def construct(self):
self.camera.background_color = WHITE
ground = Polygon(
[-8, 6, 0],
[-8, -6, 0],
[-5, -6, 0],
[-5, 6, 0],
color=GREY,
fill_color=GREY,
fill_opacity=1,
)
shold = Line([-5, 0, 0], [-3, 0, 0], color=BLACK)
ss1 = Line([-3, 0, 0], [-2.5, 0.5, 0], color=BLACK)
ss2 = Line([-2.5, 0.5, 0], [-1.5, -0.5, 0], color=BLACK)
ss3 = Line([-1.5, -0.5, 0], [-0.5, 0.5, 0], color=BLACK)
ss4 = Line([-0.5, 0.5, 0], [0.5, -0.5, 0], color=BLACK)
ss5 = Line([0.5, -0.5, 0], [1.5, 0.5, 0], color=BLACK)
ss6 = Line([1.5, 0.5, 0], [2.5, -0.5, 0], color=BLACK)
ss7 = Line([2.5, -0.5, 0], [3, 0, 0], color=BLACK)
m = Dot([3, 0, 0], color=BLACK, radius=0.3)
eb1 = DashedLine([1, 2, 0], [1, -2, 0], color=BLACK)
eb2 = DashedLine([3, 2, 0], [3, -2, 0], color=BLACK)
tdx = MathTex(r"\Delta x", color=BLACK).move_to([2, -2, 0])
spring = VGroup(shold, ss1, ss2, ss3, ss4, ss5, ss6, ss7)
extension = VGroup(eb1, eb2, tdx)
self.add(ground, spring, m, extension)
class dyn3(Scene):
def construct(self):
self.camera.background_color = WHITE
body = (
Polygram(
[
[2, 1, 0],
[0, 1.5, 0],
[-1, 2, 0],
[-2, 1, 0],
[0, 0, 0],
[1, -1, 0],
],
)
.set_color(BLACK)
.round_corners(radius=0.73)
)
po = Dot([-2, -2, 0], color=BLACK, radius=0.06)
pdm = Dot([1, 1, 0], color=BLACK, radius=0.06)
pc = Dot([0, 0.75, 0], color=BLACK, radius=0.06)
vr = Arrow(
[-2, -2, 0], [1, 1, 0], color=BLUE, max_tip_length_to_length_ratio=0.05
)
vroc = Arrow(
[-2, -2, 0], [0, 0.75, 0], color=BLUE, max_tip_length_to_length_ratio=0.07
)
vv = Arrow([0, 0.75, 0], [1, 1, 0], color=RED)
vrp = Arrow([1, 1, 0], [2, 1.5, 0], color=GREEN)
vvoc = Arrow([0, 0.75, 0], [-1, 0.25, 0], color=GREEN)
tr = MathTex(r"\vec{r}", color=BLUE).move_to([-0.5, -1, 0])
troc = MathTex(r"\vec{r}_{OC}", color=BLUE).move_to([-1.5, -0.5, 0])
tvoc = MathTex(r"\vec{v}_{OC}", color=GREEN).move_to([-1, 0.25, 0])
trp = MathTex(r"\vec{r}'", color=RED).move_to([0.5, 1.25, 0])
tv = MathTex(r"\vec{v}", color=GREEN).move_to([2, 1.5, 0])
tpo = MathTex(r"O", color=BLACK).move_to([-1.5, -2, 0])
tpdm = MathTex(r"dm", color=BLACK).move_to([1, 1.5, 0])
tpc = MathTex(r"C", color=BLACK).move_to([0, 1.25, 0])
self.add(
body,
po,
pdm,
pc,
vr,
vroc,
vv,
vrp,
vvoc,
tpo,
tpdm,
tpc,
tr,
troc,
tvoc,
trp,
tv,
)