Python各类图形绘制—turtle与Matplotlib-27、正六边形面积与周长的计算

 Python各类图形绘制—turtle与Matplotlib-27、正六边形面积与周长的计算

目录

 Python各类图形绘制—turtle与Matplotlib-27、正六边形面积与周长的计算

前言

开发环境

turtle_demo

Matplotlib_demo


前言

既然是学习数学,肯定会离不开各种图形,之前的文章中很多我都尽可能的不使用图来表示了,但是觉得不好,毕竟数学离开了图就会很抽象,所以我们这里单独的学习一下Python的各类图形绘制,包含绘制切线什么的,这样在数学学习的图像处理上就会好很多。

编号中文名称英文名称图形说明
1Point几何中最基本元素,无大小、长度、宽度、高度,仅表示位置,二维平面用坐标 (x, y) 确定位置
2线段Line Segment直线上两点间的有限部分,有两个端点,可确定长度,由两端点坐标确定位置和长度
3射线Ray由线段一端无限延长形成,有一个端点,另一端无限延伸,不可测量长度
4直线Line没有端点,可向两端无限延伸,不可度量长度,平面直角坐标系中可用线性方程表示
5Angle由两条有公共端点的射线组成,公共端点是顶点,两条射线是边,用度数衡量大小
6三角形Triangle同一平面内不在同一直线上的三条线段首尾顺次连接组成的封闭图形。按边分有等边(三边相等)、等腰(至少两边相等)、不等边三角形;按角分有锐角(三角皆锐角)、直角(一角为直角)、钝角(一角为钝角)三角形
7四边形Quadrilateral由不在同一直线上的四条线段依次首尾相接围成的封闭的平面图形或立体图形。常见的有平行四边形(两组对边分别平行)、矩形(四个角为直角的平行四边形)、菱形(四条边相等的平行四边形)、正方形(四个角为直角且四条边相等的平行四边形)、梯形(一组对边平行,另一组对边不平行)等
8五边形Pentagon由五条线段首尾相连组成的封闭图形,内角和为 540 度,正五边形五条边相等,五个角也相等
9六边形Hexagon由六条线段首尾相连围成的封闭图形,内角和为 720 度,正六边形六条边相等,六个内角也相等,每个内角为 120 度
10圆形Circle平面上到定点的距离等于定长的所有点组成的图形,定点称为圆心,定长称为半径。圆是轴对称图形,也是中心对称图形
11椭圆Ellipse平面内到两个定点的距离之和等于常数(大于两定点间距离)的点的轨迹,这两个定点叫做椭圆的焦点,两焦点间的距离叫做焦距
12扇形Sector一条圆弧和经过这条圆弧两端的两条半径所围成的图形,扇形面积与圆心角(顶角)、圆半径相关
13弓形Segment of a circle由弦及其所对的弧组成的图形,可分为劣弧弓形(小于半圆)和优弧弓形(大于半圆)

开发环境

系统:win11
开发语言:Python
使用工具:Jupyter Notebook
使用库:turtle与Matplotlib

turtle_demo

代码示例:

import turtle
import math

# 初始化画布
screen = turtle.Screen()
screen.title("正六边形周长与面积计算")
t = turtle.Turtle()
t.speed(3)

# 设置六边形的边长
side_length = 100

# 将起点移到适当位置(图形向右移动)
t.penup()
t.goto(50, -86.6)  # 从-50改为50
t.pendown()

# 绘制正六边形
for _ in range(6):
    t.forward(side_length)
    t.left(60)

# 计算周长和面积
perimeter = 6 * side_length
total_area = (3 * math.sqrt(3) * side_length ** 2) / 2

# 显示计算过程(文字向上向左移动)
t.penup()
t.goto(-300, 300)  # 从-200,200改为-400,400
t.write("正六边形计算过程:", font=("Arial", 16, "normal"))

t.goto(-300, 340)  # 从-200,170改为-400,370
t.write(f"1. 边长 = {side_length} 单位", font=("Arial", 14, "normal"))

t.goto(-300, 310)  # 从-200,140改为-400,340
t.write(f"2. 周长计算:", font=("Arial", 14, "normal"))
t.goto(-280, 280)  # 从-180,110改为-380,310
t.write(f"周长 = 6 × 边长 = 6 × {side_length} = {perimeter} 单位", 
        font=("Arial", 14, "normal"))

t.goto(-280, 250)  # 从-200,80改为-400,280
t.write("3. 面积计算:", font=("Arial", 14, "normal"))
t.goto(-280, 220)  # 从-180,50改为-380,250
t.write(f"• 边长的平方 = {side_length}² = {side_length**2} 平方单位", 
        font=("Arial", 14, "normal"))
t.goto(-280, 190)  # 从-180,20改为-380,220
t.write(f"• √3 = {math.sqrt(3):.4f}", font=("Arial", 14, "normal"))
t.goto(-80, 160)  # 从-180,-10改为-380,190
t.write("• 面积公式 = (3 × √3 × 边长²) ÷ 2", font=("Arial", 14, "normal"))
t.goto(-280, 130)  # 从-180,-40改为-380,160
t.write(f"• 最终面积 = {total_area:.2f} 平方单位", 
        font=("Arial", 14, "normal"))

# 隐藏
t.hideturtle()

# 保持窗口显示
screen.mainloop()

效果示例:

Matplotlib_demo

代码示例:

import numpy as np
import matplotlib.pyplot as plt
import math

# 设置中文字体支持
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 创建图形
plt.figure(figsize=(10, 8))
ax = plt.gca()

# 设置六边形的边长
side_length = 100

# 计算六边形的顶点
angles = np.linspace(0, 2*np.pi, 7)[:-1]
x = side_length * np.cos(angles)
y = side_length * np.sin(angles)

# 绘制六边形
plt.plot(np.append(x, x[0]), np.append(y, y[0]), 'b-', label='正六边形')

# 计算正六边形的周长和面积
perimeter = 6 * side_length
total_area = (3 * math.sqrt(3) * side_length ** 2) / 2

# 添加计算过程说明
calculation_text = [
    "正六边形计算过程:",
    f"\n1. 边长 = {side_length} 单位",
    f"2. 周长计算:",
    f"   周长 = 6 × 边长 = 6 × {side_length} = {perimeter} 单位",
    f"\n3. 面积计算:",
    f"   • 边长的平方 = {side_length}² = {side_length**2} 平方单位",
    f"   • √3 = {math.sqrt(3):.4f}",
    "   • 面积公式 = (3 × √3 × 边长²) ÷ 2",
    f"   • 最终面积 = (3 × {math.sqrt(3):.4f} × {side_length**2}) ÷ 2",
    f"   • 面积 = {total_area:.2f} 平方单位"
]

# 调整文本位置和样式
plt.text(1.2*side_length, 0.5*side_length, '\n'.join(calculation_text),
         bbox=dict(facecolor='white', alpha=0.8, pad=10))

# 设置图形属性
plt.title('正六边形周长与面积计算', fontsize=14)
plt.axis('equal')
plt.grid(True)
plt.legend(prop={'size': 12})

# 调整布局
plt.tight_layout()

# 显示图形
plt.show()

效果示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值