2

三个不同的人告诉我,这是旋转椭圆的正确方法:

// Get current position on the elliptical path.
var x = Math.cos( this.timer.delta() * this.speed ) * ( this.pathWidth / 2 );
var y = Math.sin( this.timer.delta() * this.speed ) * ( this.pathHeight / 2 );

// Rotate the ellipse.
var newX = x * Math.cos( this.angle ) - y * Math.sin( this.angle );
var newY = x * Math.sin( this.angle ) - y * Math.cos( this.angle );

我正在使用计时器,以便椭圆路径上的位置随着时间的推移而循环。

当 this.angle = 0 时,路径没有变化。

但是当 this.angle 大于 0 时,椭圆不会保持它的比例。它被挤压和拉动。而且一个度数的增量之间的差异非常严重。

编辑1:

另外,我希望 this.angle == 0 时的路径与 180、360、540、720 等时的路径相同。

但它们都是不同的。

编辑2:

尽管错字已被纠正,但行为相同。

编辑 3:

通过将度数转换为弧度并改用它们来解决行为。

像这样:

this.angleRadians = this.angle * ( Math.PI / 180 );
4

1 回答 1

5

你的newX等式是错误的。你不见了y

于 2012-10-15T06:02:36.383 回答