代码拉取完成,页面将自动刷新
import matplotlib.pyplot as plt
import numpy as np
def calculate_subsquare_centers(corner1, corner2, corner3, corner4):
"""
计算由四个顶点组成的正方形分成九个小正方形后,每个小正方形的中心点的坐标
"""
# 将输入的四个顶点按顺序排列
corners = np.array([corner1, corner2, corner3, corner4], dtype=np.float32)
# 假设corner1是右下,corner2是左下,corner3是右上,corner4是左上
right_down, left_down, right_up, left_up = corners[0], corners[1], corners[2], corners[3]
# 计算每个边的向量
right_vector = (right_up - right_down) / 3
down_vector = (left_down - right_down) / 3
# 计算每个小正方形中心点的坐标
centers = []
for i in range(3):
for j in range(3):
center_x = right_down[0] + right_vector[0] * (2.5 - j) + down_vector[0] * (2.5 - i)
center_y = right_down[1] + right_vector[1] * (2.5 - j) + down_vector[1] * (2.5 - i)
centers.append((center_x, center_y))
return centers
# def visualize_square_with_centers(corner1, corner2, corner3, corner4, centers):
# """
# 可视化正方形及其中心点
# """
# corners = [corner1, corner2, corner3, corner4, corner1] # 按顺序连接顶点,形成正方形
#
# plt.figure(figsize=(8, 8))
# plt.plot(*zip(*corners), marker='o', color='b', linestyle='-') # 绘制正方形
#
# for i, center in enumerate(centers):
# plt.plot(center[0], center[1], 'ro') # 绘制中心点
# plt.annotate(str(i + 1), (center[0], center[1]), textcoords="offset points", xytext=(0, 5),
# ha='center') # 添加顺序标签
#
# plt.xlabel('X')
# plt.ylabel('Y')
# plt.title('Square and Subsquare Centers')
# plt.grid(True)
# plt.gca().set_aspect('equal', adjustable='box')
# plt.show()
#
#
# # 示例使用
# corner1 = (218.549, -33.6182) # 左上
# corner2 = (280.2896, -29.4903) # 左下
# corner3 = (218.2278, 36.7736) # 右上
# corner4 = (279.2795, 37.5407) # 右下
#
# centers = calculate_subsquare_centers(corner1, corner2, corner3, corner4)
# visualize_square_with_centers(corner1, corner2, corner3, corner4, centers)
#
# print("Centers in the specified order:")
# for i, center in enumerate(centers):
# print(f"Center {i + 1}: {center}")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。