Μια απόδειξη της πρότασης : εφ(a)εφ(b)+εφ(b)εφ(c)+εφ(c)εφ(a)=1 όταν a+b+c=π/2.
Το βίντεο με τα animations έγινε με το λογισμικό manim.
οδηγίες για την εγκατάσταση του λογισμικού Manim και για δημιουργία μαθηματικών animation εδώ
Ο κώδικας για τη δημιουργία των 125 animation βρίσκεται παρακάτω.
from manim import *
class tantantan(Scene):
def construct(self):
rtarrow0 = Tex('Prove that if', r'$\ \alpha,\ \beta \ and \ \gamma$', ' are any positive angles such that ', r"$\alpha + \beta + \gamma = \frac{\pi}{2} $", font_size=40)
rtarrow1 = Tex('then, 'r"$\tan \alpha \tan \beta+\tan \beta \tan \gamma+\tan \gamma \tan \alpha=1$", font_size=48)
self.add(VGroup(rtarrow0, rtarrow1).arrange(DOWN))
self.play(
Create(rtarrow0), Create(rtarrow1)
)
self.wait(1.5)
A = VGroup(rtarrow0, rtarrow1).to_edge(LEFT)
A.generate_target() # copyA to target
A.target.scale(0.7).shift(RIGHT+UP*3) # target
self.play(MoveToTarget(A))
self.wait()
self.play(Uncreate(A))
self.wait()
myShift=4
p1= [3-myShift,1.02-myShift,0] #ποιντ A
p2= [9-myShift,1-myShift,0] #point b
p3= [3-myShift,5-myShift,0] #point c
trigono = Line(p1,p2).append_points(Line(p2,p3).points).append_points(Line(p3,p1).points)
cSide=Line(p2,p1) #side AB
aSide=Line(p2,p3) #side BC
bSide=Line(p1,p3) #side AC
a_text = Text('A').next_to(p1, DOWN)
b_text = Text('B').next_to(p2, DOWN)
c_text = Text('C').next_to(p3, UP)
self.add(VGroup(a_text,b_text,c_text))
self.wait(1)
self.play(FadeIn(VGroup(aSide,bSide,cSide)))
self.wait(1)
a_1 = Angle(aSide, cSide, radius=0.7, other_angle=False)
tex1 = MathTex(r"\beta").move_to(
Angle(
aSide, cSide, radius=0.7 + 3 * SMALL_BUFF, other_angle=False
).point_from_proportion(0.5)
)
self.play(FadeIn(a_1))
self.play(FadeIn(tex1))
self.wait()
trig1_text=Tex(r"$cos(\beta)=\frac{adjacent \ AB}{hypotenuse \ CB}$").scale(0.9)
trig2_text=Tex(r"$sec(\beta)=\frac{hypotenuse \ CB}{adjacent \ AB}$").scale(0.9)
trig3_text=Tex(r"$tan(\beta)=\frac{opposite \ AC}{adjacent \ AB}$").scale(0.9)
mobjects = VGroup(
trig1_text,trig2_text,trig3_text
)
mobjects.scale(1.1)
mobjects.arrange_submobjects(DOWN,buff=2).shift(4*LEFT)
anims = AnimationGroup(
*[GrowFromCenter(mob) for mob in mobjects]
)
self.play(anims)
self.wait()
trig1_text2=Tex(r"$cos(\theta)=\frac{adjacent}{hypotenuse}$").scale(0.9)
trig2_text2=Tex(r"$sec(\theta)=\frac{hypotenuse}{adjacent}$").scale(0.9)
trig3_text2=Tex(r"$tan(\theta)=\frac{opposite}{adjacent}$").scale(0.9)
mobjects2 = VGroup(
trig1_text2,trig2_text2,trig3_text2
)
mobjects2.scale(1.1)
mobjects2.arrange_submobjects(DOWN,buff=0.1).shift(4*LEFT)
self.play(ClockwiseTransform(mobjects, mobjects2))
#self.wait()
mobjects2.generate_target() # copy mobjects2 to target
mobjects2.target.scale(1).shift(LEFT).shift(2.7*UP) # target.to_edge(LEFT+UP)
self.remove(mobjects)
self.play(MoveToTarget(mobjects2))
self.wait()
self.play(
*[Uncreate(mob) for mob in VGroup(a_text,b_text,c_text,aSide,bSide,cSide,a_1,tex1)]
)
self.wait()
HorShift=2.5
VerShift=3
q1= [1-HorShift,0-VerShift,0] #point Α
q2= [8.92-HorShift,0-VerShift,0] #point Β
q3= [1-HorShift,6.4-VerShift,0] #point c
q4= [8.92-HorShift,6.4-VerShift,0] #point Δ
q5= [5.66-HorShift,6.4-VerShift,0] #ποιντ Ε
q6= [8.92-HorShift,4.07-VerShift,0] #ποιντ z
a2_text = Text('A').next_to(q1,LEFT+UP)
b2_text = Text('B').next_to(q2)
c2_text = Text('C').next_to(q3, LEFT)
d2_text = Text('D').next_to(q4)
e2_text = Text('E').next_to(q5, DOWN)
z2_text = Text('Z').next_to(q6)
acSide=Line(q1,q3) #side AC
aeSide=Line(q1,q5) #side AE
abSide=Line(q1,q2) #side AB
azSide=Line(q1,q6) #side AZ
ceSide=Line(q3,q5) #side CE
ezSide=Line(q5,q6) #side EZ
edSide=Line(q5,q4) #side ED
zdSide=Line(q6,q4) #side ZD
zbSide=Line(q6,q2) #side ZB
self.add(VGroup(a2_text,c2_text,acSide))
#angle eAc
a_3 = Angle(aeSide, acSide, radius=0.7, other_angle=False)
texa3 = MathTex(r"\alpha").move_to(
Angle(
aeSide, acSide, radius=0.7 + 3 * SMALL_BUFF, other_angle=False
).point_from_proportion(0.5)
)
self.play(FadeIn(a_3))
self.play(FadeIn(texa3))
self.wait()
tana_text = Tex(r"$tan(\alpha)$").next_to(ceSide, DOWN).shift(0.2*UP).scale(0.8)
seca_text = Tex(r"$sec(\alpha)$").next_to(aeSide, LEFT).shift(2.8*RIGHT).rotate(58*PI/180).scale(0.8)
tanb_text = Tex(r"$tan(\beta)$").next_to(edSide, DOWN).shift(0.2*UP).shift(.2*RIGHT).scale(0.8)
one_text = Text('1').next_to(acSide, LEFT)
secatanb_text = Tex(r"$sec(\alpha) \cdot \tan(\beta)$").next_to(ezSide).scale(0.7).shift(3.5*LEFT).shift(0.25*DOWN).rotate(-37*PI/180)
tanatanb_text = Tex(r"$tan(\alpha) \cdot \tan(\beta)$").scale(0.5).rotate(-PI/2).next_to(zdSide)
tanatanb2_text = Tex(r"$tan(\alpha) + \tan(\beta)$").scale(0.8).next_to(abSide, UP)
tangtanatanb_text = Tex(r"$tan(\gamma)\cdot (tan(\alpha) + \tan(\beta))$").scale(0.5).rotate(-PI/2).next_to(zbSide)#.shift(2.5*LEFT)
self.play(Create(one_text))
self.wait()
r_a= RightAngle(acSide,ceSide,length=0.3, quadrant=(-1,1), color=RED)
self.play(Create(VGroup(aeSide,ceSide,e2_text,r_a)))
self.wait()
#angle zAe
a_4 = Angle(azSide, aeSide, radius=0.7, other_angle=False)
texa4 = MathTex(r"\beta").move_to(
Angle(
azSide, aeSide, radius=0.7 + 3 * SMALL_BUFF, other_angle=False
).point_from_proportion(0.5)
)
self.play(FadeIn(a_4))
self.play(FadeIn(texa4))
self.wait()
r_a= RightAngle(aeSide,ezSide,length=0.3, quadrant=(-1,1), color=RED)
self.play(Create(VGroup(azSide,r_a,ezSide,z2_text)))
self.wait()
#angle bAz
a_4 = Angle(abSide, azSide, radius=0.7, other_angle=False)
texa4 = MathTex(r"\gamma").move_to(
Angle(
abSide, azSide, radius=0.7 + 3 * SMALL_BUFF, other_angle=False
).point_from_proportion(0.5)
)
self.play(FadeIn(a_4))
self.play(FadeIn(texa4))
self.wait()
r_a= RightAngle(abSide,zbSide,length=0.3, quadrant=(-1,-1), color=RED)
self.play(Create(VGroup(abSide,r_a,zbSide,b2_text)))
self.wait()
r_a= RightAngle(edSide,zdSide,length=0.3, quadrant=(-1,-1), color=RED)
self.play(Create(VGroup(edSide,r_a,zdSide,d2_text)))
self.wait()
a_2 = Angle(ezSide, edSide, radius=0.7, other_angle=False)
texa2 = MathTex(r"\alpha").move_to(
Angle(
ezSide, edSide, radius=0.7 + 3 * SMALL_BUFF, other_angle=False
).point_from_proportion(0.5)
)
self.play(FadeIn(a_2))
self.play(FadeIn(texa2))
self.wait()
ace_triangle = Polygon(q1,q3,q5)
ace_triangle.set_fill(YELLOW, opacity=0.5) # set the color and transparency
self.play(Create(ace_triangle))
ace_text1 = MathTex(r"tan(C\widehat{A}E)=",r"\frac{CE}{AC}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text2 = MathTex(r"tan(\alpha)=",r"\frac{CE}{1}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text3 = MathTex("CE=",r"tan(\alpha)",color=GOLD, font_size=36).to_edge(LEFT)
ace_text0=trig3_text2.generate_target() # copy mobjects2 to trig3_text2
self.play(MoveToTarget(trig3_text2))
self.wait(1.5)
self.add(ace_text1)
self.play(TransformMatchingTex(ace_text0, ace_text1))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text1, ace_text2))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text2, ace_text3))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text3, tana_text))
self.wait(1.5)
ace_text1 = MathTex(r"sec(C\widehat{A}E)=",r"\frac{AE}{AC}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text2 = MathTex(r"sec(\alpha)=",r"\frac{AE}{1}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text3 = MathTex("AE=",r"sec(\alpha)",color=GOLD, font_size=36).to_edge(LEFT)
ace_text0=trig2_text2.generate_target() # copy mobjects2 to trig3_text2
self.play(MoveToTarget(trig2_text2))
self.wait(1.5)
self.add(ace_text1)
self.play(TransformMatchingTex(ace_text0, ace_text1))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text1, ace_text2))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text2, ace_text3))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text3, seca_text))
self.wait(1.5)
self.play(Uncreate(ace_triangle))
self.wait(1)
aze_triangle = Polygon(q1,q6,q5)
aze_triangle.set_fill(YELLOW, opacity=0.5) # set the color and transparency
self.play(Create(aze_triangle))
ace_text1 = MathTex(r"tan(Z\widehat{A}E)=",r"\frac{ZE}{AE}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text2 = MathTex(r"tan(\beta)=",r"\frac{ZE}{\sec(\alpha)}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text3 = MathTex("ZE=",r"\sec (\alpha) \cdot tan(\beta)",color=GOLD, font_size=36).to_edge(LEFT)
ace_text0=trig3_text2.generate_target() # copy mobjects2 to trig3_text2
self.play(MoveToTarget(trig3_text2))
self.wait(1.5)
self.add(ace_text1)
self.play(TransformMatchingTex(ace_text0, ace_text1))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text1, ace_text2))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text2, ace_text3))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text3, secatanb_text))
self.wait(1.5)
self.play(Uncreate(aze_triangle))
self.wait(1)
zde_triangle = Polygon(q6,q4,q5)
zde_triangle.set_fill(YELLOW, opacity=0.5) # set the color and transparency
self.play(Create(zde_triangle))
ace_text1 = MathTex(r"sec(Z\widehat{E}D)=",r"\frac{EZ}{DE}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text2 = MathTex(r"sec(\alpha)=",r"\frac{\sec (\alpha) \cdot tan(\beta)}{DE}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text3 = MathTex("DE=",r"tan(\beta)",color=GOLD, font_size=36).to_edge(LEFT)
ace_text0=trig2_text2.generate_target() # copy mobjects2 to trig3_text2
self.play(MoveToTarget(trig2_text2))
self.wait(1.5)
self.add(ace_text1)
self.play(TransformMatchingTex(ace_text0, ace_text1))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text1, ace_text2))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text2, ace_text3))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text3, tanb_text))
self.wait(1.5)
ace_text1 = MathTex(r"tan(Z\widehat{E}D)=",r"\frac{DZ}{DE}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text2 = MathTex(r"tan(\alpha)=",r"\frac{DZ}{tan(\beta)}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text3 = MathTex("DZ=",r"tan(\alpha) \cdot tan(\beta)",color=GOLD, font_size=36).to_edge(LEFT)
ace_text0=trig3_text2.generate_target() # copy mobjects2 to trig3_text2
self.play(MoveToTarget(trig3_text2))
self.wait(1.5)
self.add(ace_text1)
self.play(TransformMatchingTex(ace_text0, ace_text1))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text1, ace_text2))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text2, ace_text3))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text3, tanatanb_text))
self.wait(1.5)
self.play(Uncreate(zde_triangle))
self.wait(1)
ace_text1 = MathTex(r"AB=",r"CE+ED",color=GOLD, font_size=36).to_edge(LEFT)
ace_text2 = MathTex("AB=",r"tan(\alpha)+",r"tan(\beta)",color=GOLD, font_size=36).to_edge(LEFT)
self.add(ace_text1)
self.wait(1.5)
self.play(TransformMatchingTex(ace_text1, ace_text2))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text2, tanatanb2_text))
self.wait(1.5)
azb_triangle = Polygon(q1,q6,q2)
azb_triangle.set_fill(YELLOW, opacity=0.5) # set the color and transparency
self.play(Create(azb_triangle))
ace_text1 = MathTex(r"tan(Z \widehat{A} B)=",r"\frac{ZB}{AB}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text2 = MathTex(r"tan(\gamma)=",r"\frac{ZB}{tan(\alpha)+tan(\beta)}",color=GOLD, font_size=36).to_edge(LEFT)
ace_text3 = MathTex(r"ZB=",r"tan(\gamma)\cdot (tan(\alpha) + tan(\beta))",color=GOLD, font_size=36).to_edge(LEFT)
ace_text0=trig3_text2.generate_target() # copy mobjects2 to trig3_text2
self.play(MoveToTarget(trig3_text2))
self.wait(1.5)
self.add(ace_text1)
self.play(TransformMatchingTex(ace_text0, ace_text1))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text1, ace_text2))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text2, ace_text3))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text3, tangtanatanb_text))
self.wait(1.5)
self.play(Uncreate(azb_triangle))
self.wait(1)
ace_text1 = MathTex(r"AC=",r"DZ+DB",color=GOLD, font_size=36).to_edge(LEFT)
ace_text2 = MathTex("1=",r"tan(\alpha) \cdot tan(\beta)+\\ ",r"tan(\gamma)\cdot (tan(\alpha) + tan(\beta))",color=GOLD, font_size=36).to_edge(LEFT)
ace_text3 = MathTex("1=",r"tan(\alpha) \cdot tan(\beta)+\\ ",r"tan(\gamma)\cdot tan(\alpha) +\\ tan(\gamma)\cdot tan(\beta)\ \ \ ",color=GOLD, font_size=36).to_edge(LEFT).shift(.4*LEFT)
self.add(ace_text1)
self.wait(1.5)
self.play(TransformMatchingTex(ace_text1, ace_text2))
self.wait(1.5)
self.play(TransformMatchingTex(ace_text2, ace_text3))
self.wait(1.5)
framebox1 = SurroundingRectangle(ace_text3, buff = .1)
self.play(Create(framebox1),)
self.wait(1)
Αφήστε μια απάντηση
Για να σχολιάσετε πρέπει να συνδεθείτε.