2013-01-19 38 views
1

这个问题可能有点难以制定,但这里有云:如何画分贝塞尔曲线动力学JS

当KineticJS使用bezierCurveTo,你给它的终点的坐标曲线,以及至于控制点。是否有一种简单的方法让曲线实际上不会延续到指定的终点,而是停在曲线的另一个点上?

我问的原因是因为我想绘制一条贝塞尔曲线,然后在另一条曲线的顶端,它遵循相同的曲线,但不会一路走到最后。现在我所知道的只是用新的终点画一条新曲线,然后猜测并检查控制点,直到两条曲线匹配。但这是非常耗时的,并且看起来不完美。

+0

基本上,你必须所有的点保存在磁盘阵列之前,你甚至划出一道弧线,然后绘制曲线,然后绘制最重要的是它使用相同的点另一条曲线,减去但在到底有多少 – SoluableNonagon

回答

1

我不知道局部的贝塞尔曲线,但通过用笔画渐变绘制一条曲线可以达到同样的效果。在渐变中的同一点创建两个停靠点以创建一条较硬的颜色线。

var grd=ctx.createLinearGradient(bezStartX,bezStartY,bezEndX,bezEndX); 
grd.addColorStop(0,"black"); 
grd.addColorStop("0.5","black"); 
grd.addColorStop("0.5","blue"); 
grd.addColorStop("1","blue"); 

ctx.strokeStyle=grd; 
ctx.beginPath(); 
ctx.moveTo(bezStartX,bezStartY); 
ctx.bezierCurveTo(bexCtrl1X,bezCtrl1Y,bexCtrl2X,bexCtrl2Y,bezEndX,bezEndX); 
ctx.stroke(); 
+1

您可以绘制部分曲线。看[这个答案](http://stackoverflow.com/a/11705483/1899369)。 – buckminst

+0

您链接的这个答案正是我所需要的。我无法找到一个在线计算器,所以我做了一个:http://homepages.math.uic.edu/~gconant/bezier.html – Gabe