Python计算半圆5个等距坐标代码与参考实现差异疑问
半圆等距点计算问题解答
核心差异:等距分段逻辑错误
你和参考代码的分歧本质是对「半圆上5个等距点」的分段逻辑不同:
- 5个点要覆盖完整的
θ∈[0, π]半圆(对应角度0°~180°),总弧度长度为π,5个点之间会形成4个等长间隔,因此每个间隔的弧度为π/(5-1) = π/4(即45°),这是参考代码的计算依据。 - 你的代码按36°间隔取值,是错误的将总角度180°除以点数5得到间隔,同时跳过了0°的起始点,生成的点既不覆盖完整半圆边界,也不符合等距要求。
参考代码逻辑拆解
import math r=float(input())/2 op=[[round(r*math.cos(i*math.pi/4),2),round(r*math.sin(i*math.pi/4),2)] for i in range(5)] print(op)
range(5)生成索引i为0、1、2、3、4,刚好对应5个目标点- 每个点的角度计算:
i * π/4,依次得到角度值0、π/4、π/2、3π/4、π,刚好覆盖0到π的完整上半圆,相邻点弧长完全相等,符合题目要求 - 生成的5个坐标依次为:(r,0)、(r√2/2, r√2/2)、(0,r)、(-r√2/2, r√2/2)、(-r,0),正好是上半圆的均匀等距点
你的代码问题明细
你的代码range(36, 181, 36)生成的角度为36°、72°、108°、144°、180°,存在两个问题:
- 缺失了半圆起始点0°(坐标(r, 0)),不符合题目要求的重叠圆形边界范围
- 36°的间隔不是半圆的均匀等分间隔,生成的点不满足等距要求
内容的提问来源于stack exchange,提问作者blaze
相关产品推荐
相关产品推荐

