【问题标题】:How to get x, y distance from a circle如何得到一个圆的x,y距离
【发布时间】:2018-12-31 06:00:26
【问题描述】:

我绘制了一个正方形,其宽度和长度为 20x 或 20y,然后我在正方形内绘制了一个半径为 10x 的圆。现在,来自圆心的光线以 45 度角穿过圆的边界(可以是 38 度或任何角度)。现在如何从正方形中获得射线和圆的连接地的 x 和 y 距离?

我试过这段代码:

var radius = 10 //radius,
    x = Math.cos(Math.PI * 45 / 180) * radius
    y = Math.sin(Math.PI * 45 / 180) * radius

我没有得到这段代码的确切距离,得到这个 x & y 距离的正确方法是什么?

【问题讨论】:

  • Delowar - 这不是错字,而是“错误”
  • 你没有在任何一个方程中使用radius
  • 现在您已将变量切换为 radius
  • 没有人知道获取距离的正确代码吗?请帮帮我

标签: javascript math trigonometry


【解决方案1】:

[更新] 您可以使用以下公式获得 x 和 y 距离:

var radius = 10 //radius,

var angle = 90

var d = Math.PI/180 //to convert deg to rads

if (0 <= angle & angle <= 45){
    deg = angle * d
    x = radius * Math.cos(deg)
    y = radius * Math.sin(deg)
}else if( 45 < angle & angle <= 90){
    deg = (90-angle) * d
    x = radius * Math.cos(deg)
    y = radius * Math.sin(deg)
}

console.log("x = " + x)
console.log("y = " + y)

如果角度小于 45°,我们使用代码中显示的常规公式。

但如果角度大于 45°,我们必须使用直线与 y 轴之间的夹角,等于 90-(角度值)。

希望这能解决你的问题。

【讨论】:

  • 感谢您的回答,如果角度小于或大于 45 度,我该怎么办?我的意思是如果角度是 38 度,那么有什么解决方案可以得到 x,y 距离吗?
  • @Chems,这仅适用于 45 度
【解决方案2】:

您的坐标原点似乎是封闭正方形的左上角,y 轴向下。

在这种情况下,

var radius = 10 //radius,
    x = radius + Math.cos(Math.PI * 45 / 180) * radius
    y = radius - Math.sin(Math.PI * 45 / 180) * radius

【讨论】:

    【解决方案3】:

    经过某人的编辑后,您的帖子包含了从圆心(表格中的“从中心”行)计算 x 和 y 坐标的正确表达式。为了让“剩余”部分到其边界正方形的边缘(表中的“到边界”行),可以从半径中减去这些距离:

    function calculate(){
      var radius=document.getElementById("radius").valueAsNumber||10;
      var radians=document.getElementById("degrees").valueAsNumber*Math.PI/180||0;
      document.getElementById("x1").innerHTML=radius*Math.cos(radians);
      document.getElementById("y1").innerHTML=radius*Math.sin(radians);
      document.getElementById("x2").innerHTML=radius-radius*Math.cos(radians)
      document.getElementById("y2").innerHTML=radius-radius*Math.sin(radians)
    }
    <input type="number" placeholder="radius" id="radius"><br>
    <input type="number" placeholder="degrees" id="degrees"><br>
    <button onclick="calculate()">Calculate</button><br>
    <table border="1">
    <tr><th></th><th>x</th><th>y</th></tr>
    <tr><th>from center</th><td id="x1"></td><td id="y1"></td></tr>
    <tr><th>to border</th><td id="x2"></td><td id="y2"></td></tr>
    </table>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-10
      • 2020-11-01
      • 2022-07-29
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      相关资源
      最近更新 更多