{"id":"8TEJPb32mH","url":"https://pastebin.ca/8TEJPb32mH","raw_url":"https://raw.anybin.ca/8TEJPb32mH","visibility":"public","access":"public","created_at":1793125727930,"expires_at":1793730527930,"fetch_limit":null,"fetches_used":0,"reads_remaining":null,"size_bytes":1617,"syntax_hint":null,"title":null,"filename":null,"change_note":null,"cipher":null,"cipher_meta":null,"parent_id":null,"root_id":"8TEJPb32mH","version":1,"owner_id":null,"recipient_id":null,"body":"import turtle\nimport math\n\n\ndef midpoint(p, q):\n    \"\"\"返回两点中点\"\"\"\n    return ((p[0] + q[0]) / 2, (p[1] + q[1]) / 2)\n\n\ndef midpoint_triangle(pts):\n    \"\"\"返回三角形三边中点组成的三角形（顶点顺序与原三角形一致）\"\"\"\n    return [midpoint(pts[i], pts[(i + 1) % 3]) for i in range(3)]\n\n\ndef draw_polygon(t, pts, fill=None, pen_color=\"black\"):\n    \"\"\"按给定顶点绘制多边形，可选填充颜色\"\"\"\n    t.penup()\n    t.goto(pts[0])\n    t.pendown()\n    t.pencolor(pen_color)\n    if fill is not None:\n        t.fillcolor(fill)\n        t.begin_fill()\n    for p in pts[1:]:\n        t.goto(p)\n    t.goto(pts[0])\n    if fill is not None:\n        t.end_fill()\n\n\ndef main():\n    turtle.setup(700, 600)\n    turtle.title(\"嵌套正三角形\")\n    t = turtle.Turtle()\n    t.speed(4)\n    t.pensize(2)\n\n    # 外三角形：边长 200，质心置于原点\n    s = 200\n    h = s * math.sqrt(3) / 2          # 高\n    T1 = [(-s / 2, -h / 3), (s / 2, -h / 3), (0, 2 * h / 3)]\n\n    # 中三角形：边长为 100，顶点为外三角形三边中点\n    T2 = midpoint_triangle(T1)\n\n    # 内三角形：边长为 50，顶点为中三角形三边中点\n    T3 = midpoint_triangle(T2)\n\n    # 1. 画外三角形（只描边）\n    draw_polygon(t, T1)\n\n    # 2. 画中三角形并整体填充黄色\n    draw_polygon(t, T2, fill=\"yellow\")\n\n    # 3. 画内三角形并用背景色（白色）覆盖，\n    #    这样中三角形中“不与内三角形重叠”的部分就留下黄色\n    draw_polygon(t, T3, fill=\"white\")\n\n    t.hideturtle()\n    turtle.done()\n\n\nif __name__ == \"__main__\":\n    main()"}