summaryrefslogtreecommitdiff
path: root/FSF-2020/calculus-of-several-variables/div-curl-grad-and-all-that/Curl and conservative fields/CurlTheorem_file6_not-connected-regions.py
blob: 20972ee8e63eacaa94b2f69f1a926182ccc5509a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from manimlib.imports import *

class Connected(ThreeDScene):
	def construct(self):
		axes = ThreeDAxes()
		self.add(axes)

		connected2D = Circle(radius = 2, fill_color = BLUE_E, fill_opacity = 0.8).set_color(BLUE_E)
		connected2D_label = TextMobject("Two dimensional, simply connected").move_to(np.array([0, -3, 0])).set_color(YELLOW_E)

		connected3D = Sphere(radius = 2, checkerboard_colors = [BLUE_E, BLUE_E], stroke_color = BLUE_E).fade(0.5)
		connected3D_label = TextMobject("Three dimensional, simply connected").move_to(np.array([0, -3, 0])).set_color(YELLOW_E)

		self.set_camera_orientation(phi = 0, theta = 0, distance = 40)

		self.add(connected2D)
		self.add_fixed_in_frame_mobjects(connected2D_label)
		self.wait(2)
		self.play(FadeOut(connected2D), FadeIn(connected3D))
		self.play(FadeOut(connected2D_label))
		self.add_fixed_in_frame_mobjects(connected3D_label)
		self.move_camera(phi = 45*DEGREES, theta = 45*DEGREES)
		self.begin_ambient_camera_rotation(rate=.2)
		self.wait(2)



class NotConnected(ThreeDScene):
	def construct(self):
		axes = ThreeDAxes()
		self.add(axes)

		Nconnected2D = Annulus(fill_color = BLUE_E, fill_opacity = 0.8).set_color(BLUE_E)
		Nconnected2D_label = TextMobject("Two dimensional, not simply connected").move_to(np.array([0, -3, 0])).set_color(YELLOW_E)

		Nconnected3D = ParametricSurface(lambda u, v: np.array([(2.5 + np.cos(v))*np.cos(u),
																(2.5 + np.cos(v))*np.sin(u),
																np.sin(v)]),
		u_min = 0, u_max = 2*np.pi, v_min = 0, v_max = 2*np.pi, 
		checkerboard_colors = [BLUE_E, BLUE_E], stroke_color = BLUE_E).fade(0.5)
		Nconnected3D_label = TextMobject("Three dimensional, not simply connected").move_to(np.array([0, -3, 0])).set_color(YELLOW_E)

		self.set_camera_orientation(phi = 0, theta = 0, distance = 40)

		self.play(ShowCreation(Nconnected2D))
		self.add_fixed_in_frame_mobjects(Nconnected2D_label)
		self.wait(2)
		self.play(FadeOut(Nconnected2D), FadeIn(Nconnected3D))
		self.play(FadeOut(Nconnected2D_label))
		self.add_fixed_in_frame_mobjects(Nconnected3D_label)
		self.move_camera(phi = 45*DEGREES, theta = 45*DEGREES)
		self.begin_ambient_camera_rotation(rate=.2)
		self.wait(2)