UNPKG

paper

Version:

The Swiss Army Knife of Vector Graphics Scripting

62 lines (57 loc) 2.06 kB
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Curve Time Parameterization</title> <link rel="stylesheet" href="../css/style.css"> <script type="text/javascript" src="../../dist/paper-full.js"></script> <script type="text/paperscript" canvas="canvas"> var path = new Path(); path.moveTo(200, 200); path.curveTo([170, 50], [300, 200]); path.strokeWidth = 1; path.strokeColor = 'black'; var curve = path.curves[0]; function onMouseMove(event) { modifyCurve(event.point, true); } function modifyCurve(point, remove) { curve.segment2.point = point; var length = curve.length; var step = 10; var iteratively = true; var flatten = true; var num = Math.floor(length / step); var prev = 0; if (flatten) { var clone = path.clone(); clone.flatten(step); for (var i = 0; i < clone.segments.length; i++) { var point = clone.segments[i].point; var circle = new Path.Circle(point, step / 2); circle.strokeColor = 'red'; if (remove) circle.removeOnMove(); } clone.remove(); } else { for (var i = 0, pos = 0; i <= num; i++, pos += step) { var t = iteratively ? curve.getTimeAt(step, prev) : curve.getTimeAt(pos); var point = curve.getPointAtTime(t); var circle = new Path.Circle(point, step / 2); circle.strokeColor = 'red'; if (remove) circle.removeOnMove(); prev = t; } } } // modifyCurve(new Point(400, 377), false); </script> </head> <body> <canvas id="canvas" resize></canvas> </body> </html>