如何获得圆的x,y距离

时间:2018-07-23 17:51:34

标签: javascript math trigonometry

enter image description here

我绘制了一个宽度和长度为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距离的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

您的座标原点似乎在包围的正方形的左上方,y轴向下。

在这种情况下,

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

答案 1 :(得分:2)

[更新] 您可以使用以下公式获得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.sin(deg)
    y = radius * Math.cos(deg)
}

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

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

但是,如果角度大于45°,则必须使用直线和y轴之间的角度,该角度等于90-(角度值)。

我希望这能解决您的问题。

答案 2 :(得分:1)

在某人进行编辑后,您的帖子包含正确的表达式,用于从圆心(表中的“从中心”行开始)计算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>