JS三角形绕中点旋转

时间:2014-09-29 01:02:23

标签: javascript math svg rotation trigonometry

我正在尝试围绕它的中点旋转一个三角形...计算中点并以这种格式存储在数组中:
midpoint = [midpointX,midpointY];
这些点的存储方式与points.a = [x,y]和points.b以及points.b等相同
这里是我用于旋转点A的公式,并且由于某种原因返回的值为null? (p.s. rotationAngle以度为单位)

新X = (midpoint[0] + (points.a[0]-midpoint[0])*Math.cos(Math.PI*(trig.rotation)/180) - (points.a[1]-midpoint[1])*Math.sin(Math.PI*(trig.rotation)/180))

新Y = (midpoint[1] + (points.a[1]-midpoint[1])*Math.cos(Math.PI*(rotationAngle)/180) + (points.a[0]-midpoint[0])*Math.sin(Math.PI*(rotationAngle)/180))

编辑:忘记提及这是在ng-attr

2 个答案:

答案 0 :(得分:0)

我发现你的代码片段存在一些问题:

  • new应为var:您将计算出的值存储到X和Y中。
  • trig.rotation = rotationAngle:如果它们是同一个变量,只需选择一个。您X使用trig.rotationY使用rotationAngle

我刚用var尝试了这个,当一切都被定义时,它对我来说很好。您应该尝试记录变量,以查看是否使用console.log函数定义了所有变量。

console.log(midpoint,trig.rotation,rotationAngle,points.a);
var X = (midpoint[0] + (points.a[0]-midpoint[0])*Math.cos(Math.PI*(trig.rotation)/180) - (points.a[1]-midpoint[1])*Math.sin(Math.PI*(trig.rotation)/180));
var Y = (midpoint[1] + (points.a[1]-midpoint[1])*Math.cos(Math.PI*(rotationAngle)/180) + (points.a[0]-midpoint[0])*Math.sin(Math.PI*(rotationAngle)/180));

答案 1 :(得分:0)

问题不在于公式......我正在使用ng-attr进行计算,而且没有采用Math.cos或Math.PI。很抱歉缺乏详细信息= /