需要帮助理解JavaScript中椭圆的数学公式

时间:2018-04-25 13:35:53

标签: javascript animation math formula

需要帮助理解此代码,该代码用于使图像以椭圆形状移动。我不明白的是,e,px和py变量的公式。 e变量究竟是什么定义了复杂的方式?我知道它使用了一些数学公式,但我不知道哪些数学公式。

export class AppComponent {
  presentYear = this.getCurrentYear();
  minYear = this.getCurrentYear();
  year: number;

  private getCurrentYear(): number {
    return new Date().getUTCFullYear();
  }

  public setMinYear(value: number) {
    const firstYear = 1950;
    if (value >= firstYear) {
      this.minYear = firstYear;
    } else {
      this.minYear = this.presentYear;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

Sinus和cosinus: 想象一个90°角的三角形。 1行是水平的,另一行是右侧是垂直的,第三行是从左下到右上。 我们称左边的角度是e(是的,它是你函数中的e)

e的正弦被定义为右边的垂直线除以对角线; cosinus e =水平线(接触角度e)/对角线。

-

现在绘制一个中间角为e且半径=对角线长度的圆。 如果抬起角度e,您将看到垂直线变大,水平线变小(保持对角线的长度不变),直到达到90°。当然,你可以超过90°,然后垂直线可以在左边。超过180°时,垂直线将指向下方(负坐标),......

这是sin和cos的一个用法:如果你设置一个角度,它们会给你一个y值和一个x值,在圆圈上显示1个点。它始终是介于-1和+1之间的数字。例如:sin(0)= 0(无垂直分量),cos(0)= 1

下面的代码为您提供了一个围绕中心(0,0)和半径100的圆圈。为此函数提供了一堆e值,您可以在圆上获得尽可能多的点

function rotate(e) {
    var px = 100 * Math.cos(e); 
    var py = 100 * Math.sin(e);
}

现在,如果不是100 * cos(e)而是200 * cos(e),那么它就不再是一个圆圈了。每个x坐标将是两倍(与圆相比)。不同的rx和ry将产生椭圆。

你的变量b& h用于将椭圆的中心推到图像/ div / canvas /中的某个位置而不是角落(然后剪切大部分椭圆)。

这有帮助吗?