Reputation: 387
Edit: the Answer (credits to @musically_ut for getPointAtLength, but it seems like I have to do the real work myself. Note: the "draw.circle"-syntax is from svg.js)
.attr({id: "mypath"});
find it: var a = document.getElementById("IdOfSvgCurve");
Draw a few circles on the curve. Coordinates must be relative to starting point.
var pt_start = a.getPointAtLength(0);
for (var i = 0; i < len; i++) {
var pt = a.getPointAtLength(i*10);
var c = draw.circle(7)
.fill({ color: "green" })
.move(pt.x - pt_start.x, pt.y - pt_start.y);
}
Original Question:
Say I have an SVG curve, could be a bezier or an ellipse
<path id="SvgjsPath1044" d="M 125,75 a100,50 0 0,0 100,50"/>
How can I place dots right on that curve? Like this:
It could be using something like pathLength, use a "coordinate system", or it could be by actually calculting points that are on the curve and adding them using their coordinates.
This is mostly for illustration, so I don't necessarily need a general solution.
I am using the svg.js library but could do this part "natively".
Thanks!
Upvotes: 6
Views: 3719
Reputation: 34288
SVGPathElement
has a function getPointAtLength().
You can use this function to find the points on the path and then put circle
elements at those positions.
Upvotes: 10