1. 程式人生 > 其它 >JavaScript 數學曲線—連鎖螺線

JavaScript 數學曲線—連鎖螺線

引子

等角螺線,接著嘗試連鎖螺線。

簡介

阿基米德螺線 中提到的通用的公式,當 c = -2 時,就是連鎖螺線,又稱為 Lituus 曲線。Roger Cotes 在他的著作 《Harmonia Mensurarum》(1722) 中對該曲線進行了描述。Maclaurin 在 1722 年為曲線命名。

在極座標系中公式描述:

公式說明:

  • r :徑向距離。
  • a :常數。
  • θ :極角。

繪製

用 canvas 繪製曲線,canvas 的座標系是笛卡爾座標系,需要做一個轉換。

由上面的圖可知取一個點有下面的數學轉換關係:

x = rcos(θ)
y = rsin(θ)
θ = arctan(y/x)

結合極座標系公式可得:

這是示例,繪製主要邏輯程式碼:

function draw() {
  let a = 100, angle = 0.1;
  let x = 0, y = 0, points = [];
  const acceleration = 0.1, circleNum = 20;
  while (angle <= circleNum * 2 * Math.PI) {
    const angleSqrt = Math.sqrt(angle);
    x = (a / angleSqrt) * Math.cos(angle);
    y = (a / angleSqrt) * Math.sin(angle);
    points.push([x, y]);
    angle = angle + acceleration;
  }
  // 實現把點繪製成線的方法
  line({ points: points});
}

參考資料