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
|
from manimlib.imports import *
class GR(GraphScene):
CONFIG = {
"x_axis_label": "",
"y_axis_label": "",
"x_min": -4,
"x_max": 6,
"y_min": -6,
"y_max": 10,
"graph_origin": ORIGIN
}
def construct(self):
self.setup_axes()
def curve(x):
return 3 - (3653*x**2)/5292 + (2477*x**3)/31752 + (13*x**4)/784 - (17*x**5)/5292 + (17*x**6)/63504
graph = FunctionGraph(curve, x_min=-3, x_max=6, stroke_width = 2, color = BLUE)
tracker = ValueTracker(-3)
text = TextMobject(r'The curvature at point $P_{1}$ is \\ lesser than that at point $P_{2}$: \\ as $\kappa = \frac{1}{R}$').shift(3.2*RIGHT+3*UP).scale(0.6)
dot1 = Dot((0,3,0), color = YELLOW)
dot1label = TextMobject(r'$P_{1}$').next_to(dot1, UP+RIGHT, buff = 0.1)
dot2 = Dot((4,-1, 0), color = YELLOW)
dot2label = TextMobject(r'$P_{2}$').next_to(dot2, DOWN, buff = 0.1)
dots = VGroup(*[dot1, dot2, dot1label, dot2label])
def get_tangent_line():
line = Line(
ORIGIN, 2 * RIGHT,
color=RED,
stroke_width=4,
)
dx = 0.0001
x = tracker.get_value()
p0 = np.array([x-dx,curve(x-dx),0])
p1 = np.array([x, curve(x), 0])
p2 = np.array([x + dx, curve(x + dx), 0])
angle = angle_of_vector(p2 - p1)
line.rotate(angle)
line.move_to(p0)
return line
line = always_redraw(get_tangent_line)
self.add(graph,line, dots, text)
self.wait(1.2)
self.play(tracker.set_value, 6, rate_func=smooth, run_time=13)
self.play(FadeOut(VGroup(*[graph, self.axes, line, dots, text])))
self.wait()
|