求大神js代码 知道A点的坐标,绕着O(原点)旋转任意角度求出旋转后的B坐标。

JavaScript022

求大神js代码 知道A点的坐标,绕着O(原点)旋转任意角度求出旋转后的B坐标。,第1张

这是数学题啊....

Rotate = function(Source,Angle)//Angle为正时逆时针转动, 单位为弧度

{

var A,R

A = Math.atan2(Source.Y,Source.X)//atan2自带坐标系识别, 注意X,Y的顺序

A += Angle//旋转

R = Math.sqrt(Source.X * Source.X + Source.Y * Source.Y)//半径

return {

X : Math.cos(A) * R,

Y : Math.sin(A) * R

}

}

Rotate({X : 0,Y : 4},-Math.PI / 4)

注意, 由於牵扯浮点运算, 所以你如果调用

Rotate({X : 0,Y : 4},Math.PI / 2)

返回可能会是{X: -4, Y: 4.898425415289509e-16}

Y很小但不等於0

当然如果用矩阵变换也是可以写的..

绕着某个点旋转90度的坐标公式:r=(x1-n)+(y1-m)。

在平面内,一个图形绕着一个定点旋转一定的角度得到另一个图形的变化叫做旋转。这个定点叫做旋转中心,旋转的角度叫做旋转角,如果一个图形上的点A经过旋转变为点A',那么这两个点叫做旋转的对应点。坐标旋转90度,点横坐标的绝对值,变成纵坐标的绝对值。

旋转90度坐标的变化规律

在由x,y轴构成的直角坐标系中,设a点坐标为(x,y)关于原点顺时针旋转,我们知道运动是相对的,点关于原点顺时针旋转90可以想像为点不动而坐标轴以原点为圆心逆时针旋转90。

此时点a在旋转后的坐标系中的坐标恰好是将原坐标系中x与y值的对换,考虑到坐标系中存在正负值,旋转后的结果即为:(x转=y,y转=-x)。旋转90度的坐标特点是X轴与Y轴之间互换了。

坐标是 (sindzcosdy, sindxcosdz, sindycosdx)

答案是这样算的:

先绕着Z旋转dz,得到(sindz, cosdz,1)

再绕着X旋转得到(sindz, sindxcosdz, cosdx)

最后绕着Y旋转得到 (sindzcosdy, sindxcosdz, sindycosdx)

就旋转法向量就好拉,别的不理.

追问:

谢谢啊!一个字“牛”,一看就是我想要的答案,不过我还想问问就是它的开始朝向垂直轴有没有影响呢?

追答:

youdoido:我刚才也看了一下,有些不可以忽略的东西被我忽略了.. 我的思路是这样的,每次旋转都可以放到平面上旋转的. 绕着X旋转的话, 就可以把X轴忽略掉,并且X坐标不变. 绕着Y轴旋转,可以把Y轴忽略掉,变成平面坐标,而且Y轴的值不变. 我刚才又算了一下,发现答案是有点问题. 我再看看吧. 不好意思哈哈.. 刚打错字了.