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

求SVG圆形polarToCartesian的逆函数:笛卡尔坐标转极坐标

实现极坐标转笛卡尔坐标函数的逆函数

你提到的原函数用于将极坐标(圆心、半径、角度)转换为笛卡尔坐标,其核心是将角度偏移90度后再进行弧度转换计算。对应的逆函数需要从笛卡尔坐标反推回原函数使用的角度值,以下是实现代码:

function cartesianToPolarAngle(centerX, centerY, radius, x, y) {
  // 计算点相对于圆心的坐标差
  const dx = x - centerX;
  const dy = y - centerY;

  // 通过atan2计算弧度(基于x轴正方向的逆时针角度)
  const angleInRadians = Math.atan2(dy, dx);

  // 转换为角度并修正原函数的90度偏移
  let angleInDegrees = (angleInRadians * 180 / Math.PI) + 90;

  // 确保角度落在0-360的有效值范围内
  if (angleInDegrees < 0) {
    angleInDegrees += 360;
  }

  return angleInDegrees;
}

逻辑说明:

  • 先计算目标点相对于圆心的偏移量dx和dy,这是反推角度的基础
  • 使用Math.atan2(dy, dx)获取弧度值,该函数能正确处理所有象限的坐标,避免单一Math.atan的象限歧义
  • 原函数中对输入角度做了angleInDegrees - 90的偏移,因此逆过程需要加回90度来还原原始角度
  • 最后将负角度修正为0-360范围内的正值,和原函数支持的SVG角度有效值保持一致

这个函数和你提供的polarToCartesian严格一一对应,输入原函数的输出坐标,将返回对应的输入角度值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:55:19