2014-05-03 54 views
0

我想用包含一个封闭路径(在同一位置开始和结束的一行)使用JavaScript生成一个SVG/canvas,并使用随机点数应该彼此等距(在路上,而不是在空间方面)。在路径上随机包含带点的路径

什么库可以用来实现这种效果,如果可能,可以提供一个例子吗?

安吉拉

+0

你是在谈论一个正规的多边形(而不是一个不规则的)?无论哪种方式,你可以提供一个粗略的油漆图或什么来说明你在做什么。我会为此任务使用['d3.js'](http://d3js.org)。 – royhowie

+0

你不会说这个形状是一个简单的多边形,还是允许它是自相交的。 –

+0

@Luxelin我正在寻找一条不规则的路径,就像手工绘制的路径一样。像这样的东西http://www.ducati.ms/forums/attachments/road-racing/75447d1283356290-austin-f1-track-done-deal-they-have-drawing-f1-austin-track.jpg除了当然,我不需要这里的任何视觉效果,只是行 – Angela

回答

0

对于SVG可以使用捕捉库,特别是使用getPointAtLength方法沿路径得到等距点。

http://snapsvg.io/docs/#Snap.path.getPointAtLength

在HTML画布的路径可以是直线段和曲线(二次&三次Bezier曲线)的任何组合。因此,要在路径上绘制等距点,必须使用适当的公式在每条线段和曲线上进行数学插值。

对于线段,这通常包括计算线段的长度,然后使用您指定的距离“lerping”(Google!)。

对于曲线,通常需要使用曲线方程并绘制沿该线的许多点。然后用线段连接这些点,然后沿指定距离的这些线段再次“收缩”。

+0

@Angela:这是一个使用Raphael(snapsvg的祖先)和.getPointAtLength的演示:http://raphaeljs.com/gear.html – markE