paper.js/examples/Scripts/CurveTimeParameterization.html

62 lines
2 KiB
HTML
Raw Permalink Normal View History

<!DOCTYPE html>
<html>
<head>
2014-08-16 13:24:54 -04:00
<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];
2014-08-16 13:24:54 -04:00
function onMouseMove(event) {
modifyCurve(event.point, true);
}
2014-08-16 13:24:54 -04:00
function modifyCurve(point, remove) {
curve.segment2.point = point;
var length = curve.length;
var step = 10;
var iteratively = true;
2014-08-16 13:24:54 -04:00
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);
2014-08-16 13:24:54 -04:00
var circle = new Path.Circle(point, step / 2);
circle.strokeColor = 'red';
if (remove)
circle.removeOnMove();
prev = t;
}
}
}
2014-08-16 13:24:54 -04:00
// modifyCurve(new Point(400, 377), false);
2014-08-16 13:24:54 -04:00
</script>
</head>
<body>
2014-08-16 13:24:54 -04:00
<canvas id="canvas" resize></canvas>
2011-05-30 18:27:39 -04:00
</body>
</html>