You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.9 KiB
HTML
53 lines
1.9 KiB
HTML
5 years ago
|
<!doctype html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<title>canvas.js | paths</title>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
|
<script type="text/javascript" src="../../pattern/canvas.js"></script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<script type="text/canvas">
|
||
|
function setup(canvas) {
|
||
|
canvas.size(500, 500);
|
||
|
}
|
||
|
function draw(canvas) {
|
||
|
canvas.clear();
|
||
|
// A Bézier path can be used to draw complex shapes (e.g., curve, star, ...)
|
||
|
// The BezierPath object has moveto(), lineto(), curveto() and close() methods.
|
||
|
// moveto() and lineto() take two parameters: x, y.
|
||
|
// curveto() takes six parameters: x1, y1, x2, y2, x3, y3,
|
||
|
// where (x1,y1) describes the direction in which the curve starts,
|
||
|
// and (x2,y2) describes the direction in which it ends in point (x3,y3).
|
||
|
var x = canvas.mouse.x;
|
||
|
var y = canvas.mouse.y;
|
||
|
var p = new BezierPath();
|
||
|
p.moveto(0, 0);
|
||
|
p.curveto(100, 100, x, y, 200, 200);
|
||
|
// drawpath() draws the given BezierPath.
|
||
|
// Notice how we set fill and stroke as optional parameters.
|
||
|
// You can do this with line(), rect(), ellipse() and text() too.
|
||
|
drawpath(p, {fill:null, stroke:[0,0,0,1]});
|
||
|
line(0, 0, 100, 100, {stroke:[0,0,0,0.5]}); // show handle (x1,y1)
|
||
|
line(200, 200, x, y, {stroke:[0,0,0,0.5]}); // show handle (x2,y2)
|
||
|
// Create a leaf shape.
|
||
|
var leaf = new BezierPath();
|
||
|
leaf.moveto(0, 0);
|
||
|
leaf.curveto(50, 50, 0, 150, 0, 200);
|
||
|
leaf.curveto(0, 150, -50, 50, 0, 0);
|
||
|
// Actually, we should have done this in setup().
|
||
|
// This way the path is calculated only once, instead of every frame.
|
||
|
// Draw copies of the leaf to create a flower-shape.
|
||
|
translate(250, 250);
|
||
|
fill(0.25, 0.15, 0.75, 0.25) // transparent purple-blue
|
||
|
stroke(0); // black
|
||
|
strokewidth(0.25);
|
||
|
// The Array.range() command generates an array of numbers.
|
||
|
// This is handy to use in a loop:
|
||
|
for (var i in Array.range(40)) {
|
||
|
rotate(9);
|
||
|
drawpath(leaf);
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
</body>
|
||
|
</html>
|