我正在用座標工作的JS寫一個簡單的繪圖應用程序。我需要遞歸地找到兩個點的中點,以繪製一條線(A點和B點之間的中點,然後是三個結果點之間的兩個中點,依此類推)。有關更清晰的示例,請參見this GIF。JS:遞歸地計算線的中點
這是一個基於網格/座標的繪圖應用程序,所以只需繪製一條線是不可能的。有必要獲得點之間的所有座標。
我有一個發現中點
function findMidpoint(p1,p2){
return Math.floor((p1+p2)/2);
}
且繪製點(我還保存以前的點作爲prevX和prevY功能的功能
setPoint(X,Y);
所以我什麼如下繪製中點:
setPoint(findMidpoint(X,prevX),findMidpoint(Y,prevY));
下一組中點:
setPoint(findMidpoint(findMidpoint(X,prevX),prevX),findMidpoint(findMidpoint(Y,prevY),prevY));
setPoint(findMidpoint(X,findMidpoint(X,prevX)),findMidpoint(Y,findMidpoint(Y,prevY));
正如您所見,這會非常迅速地變得混亂。我想有一個遞歸的方式來做到這一點,或者某種方式循環它給定的時間,但我似乎無法弄清楚。任何幫助將不勝感激!
你得到的是一條線。你爲什麼需要點?您需要指定中點操作應停止的結束條件。 –
這是一個基於網格/座標的繪圖應用程序,因此不可能簡單地繪製線條。有必要獲得點之間的所有座標。我遇到麻煩的是創建中點操作,因此不必手動完成。 – dhdz