三个不同的人告诉我,这是旋转椭圆的正确方法:
// 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 );