summaryrefslogtreecommitdiff
path: root/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux
diff options
context:
space:
mode:
Diffstat (limited to 'FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux')
-rw-r--r--FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/README.md8
-rw-r--r--FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.gifbin0 -> 7695314 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.py50
-rw-r--r--FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.gifbin0 -> 20725583 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.py81
-rw-r--r--FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file3_normal_vector.gifbin0 -> 24776215 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file3_normal_vector.py47
-rw-r--r--FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gifbin0 -> 3620201 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.py228
9 files changed, 414 insertions, 0 deletions
diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/README.md b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/README.md
new file mode 100644
index 0000000..0af7aa1
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/README.md
@@ -0,0 +1,8 @@
+**file1_flux_through_sphere.py**
+![file1_flux_through_sphere](file1_flux_through_sphere.gif)
+**file2_mobius_strip.py**
+![file2_mobius_strip](file2_mobius_strip.gif)
+**file3_normal_vector.py**
+![file3_normal_vector](file3_normal_vector.gif)
+**file4_cube_surface.py**
+![file4_cube_surface](file4_cube_surface.gif)
diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.gif
new file mode 100644
index 0000000..43327bf
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.py
new file mode 100644
index 0000000..e07715e
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.py
@@ -0,0 +1,50 @@
+from manimlib.imports import *
+class fluxsphere(ThreeDScene):
+
+
+ def construct(self):
+ s = Sphere(checkerboard_colors=[BLUE_D,BLUE_D])
+ s.scale(2.3)
+
+ n = VGroup(
+ *[self.n(*self.func(u, v))
+ for u in np.arange(0, PI, 0.4)
+ for v in np.arange(0, TAU, 0.8)]
+ )
+
+
+
+ self.move_camera(0.8 * PI / 2, -0.45 * PI)
+ self.play(Write(s))
+ # self.play(Write(f))
+ self.play(ShowCreation(n), run_time=4)
+ # self.add(n)
+ self.begin_ambient_camera_rotation(rate=0.1)
+ self.wait(5)
+
+
+ def func(self, u, v):
+ return [
+ np.cos(v) * np.sin(u),
+ np.sin(v) * np.sin(u),
+ np.cos(u)
+ ]
+
+ def vect(self, x, y, z):
+ return np.array([
+ x, y, z
+ ])
+
+ def n(self, x, y, z):
+ vect = np.array([
+ x,
+ y,
+ z
+ ])
+
+ mag = math.sqrt(vect[0] ** 2 + vect[1] ** 2 + vect[2] ** 2)
+ v = Vector(
+ (1.5/mag) * vect,
+ color=RED_B,
+ stroke_width=4).shift(2*x * RIGHT + 2*y * UP + 2*z * OUT)
+ return v
diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.gif
new file mode 100644
index 0000000..9623046
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.py
new file mode 100644
index 0000000..31b1990
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.py
@@ -0,0 +1,81 @@
+from manimlib.imports import *
+
+class Mobius(ThreeDScene):
+ def construct(self):
+ axes=ThreeDAxes()
+
+
+
+ R=2.5
+
+
+ mobius = ParametricSurface(
+ lambda u, v: np.array([
+ (R+u*np.cos(v/2))*np.cos(v),
+ (R+u*np.cos(v/2))*np.sin( v),
+ u*np.sin(v/2)
+ ]),
+ u_min = -0.5, u_max = 0.5, v_min = 0, v_max = 2*PI,
+
+ resolution=(6, 32)).fade(0.5) #Resolution of the surfaces
+ circle=Circle(radius=2.5, color=BLUE)
+
+
+
+ mobius.rotate(PI/2, axis=RIGHT)
+ mobius.rotate(PI/2, axis=OUT)
+ # # mobius.shift(RIGHT+OUT+DOWN)
+
+
+
+
+
+ along = ParametricSurface(
+ lambda u, v: np.array([
+ (R+u*np.cos(v/2))*np.cos(v),
+ (R+u*np.cos(v/2))*np.sin(v),
+ 0
+ ]),
+ u_min = -0.5, u_max = 0.5, v_min = 0, v_max = 2*PI,
+
+ resolution=(6, 32)).fade(0.5) #Resolution of the surfaces
+ circle=Circle(radius=2.5, color=BLUE)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ self.set_camera_orientation(phi=75 * DEGREES,theta=-75*DEGREES)
+
+ self.play(Write(mobius))
+
+ self.wait(1)
+ self.begin_ambient_camera_rotation(rate=0.65)
+
+ self.wait(10)
+ self.stop_ambient_camera_rotation()
+ self.wait(1)
+
+
+
+
+
+
diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file3_normal_vector.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file3_normal_vector.gif
new file mode 100644
index 0000000..a8f2990
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file3_normal_vector.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file3_normal_vector.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file3_normal_vector.py
new file mode 100644
index 0000000..a959210
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file3_normal_vector.py
@@ -0,0 +1,47 @@
+from manimlib.imports import *
+class S(ThreeDScene):
+ def construct(self):
+ axes=ThreeDAxes()
+
+ sphere=Sphere(radius=2,checkerboard_colors=[BLUE_C,BLUE_B],fill_opacity=0.75)
+
+
+ v1=Vector(color=YELLOW,buff=5)
+ v1.rotate(PI/4,axis=DOWN)
+ v1.shift(1.5*RIGHT+1.5*OUT)
+
+ v2=Vector(color=RED,buff=5)
+ v2.rotate(PI/4,axis=DOWN)
+ v2.rotate(PI,axis=DOWN)
+ v2.shift(0.77*RIGHT+0.77*OUT)
+
+
+
+
+ n1=TextMobject(r"$\vec{n}$",color=YELLOW)
+ n2=TextMobject(r"$-\vec{n}$",color= RED)
+ n1.rotate(PI/2,axis=RIGHT)
+ n1.shift(2*RIGHT+2*OUT)
+ n2.rotate(PI/2,axis=RIGHT)
+ n2.shift(0.42*RIGHT+0.42*OUT)
+
+
+
+ self.set_camera_orientation(phi=75 * DEGREES,theta=-45*DEGREES)
+ # self.add(mobius)
+ # self.play(ShowCreation(axes))
+ self.play(ShowCreation(axes))
+ # self.play(ShowCreation(vg))
+ self.play(ShowCreation(sphere))
+ self.wait(0.7)
+ self.play(ShowCreation(v1, run_time=2))
+ self.play(ShowCreation(n1))
+ self.wait(1)
+ self.begin_ambient_camera_rotation(rate=0.65)
+ self.wait(2)
+ self.play(ShowCreation(v2, run_time=3))
+ self.wait(3)
+ self.play(ShowCreation(n2))
+
+ self.stop_ambient_camera_rotation()
+ self.wait(1.2)
diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif
new file mode 100644
index 0000000..c6101cf
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.py
new file mode 100644
index 0000000..9301a00
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.py
@@ -0,0 +1,228 @@
+from manimlib.imports import*
+
+
+
+class cuber(ThreeDScene):
+ def construct(self):
+
+ axes=ThreeDAxes()
+ cube=Cube()
+ # cube.scale(1)
+ cube.shift(RIGHT+DOWN+OUT)
+
+
+
+ sq3=Square(color=RED, fill_opacity=0.85)
+ sq3.rotate(PI/2, axis=UP)
+ sq3.shift(DOWN+OUT+2*RIGHT)
+
+ x=TextMobject("x")
+ y=TextMobject("y")
+ z=TextMobject("z")
+
+ x.rotate(PI/2, axis=RIGHT)
+ x.rotate(PI/4,axis=OUT)
+ x.shift(5.8*DOWN)
+
+ y.rotate(PI/2, axis=RIGHT)
+ y.rotate(PI/8,axis=OUT)
+ y.shift(5.8*RIGHT)
+
+ z.rotate(PI/2, axis=RIGHT)
+ z.rotate(PI/5,axis=OUT)
+ z.shift(3.2*OUT+0.4*LEFT)
+ axis_label=VGroup(x,y,z)
+
+ v1=Vector(color=YELLOW,buff=15)
+ v1.rotate(PI/4,axis=RIGHT)
+ v1.shift(2*RIGHT+1*DOWN+1*OUT)
+
+
+ n1=TextMobject(r"$\vec{n}$",color=YELLOW)
+ n1.scale(0.8)
+ n1.rotate(PI/2,axis=RIGHT)
+ n1.shift(3*RIGHT+1.3*OUT+DOWN)
+
+ spaceloc = [[0,0,2],[1,0,2],[-1,0,2],[2,0,2],[-2,0,2],[3,0,2],[-3,0,2],
+ [0,1,2],[1,1,2],[-1,1,2],[2,1,2],[-2,1,2],[3,1,2],[-3,1,2],
+ [0,-1,2],[1,-1,2],[-1,-1,2],[2,-1,2],[-2,-1,2],[3,-1,2],[-3,-1,2],
+ [0,2,2],[1,2,2],[-1,2,2],[2,2,2],[-2,2,2],[3,2,2],[-3,2,2],
+ [0,-2,2],[1,-2,2],[-1,-2,2],[2,-2,2],[-2,-2,2],[3,-2,2],[-3,-2,2],
+ [0,3,2],[1,3,2],[-1,3,2],[2,3,2],[-2,3,2],[3,3,2],[-3,3,2],
+ [0,3,2],[1,3,2],[-1,3,2],[2,3,2],[-2,3,2],[3,3,2],[-3,3,2],
+ [0,4,2],[1,4,2],[-1,4,2],[2,4,2],[-2,4,2],[3,4,2],[-3,4,2],
+ [0,4,2],[1,4,2],[-1,4,2],[2,4,2],[-2,4,2],[3,4,2],[-3,4,2],
+ [0,5,2],[1,5,2],[-1,5,2],[2,5,2],[-2,5,2],[3,5,2],[-3,5,2],
+ [0,5,2],[1,5,2],[-1,5,2],[2,5,2],[-2,5,2],[3,5,2],[-3,5,2],
+ [0,6,2],[1,6,2],[-1,6,2],[2,6,2],[-2,6,2],[3,6,2],[-3,6,2],
+ [0,1.5,2],[1,1.5,2],[-1,1.5,2],[2,1.5,2],[-2,1.5,2],[3,1.5,2],[-3,1.5,2],
+ [0,3,2],[1,3,2],[-1,3,2],[2,3,2],[-2,3,2],[3,3,2],[-3,3,2]]
+
+
+ veclist1=[Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E)]
+
+
+
+
+
+ [veclist1[i].rotate(PI/4,axis=RIGHT) for i in range(10,30,1)]
+ [veclist1[i].rotate(PI/4,axis=RIGHT) for i in range(40,80,2)]
+ [veclist1[i].rotate(PI/6,axis=OUT) for i in range(98)]
+ [veclist1[i].rotate(PI/8,axis=DOWN) for i in range(98)]
+ vectorfield1=VGroup(*veclist1)
+ [veclist1[i].shift(spaceloc[i]) for i in range(98)]
+
+
+
+
+ veclist2=[Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),
+ Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E)]
+
+
+
+
+
+ [veclist2[i].rotate(PI/4,axis=RIGHT) for i in range(10,30,1)]
+ [veclist2[i].rotate(PI/4,axis=RIGHT) for i in range(40,80,2)]
+ [veclist2[i].rotate(PI/6,axis=OUT) for i in range(98)]
+ [veclist2[i].rotate(PI/8,axis=DOWN) for i in range(98)]
+ vectorfield2=VGroup(*veclist2)
+ [veclist2[i].shift(spaceloc[i]) for i in range(98)]
+
+
+
+ veclist3=[Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector()]
+
+
+
+
+
+ [veclist3[i].rotate(PI/4,axis=RIGHT) for i in range(10,30,1)]
+ [veclist3[i].rotate(PI/4,axis=RIGHT) for i in range(40,80,2)]
+ [veclist3[i].rotate(PI/6,axis=OUT) for i in range(98)]
+ [veclist3[i].rotate(PI/8,axis=DOWN) for i in range(98)]
+ vectorfield3=VGroup(*veclist3)
+ [veclist3[i].shift(spaceloc[i]) for i in range(98)]
+
+
+
+
+ veclist4=[Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(),
+ Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector()]
+
+
+
+
+
+ [veclist4[i].rotate(PI/4,axis=RIGHT) for i in range(10,30,1)]
+ [veclist4[i].rotate(PI/4,axis=RIGHT) for i in range(40,80,2)]
+ [veclist4[i].rotate(PI/6,axis=OUT) for i in range(98)]
+ [veclist4[i].rotate(PI/8,axis=DOWN) for i in range(98)]
+ vectorfield4=VGroup(*veclist4)
+ [veclist4[i].shift(spaceloc[i]) for i in range(98)]
+
+
+ vectorfield1.shift(1.5*DOWN)
+ vectorfield2.shift(IN+1.5*DOWN)
+ vectorfield3.shift(2*IN+1.5*DOWN)
+ vectorfield4.shift(3*IN+1.5*DOWN)
+
+ vectors=[vectorfield1,vectorfield2,vectorfield3,vectorfield4]
+ vectorfield=VGroup(*vectors)
+ vectorfield.scale(1.25)
+
+ fv=[Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),
+ Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),
+ Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),
+ Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),
+ ]
+
+ spaceloc2 = [[1.5,0.5,0.5],[1.5,1,0.5],[1.5,1.5,0.5],[1.5,2,0.5],
+ [1.5,0.5,1],[1.5,1,1],[1.5,1.5,1],[1.5,2,1],
+ [1.5,0.5,1.5],[1.5,1,1.5],[1.5,1.5,1.5],[1.5,2,1.5],
+ [1.5,0.5,2],[1.5,1,2],[1.5,1.5,2],[1.5,2,2]]
+
+ [fv[i].rotate(PI/4,axis=RIGHT) for i in range(1)]
+ [fv[i].rotate(PI/6,axis=OUT) for i in range(16)]
+ [fv[i].rotate(PI/8,axis=DOWN) for i in range(16)]
+ [fv[i].shift(spaceloc2[i]) for i in range(16)]
+ fvfield=VGroup(*fv)
+ fvfield.shift(0.5*IN+2*DOWN)
+
+ flux=TextMobject("Flux through one side of the cube").set_color(ORANGE)
+ flux.shift(3*UP+1.5*LEFT)
+
+
+
+
+
+ self.set_camera_orientation(phi=70 * DEGREES,theta=-75*DEGREES)
+ self.play(ShowCreation(axes),ShowCreation(axis_label))
+ self.play(ShowCreation(vectorfield))
+ self.add(fvfield)
+ self.begin_ambient_camera_rotation(rate=0.01)
+
+ self.play(ShowCreation(cube, run_time=1))
+
+ self.wait(1)
+ self.play(ShowCreation(sq3))
+ self.wait(1)
+ self.play(FadeOut(cube))
+ self.play(FadeOut(vectorfield))
+ self.add_fixed_in_frame_mobjects(flux)
+ # self.play(ShowCreation(flux))
+ self.wait(1)
+ self.play(ShowCreation(v1),ShowCreation(n1))
+ self.wait(6)
+ # self.stop_ambient_camera_rotation()
+