2016-12-28 52 views
0

我想在画布上绘制一个旋转的椭圆,我试图使用lineTo方法。如何使用lineTo()方法在画布中绘制旋转的椭圆?

我知道用这个公式

xposition = centerX + Math.cos(angle) * radiusX; yposition = centerY + Math.sin(angle) * radiusY;

可以绘制一个椭圆,但我不知道如何添加一些天使作为参数,使其为旋转,像围绕x轴或y轴或z轴。

回答

2

要旋转椭圆绕其中心,可以使用公式:

x = rx * Cos(t) * Cos(fi) - ry * Sin(t) * Sin(fi) + cx 
y = rx * Cos(t) * Sin(fi) + ry * Sin(t) * Cos(fi) + cy 

绕Z轴(约坐标原点),采用

x = (cx + rx * Cos(t)) * Cos(fi) - (cy + ry * Sin(t)) * Sin(fi) 
y = (cx + rx * Cos(t)) * Sin(fi) + (cy + ry * Sin(t)) * Cos(fi) 

围绕Y-或X轴,应用旋转仿射变换,忽略Z坐标(在OXY平面上投影)

+0

你能解释一下这个公式是怎么出来的吗? –

+0

还是有一些链接引用它? –

+0

https://en.wikipedia.org/wiki/Transformation_matrix。椭圆围绕中心点旋转 - 旋转+平移 – MBo