首页 文章

如何使用javascript方法在翻转的圆圈上找到x和y坐标

提问于
浏览
0

我试图在圆圈上找到X,Y点,其中0度从圆顶开始并顺时针移动 . 通常,要在具有已知半径和角度的圆上找到x,y坐标,您可以简单地使用公式x = r(cos(度°)),y = r(sin(度°)) . 圆圈看起来像这样,度数将从0°逆时针方向扩展 .
enter image description here

但是,我使用的是一个圆圈,其中0°从顶部开始,并且随着围绕圆圈顺时针移动,度数会扩大 . 假设 var r = 60;var degrees = 130; 我可以使用什么公式(或javascript方法)来确定X,Y值 . 注意:我可以假设原点为0,60,因为r = 60.谢谢 .
enter image description here

2 回答

  • 1

    由于整圆有2个辐射,因此您可以使用以下公式计算圆的点坐标:

    x =半径* Math.sin(Math.PI * 2 * angle / 360); y =半径* Math.cos(Math.PI * 2 * angle / 360);

    var radius = 60;
    var angle  = 140;
    var x = radius * Math.sin(Math.PI * 2 * angle / 360);
    var y = radius * Math.cos(Math.PI * 2 * angle / 360);
    console.log('Points coors are  x='+ 
       Math.round(x * 100) / 100 +', y=' +
       Math.round(y * 100) / 100)
    
  • 1

    诀窍是将您的问题转换为您知道如何解决的问题 . 你可以通过从你的角度减去90度并取消y来做到这一点,即x = r cos(theta-90)和y = -r sin(theta-90) . 在JavaScript中:

    function circleXY(r, theta) {
      // Convert angle to radians
      theta = (theta-90) * Math.PI/180;
    
      return {x: r*Math.cos(theta),
              y: -r*Math.sin(theta)}
    }
    
    for (var theta=0; theta<=360; theta += 30) {
      var answer = circleXY(60, theta);
      console.log('(x, y) = ' + '(' + answer.x + ', ' + answer.y + ') for theta=' + theta);
    }
    

    产生以下结果:

    对于θ= 0,(x,y)=(3.67394039744206e-15,60)

    对于θ= 30,(x,y)=(30.000000000000007,51.96152422706631)

    (x,y)=(51.96152422706632,29.999999999999996)theta = 60

    对于θ= 90,(x,y)=(60,0)

    (x,y)=(51.96152422706632,-29.999999999999996)为theta = 120

    对于θ= 150,(x,y)=(30.000000000000007,-51.96152422706631)

    对于θ= 180,(x,y)=(3.67394039744206e-15,-60)

    对于θ= 210,(x,y)=( - 29.999999999999986,-51.96152422706632)

    (x,y)=( - 51.96152422706632,-29.999999999999996)为theta = 240

    对于θ= 270,(x,y)=( - 60,-7.34788079488412e-15)

    (x,y)=( - 51.96152422706631,30.000000000000007)for theta = 300

    (x,y)=( - 30.00000000000003,51.961524227066306)for theta = 330

    对于θ= 360,(x,y)=( - 1.1021821192326178e-14,60)

相关问题