我正在尝试围绕它的中点旋转一个三角形...计算中点并以这种格式存储在数组中:
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
内答案 0 :(得分:0)
我发现你的代码片段存在一些问题:
new
应为var
:您将计算出的值存储到X和Y中。trig.rotation
= rotationAngle
:如果它们是同一个变量,只需选择一个。您X
使用trig.rotation
而Y
使用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。很抱歉缺乏详细信息= /