我正在用坐标工作的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