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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
from manimlib.imports import*
#---- visualization of total differential definition
class totaldifferential(ThreeDScene):
def construct(self):
axes = ThreeDAxes().fade(0.5)
surface = ParametricSurface(
lambda u, v: np.array([
u,
v,
u**2+v**2
]),u_min=-1,u_max=1, v_min=-1,v_max=1).set_color("#FF69B4").fade(0.6).shift([1,0.8,1.5]).scale(2)
plane = Rectangle(color = '#E6E6FA',fill_opacity = 1).scale(3).shift(-1*RIGHT+3*UP).fade(0.9)
label_x = TextMobject("$x$").shift(5*RIGHT+0.4*DOWN).rotate(1.571)
label_y = TextMobject("$y$").shift(0.3*DOWN+5.6*RIGHT).scale(0.5)
label_z = TextMobject("$z$").shift(3.5*UP+0.2*LEFT).scale(0.5)
s1 = Square(color = '#00FF00',fill_opacity=0.4).shift([1,1,0])
s2 = Square(color = '#00FF00',fill_opacity=0.4).shift([1,1,3]).scale(0.95)
l1 = Line([2,0,3],[2,0,0],color = '#FFFACD')
l2 = Line([0,2,3],[0,2,0],color = '#FFFACD')
l3 = Line([2,1.95,3],[2,2,0],color = '#FFFACD')
d1 = Dot([2,0,1.5],color = '#FFD700').rotate(1.571,UP)
d1_text = TextMobject("$P1$").scale(0.4).shift(1.2*LEFT+1.1*UP)
d2 = Dot([0,2,3],color = '#FFD700').rotate(1.571,UP)
d2_text = TextMobject("$P2$").scale(0.4).shift(2.3*RIGHT+3.1*UP)
d3 = Dot([2,2,2],color = '#FFD700').rotate(1.571,UP)
d3_text = TextMobject("$Q$").scale(0.4).shift([1.6,-1,0]+2.5*UP)
s3 = Square().shift([1,1,1.5]).scale(0.95)
s4 = Square().shift([1,1,2]).scale(0.95)
m1_line = DashedLine([2,0,1.5],[2,2,2],color = '#87CEEB')
m2_line = DashedLine([2,2,2],[0,2,3],color = '#87CEEB')
dx_line = Line([2,2,0],[4,2,0],color = '#00FF7F')
dy_line = Line([2,2,0],[2,4,0],color = '#00FF7F')
dx = DashedLine([3.5,0,0],[3.5,2,0],color = '#87CEEB')
dy = DashedLine([0,3.5,0],[2,3.5,0],color = '#87CEEB')
dx_text = TextMobject("$dx$").scale(0.8).shift([4,1,0]).rotate(1.571)
dy_text = TextMobject("$dy$").scale(0.8).shift([1,3.8,0]).rotate(math.radians(180))
parx_line = Line([0,2,1.5],[0,5,1.5],color = '#00FF7F')
parm_line = Line([0,2,2],[0,5,2],color = '#00FF7F')
pary_line = Line([0,2.1,3],[0,5,3],color = '#00FF7F')
delx = DashedLine([0,4,2],[0,4,1.5],color = '#F0F8FF')
dely = DashedLine([0,4,3],[0,4,2],color = '#FAEBD7')
dely_text = TextMobject("$\\frac{\\partial z}{\\partial y}dy$").shift(4.6*RIGHT+2.3*UP).scale(0.4)
delx_text = TextMobject("$\\frac{\\partial z}{\\partial x}dx$").shift(4.6*RIGHT+1.4*UP).scale(0.4)
self.set_camera_orientation(phi=75*DEGREES,theta=20*DEGREES)
self.add(axes)
self.play(Write(plane))
self.play(ShowCreation(label_x))
self.add_fixed_in_frame_mobjects(label_y)
self.add_fixed_in_frame_mobjects(label_z)
self.wait(1)
self.play(Write(surface))
self.play(ShowCreation(d1))
self.add_fixed_in_frame_mobjects(d1_text)
self.play(ShowCreation(d2))
self.add_fixed_in_frame_mobjects(d2_text)
self.wait(1)
self.play(Write(s2))
self.wait(1)
self.play(Write(l1),Write(l2),Write(l3))
self.wait(1)
self.play(Write(s1))
self.wait(1)
self.play(FadeOut(surface))
self.play(ShowCreation(d3))
self.add_fixed_in_frame_mobjects(d3_text)
self.play(ShowCreation(m1_line))
self.play(ShowCreation(m2_line))
self.wait(1)
self.play(ShowCreation(dx_line),ShowCreation(dx),ShowCreation(dx_text))
self.wait(1)
self.play(ShowCreation(dy_line),ShowCreation(dy),ShowCreation(dy_text))
self.wait(2)
self.play(Write(s3))
self.play(Write(s4))
self.wait(1)
self.play(ShowCreation(parx_line),ShowCreation(parm_line),ShowCreation(pary_line))
self.wait(1)
self.play(ShowCreation(dely))
self.add_fixed_in_frame_mobjects(dely_text)
self.wait(1)
self.play(ShowCreation(delx))
self.add_fixed_in_frame_mobjects(delx_text)
self.wait(1)
|