2026河南中考数学15题-1的代码来了

四季读书网 3 0
2026河南中考数学15题-1的代码来了
已关注
关注
重播 分享

下面是代码 ,做题五分钟,写代码五小时啊。

import cgi

from re import L

from manim import *

from manim.utils.tex import TexTemplate

class FullChineseExample(Scene):

    def construct(self):

        # 创建 CTeX 模板      #下面中文和拉泰赫公式混合排版   需要安装cTex宏包

        ctex_template = TexTemplate()

        ctex_template.add_to_preamble(r"\usepackage{ctex}")

        ctex_template.tex_compiler = "xelatex"

        ctex_template.output_format = ".xdv"

        # 标题

        title = Tex(

            r"2026河南中考数学15题",

            tex_template=ctex_template,

            font_size=36

        ).to_edge(UP)

        # 题目

        timu = Tex(

            r"如图三角形ABC, $AB=AC=5$,$BC=6$,$CD$平分 $\angle ACB$,$E$在边$BC$上,$AE=2\sqrt{5}$,求$BF$的长度",

            tex_template=ctex_template,

            font_size=30

        ).next_to(title, DOWN)

        self.play(Write(title))

        self.play(Write(timu))

        self.wait()

        #绘图

        B,A,C,O = Dot([0,0,0],radius=0.05,color=RED),Dot([3,4,0],radius=0.05,color=RED),Dot([6,0,0],radius=0.05,color=RED),Dot([3,3/2,0],radius=0.05,color=RED) 

        AB = Line(A,B)

        BC = Line(B,C)

        CA = Line(C,A)

        corrds1 =(C.get_center(),O.get_center())

        corrds2 = (A.get_center(),B.get_center())

        D = Dot(line_intersection(corrds1,corrds2),radius=0.05,color=RED)

        CD = Line(C,D)

        dotgroup = VGroup(A,B,C,D)

        linegroup = VGroup(AB,BC,CA,CD)

        #标签

        A_label = Text("A",font_size=20).next_to(A,UP,buff=0.1)

        B_label = Text("B",font_size=20).next_to(B,LEFT,buff=0.1) 

        C_label = Text("C",font_size=20).next_to(C,RIGHT,buff=0.1)

        D_label = Text("D",font_size=20).next_to(D,LEFT,buff=0.1)

        labelgroup = VGroup(A_label,B_label,C_label,D_label)

        yuanshituxing =VGroup(dotgroup,labelgroup,linegroup).shift(LEFT*4+DOWN*3)

        #显示

        self.play(Write(dotgroup))

        self.play(Write(linegroup))

        self.play(Write(labelgroup))

        self.wait()

        #AH FG 辅助线

        text1 = Text("当E在靠近B时",font_size=20).to_edge(LEFT,buff=2)

        self.play(Write(text1))

        E = Dot([-3,-3,0],radius=0.05,color=RED)

        H,G = Dot([-1,-3,0],radius=0.05,color=RED),Dot([-2,-3,0],radius=0.05,color=RED)

        AE = Line(A,E)

        corrds3 =(A.get_center(),E.get_center())

        corrds4 =(C.get_center(),D.get_center())

        F= Dot(line_intersection(corrds3,corrds4),radius=0.05,color=RED)

        BF = Line(B,F)

        E_label = Text("E",font_size=20).next_to(E,DOWN,buff=0.1)

        F_label = Text("F",font_size=20).next_to(F,RIGHT+UP,buff=0.1)

        self.play(Create(E),Create(F),run_time=0.5)

        self.play(Create(E_label),Create(F_label),run_time=0.5)

        self.play(Create(AE),Create(BF),run_time=1)

        AH = DashedLine(A,H)

        FG = DashedLine(F,G)

        H_label = Text("H",font_size=20).next_to(H,DOWN,buff=0.1)

        G_label = Text("G",font_size=20).next_to(G,DOWN,buff=0.1)

        chuizhifuhao1 = RightAngle(AH,BC,color=RED,quadrant=[-1,1])

        chuizhifuhao2 = RightAngle(FG,BC,color=RED,quadrant=[-1,1])

        self.play(Create(AH),run_time=3)

        self.play(Create(H_label),run_time=0.5)

        self.play(Create(chuizhifuhao1))

        self.play(Create(FG),run_time=2)

        self.play(Create(G_label),run_time=0.5)

        self.play(Transform(chuizhifuhao1.copy(),chuizhifuhao2))

        self.wait()

        #标记角1和角2和角3

        angle1 = Angle(CA,CD,color=GREEN,quadrant=[1,1])

        angle2 = Angle(CD,Line(C,B),color=GREEN,quadrant=[1,1])

        angle3 = Angle(AE,AH,color=GREEN,quadrant=[1,1])

        self.play(Create(angle1),Create(angle2),Create(angle3),run_time=0.5)

        angle1_label = MathTex(r" \angle 1",font_size=20).move_to(angle1.point_from_proportion(0.5)+UP*0.1+LEFT*0.2)

        angle2_label = MathTex(r" \angle 2",font_size=20).move_to(angle2.point_from_proportion(0.5)+LEFT*0.2)

        angle3_label = MathTex(r" \angle 3",font_size=20).move_to(angle3.point_from_proportion(0.5)+DOWN*0.2+LEFT*0.08)

        self.play(Create(angle1_label),Create(angle2_label),Create(angle3_label),run_time=0.5)

        #计算

        tuxing1 = Polygon(A.get_center(),F.get_center(),C.get_center(),H.get_center())

        self.play(tuxing1.animate.set_fill(YELLOW,0.5))

        chuizhifuhao3 = RightAngle(Line(F,C),Line(F,A),color=RED,quadrant=[1,1])

        self.play(Transform(chuizhifuhao1.copy(),chuizhifuhao3))

        tuxing1.set_fill(opacity=0).set_stroke(opacity=0)

        sanjiaoxingAEH = Polygon(A.get_center(),E.get_center(),H.get_center())

        self.play(sanjiaoxingAEH.animate.set_fill(YELLOW,0.5))

        suanshi1 = MathTex(r" Rt\triangle AEH,AH=4,AE=2\sqrt{5}",font_size=20)

        suanshi2 = MathTex(r"\Rightarrow HE=2",font_size=20)

        suanshi3 = Text("FG是三角形AEH的中位线",font_size=20)

        suanshi4 = MathTex(r"\Rightarrow FG= \frac{1}{2} AH=2,EG= \frac{1}{2} EH =1=HG",font_size=20)

        #sanjiaoxingAEH.set_fill(0)

        suanshi5 = MathTex(r"\Rightarrow BG=2",font_size=20)

        suanshi6 = MathTex(r"\Rightarrow BF=2\sqrt{2}",font_size=20)

        #sanjiaoxingBFG.set_fill(0)

        suanshigroup1 = VGroup(suanshi1,suanshi2,suanshi3,suanshi4,suanshi5,suanshi6).arrange(DOWN,buff=0.5).shift(RIGHT*3+DOWN)

        self.play(Write(suanshigroup1[0]))

        self.play(Write(suanshigroup1[1]))

        self.play(Write(suanshigroup1[2]))

        self.play(Write(suanshigroup1[3]))

        sanjiaoxingAEH.set_fill(opacity=0).set_stroke(opacity=0)

        sanjiaoxingBFG = Polygon(B.get_center(),F.get_center(),G.get_center())

        self.play(sanjiaoxingBFG.animate.set_fill(YELLOW,0.5))

        self.play(Write(suanshigroup1[4]))

        self.play(Write(suanshigroup1[5]))

        self.wait()

        self.clear()

        #当E在右边时 绘图

        #绘图

        B,A,C,O = Dot([0,0,0],radius=0.05,color=RED),Dot([3,4,0],radius=0.05,color=RED),Dot([6,0,0],radius=0.05,color=RED),Dot([3,3/2,0],radius=0.05,color=RED) 

        AB = Line(A,B)

        BC = Line(B,C)

        CA = Line(C,A)

        corrds1 =(C.get_center(),O.get_center())

        corrds2 = (A.get_center(),B.get_center())

        D = Dot(line_intersection(corrds1,corrds2),radius=0.05,color=RED)

        CD = Line(C,D)

        dotgroup = VGroup(A,B,C,D)

        linegroup = VGroup(AB,BC,CA,CD)

        #标签

        A_label = Text("A",font_size=20).next_to(A,UP,buff=0.1)

        B_label = Text("B",font_size=20).next_to(B,LEFT,buff=0.1) 

        C_label = Text("C",font_size=20).next_to(C,RIGHT,buff=0.1)

        D_label = Text("D",font_size=20).next_to(D,LEFT,buff=0.1)

        labelgroup = VGroup(A_label,B_label,C_label,D_label)

        yuanshituxing =VGroup(dotgroup,labelgroup,linegroup).shift(LEFT*5+DOWN*3)

        #显示

        self.play(Write(dotgroup))

        self.play(Write(linegroup))

        self.play(Write(labelgroup))

        self.wait()

        E =Dot(C.get_center()+[-1,0,0],radius=0.05,color=RED)

        E_label = Text("E",font_size=20).next_to(E,DOWN,buff=0.1)

        AE = Line(A,E)

        corrds3 =(A.get_center(),E.get_center())

        corrds4 =(C.get_center(),D.get_center())

        F= Dot(line_intersection(corrds3,corrds4),radius=0.05,color=RED)

        BF = Line(B,F)

        E_label = Text("E",font_size=20).next_to(E,DOWN,buff=0.1)

        F_label = Text("F",font_size=20).next_to(F,RIGHT+UP,buff=0.1)

        self.play(Create(E),Create(F),run_time=0.5)

        self.play(Create(E_label),Create(F_label),run_time=0.5)

        self.play(Create(AE),Create(BF),run_time=1)

        text2 = Text("当E靠近C点时",font_size=30).to_edge(LEFT)

        self.play(Write(text2))

        self.wait()

        H = Dot(C.get_center()+[-3,0,0],radius=0.05,color=RED)

        G = Dot(BC.get_projection(F.get_center()),radius=0.05,color=RED)

        AH = DashedLine(A,H)

        FG = DashedLine(F,G)

        H_label = Text("H",font_size=20).next_to(H,DOWN,buff=0.1)

        G_label = Text("G",font_size=20).next_to(G,DOWN,buff=0.1)

        chuizhifuhao1 = RightAngle(AH,BC,color=RED,quadrant=[-1,1],stroke_width=1,length=0.15)

        chuizhifuhao2 = RightAngle(FG,BC,color=RED,quadrant=[-1,1],stroke_width=1,length=0.15)

        self.play(Create(AH),run_time=3)

        self.play(Create(H_label),run_time=0.5)

        self.play(Create(chuizhifuhao1))

        self.play(Create(FG),run_time=2)

        self.play(Create(G_label),run_time=0.5)

        self.play(Transform(chuizhifuhao1.copy(),chuizhifuhao2))

        self.wait()

        #标记角1和角2和角3

        angle1 = Angle(CA,CD,color=GREEN,quadrant=[1,1])

        angle2 = Angle(CD,Line(C,B),color=GREEN,quadrant=[1,1])

        angle3 = Angle(AH,AE,color=GREEN,quadrant=[1,1])

        self.play(Create(angle1),Create(angle2),Create(angle3),run_time=0.5)

        angle1_label = MathTex(r" \angle 1",font_size=20).move_to(angle1.point_from_proportion(0.5)+UP*0.1+LEFT*0.2)

        angle2_label = MathTex(r" \angle 2",font_size=20).move_to(angle2.point_from_proportion(0.5)+LEFT*0.2)

        angle3_label = MathTex(r" \angle 3",font_size=20).move_to(angle3.point_from_proportion(0.5)+DOWN*0.2)

        self.play(Create(angle1_label),Create(angle2_label),Create(angle3_label),run_time=0.5)

        #计算

        suanshi1 = Text("由前可知:EC=1,EH=2",font_size=20)

        suanshi2 = MathTex(r" \frac{EC}{EA}= \frac{EF}{FA}=\frac{GE}{HG}=\frac{1}{5}",font_size=20)

        suanshi3 = MathTex(r"\Rightarrow GE= \frac{1}{6} \times 2 = \frac{1}{3} ",font_size=20)

        suanshi4 = MathTex(r"\Rightarrow HG= \frac{5}{6} \times 2 = \frac{5}{3} ",font_size=20)

        suanshi5 = MathTex(r"\Rightarrow FG= \frac{5}{6} \times AH = \frac{1}{6} \times 4=\frac{2}{3} ",font_size=20)

        suanshi6 = MathTex(r"\Rightarrow FB^2&=BG^2+FG^2 \\ &=(\frac{14}{3})^2+(\frac{2}{3})^2 \\ &=\frac{200}{9}",font_size=20)

        suanshi7 = MathTex(r"\Rightarrow BF=\frac{10 \sqrt{2}}{3}",font_size=20)

        suanshigroup2 = VGroup(suanshi1,suanshi2,suanshi3,suanshi4,suanshi5,suanshi6,suanshi7).arrange(DOWN,buff=0.5).shift(RIGHT*3)

        self.play(Write(suanshigroup2[0]),run_time=1)

        self.wait()

        sanjiaoxingACE = Polygon(A.get_center(),C.get_center(),E.get_center())

        self.play(sanjiaoxingACE.animate.set_fill(YELLOW,0.5))

        self.play(Create(Line(C,F,color=RED,stroke_width=2)),run_time=1)

        sanjiaoxingAEH = Polygon(A.get_center(),E.get_center(),H.get_center())

        self.play(sanjiaoxingAEH.animate.set_fill(BLUE,0.5))

        self.play(Create(Line(F,G,color=RED,stroke_width=2)),run_time=1)

        self.play(Write(suanshigroup2[1:5]),run_time=5)

        self.wait()

        sanjiaoxingACE.set_fill(opacity=0).set_stroke(opacity=0)

        sanjiaoxingAEH.set_fill(opacity=0).set_stroke(opacity=0)

        sanjiaoxingBFG = Polygon(B.get_center(),F.get_center(),G.get_center())

        self.play(sanjiaoxingBFG.animate.set_fill(GREEN,1))

        self.wait()

        self.play(Write(suanshigroup2[5:7]))

        self.wait()

抱歉,评论功能暂时关闭!