You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取摆线上指定x坐标对应的y交点坐标?

解决摆线x对应y值的计算问题

首先明确摆线的参数方程(半径为radius的圆沿x轴滚动形成的摆线):

x = radius * (θ - sinθ)
y = radius * (1 - cosθ)

其中θ是圆滚动的角度(弧度制)。由于x和θ并非一一对应(摆线存在重复区间),需先根据给定的x和半径反推θ,再代入y的公式计算。

实现步骤

  1. 反推θ值:x = radius*(θ - sinθ)没有解析解,需用牛顿迭代法做数值求解。
  2. 计算y值:得到θ后,直接代入摆线的y参数方程即可。

具体代码替换方案

假设你的代码中已定义radius(摆线对应圆的半径)和x(目标x坐标),将const y = 0替换为以下代码:

// 牛顿迭代法求解θ
function getTheta(radius, x) {
  let theta = x / radius; // 初始猜测值
  const tolerance = 1e-6; // 精度阈值,可按需调整
  let delta;

  do {
    const f = radius * (theta - Math.sin(theta)) - x;
    const fPrime = radius * (1 - Math.cos(theta));
    delta = f / fPrime;
    theta -= delta;
  } while (Math.abs(delta) > tolerance);

  return theta;
}

// 计算摆线对应的y值
const theta = getTheta(radius, x);
const y = radius * (1 - Math.cos(theta));

注意事项

  • 上述代码默认处理摆线的第一拱(θ在0~2π区间),如果需要处理多拱场景,需先判断x所在区间,调整θ的初始值(比如x超过2*Math.PI*radius时,初始θ需加上2*Math.PI*Math.floor(x/(2*Math.PI*radius)))。
  • 精度阈值tolerance越小,计算结果越精准,但迭代次数会相应增加。

内容的提问来源于stack exchange,提问作者Alin C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 10:40:56