Python各类图形绘制—turtle与Matplotlib-26、六边形面积计算
目录
Python各类图形绘制—turtle与Matplotlib-26、六边形面积计算
前言
既然是学习数学,肯定会离不开各种图形,之前的文章中很多我都尽可能的不使用图来表示了,但是觉得不好,毕竟数学离开了图就会很抽象,所以我们这里单独的学习一下Python的各类图形绘制,包含绘制切线什么的,这样在数学学习的图像处理上就会好很多。
编号 | 中文名称 | 英文名称 | 图形说明 |
---|---|---|---|
1 | 点 | Point | 几何中最基本元素,无大小、长度、宽度、高度,仅表示位置,二维平面用坐标 (x, y) 确定位置 |
2 | 线段 | Line Segment | 直线上两点间的有限部分,有两个端点,可确定长度,由两端点坐标确定位置和长度 |
3 | 射线 | Ray | 由线段一端无限延长形成,有一个端点,另一端无限延伸,不可测量长度 |
4 | 直线 | Line | 没有端点,可向两端无限延伸,不可度量长度,平面直角坐标系中可用线性方程表示 |
5 | 角 | Angle | 由两条有公共端点的射线组成,公共端点是顶点,两条射线是边,用度数衡量大小 |
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) # 将起点稍微偏移以使图形居中
t.pendown()
for _ in range(6):
t.forward(side_length)
t.left(60)
# 绘制阴影区域(这里我们填充六边形的1/3区域)
t.fillcolor("gray")
t.begin_fill()
t.forward(side_length)
t.left(60)
t.forward(side_length)
t.left(120)
t.forward(side_length)
t.end_fill()
# 计算阴影面积
# 在正六边形中,这个三角形区域的面积
shaded_area = (side_length ** 2 * math.sqrt(3)) / 4
# 显示计算结果
t.penup()
t.goto(-150, 240)
t.write("计算过程:", font=("Arial", 16, "normal"))
t.goto(-150, 210)
t.write(f"1. 边长 = {side_length}", font=("Arial", 14, "normal"))
t.goto(-150, 190)
t.write(f"2. 边长的平方 = {side_length}² = {side_length**2}", font=("Arial", 14, "normal"))
t.goto(-150, 160)
t.write(f"3. √3 = {math.sqrt(3):.4f}", font=("Arial", 14, "normal"))
t.goto(-150, 130)
t.write(f"4. 阴影面积 = (边长² × √3) ÷ 4", font=("Arial", 14, "normal"))
t.goto(-150, 100)
t.write(f"5. 最终结果 = ({side_length**2} × {math.sqrt(3):.4f}) ÷ 4 = {shaded_area:.2f} 平方单位",
font=("Arial", 14, "normal"))
# 保持窗口显示
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] # 6个角度
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='六边形')
# 绘制阴影区域(三角形)
triangle_x = [x[0], x[1], x[2]]
triangle_y = [y[0], y[1], y[2]]
plt.fill(triangle_x, triangle_y, 'gray', alpha=0.5, label='阴影区域')
# 计算阴影面积
shaded_area = (side_length ** 2 * math.sqrt(3)) / 4
# 添加计算过程说明
calculation_text = [
"计算过程:",
f"1. 边长 = {side_length}",
f"2. 边长的平方 = {side_length}² = {side_length**2}",
f"3. √3 = {math.sqrt(3):.4f}",
"4. 阴影面积 = (边长² × √3) ÷ 4",
f"5. 最终结果 = ({side_length**2} × {math.sqrt(3):.4f}) ÷ 4 = {shaded_area:.2f} 平方单位"
]
# 在图形右侧添加计算过程
plt.text(1.2*side_length, 0.5*side_length, '\n'.join(calculation_text),
bbox=dict(facecolor='white', alpha=0.8))
# 设置图形属性
plt.title('六边形阴影面积计算', fontsize=14)
plt.axis('equal')
plt.grid(True)
plt.legend(prop={'size': 12}) # 设置图例字体大小
# 调整布局
plt.tight_layout()
# 显示图形
plt.show()
效果示例: