openct-tasks/bebras/2018/2018-FR-09-graph-of-shapes/shape-paths.js

67 lines
2.7 KiB
JavaScript

function getShapePath(shape, x, y, radius, roundedRectangleRadius) {
if(!radius) radius = 15;
if(!roundedRectangleRadius) roundedRectangleRadius = 6;
var shapePaths = {
diamond: ["M", x, y-radius,
"L", x + radius, y,
"L", x, y + radius,
"L", x-radius, y,
"Z"],
hexagon: ["M", 0, -radius,
"L", -radius, -radius / 2,
"L", -radius, radius / 2,
"L", 0, radius,
"L", radius, radius / 2,
"L", radius, -radius / 2,
"Z"],
star: ["M", x, y - radius,
"L", x + 0.27 * radius, y -0.3 * radius,
"L", x + radius, y -0.3 * radius,
"L", x + 0.4 * radius, y + 0.2 * radius,
"L", x + 0.6 * radius, y +0.8 * radius,
"L", x + 0, y +0.4 * radius,
"L", x - 0.6 * radius, y + 0.8 * radius,
"L", x - 0.4 * radius, y + 0.2 * radius,
"L", x - radius, y -0.3 * radius,
"L", x - 0.27 * radius, y -0.3 * radius,
"Z"],
triangle: ["M", x-radius, y + radius,
"L", x + radius, y + radius,
"L", x, y - radius,
"Z"],
rectangle: ["M", x-radius, y-radius,
"L", x+radius, y-radius,
"L", x+radius, y+radius,
"L", x-radius, y+radius,
"Z"],
reverseTriangle: ["M", x-radius, y-radius,
"L", x+radius, y-radius,
"L", x, y+radius,
"Z"],
pentagon: ["M", x, y-radius,
"L", x+radius, y-0.3 * radius,
"L", x+0.6 * radius, y+radius,
"L", x-0.6 * radius, y+radius,
"L", x-radius, y-0.3 * radius,
"Z"],
squareStar: ["M", x, y-radius,
"L", x+0.25 * radius, y-0.25 * radius,
"L", x+radius, y,
"L", x+0.25 * radius, y+0.25 * radius,
"L", x+0, y+radius,
"L", x-0.25 * radius, y+0.25 * radius,
"L", x-radius, y,
"L", x-0.25 * radius, y-0.25 * radius,
"Z"],
roundedRectangle: ["M", x-radius, y-radius + roundedRectangleRadius,
"Q", x-radius, y-radius, x-radius + roundedRectangleRadius, y-radius,
"L", x+radius -roundedRectangleRadius, y-radius,
"Q", x+radius, y-radius, x+radius, y-radius + roundedRectangleRadius,
"L", x+radius, y+radius - roundedRectangleRadius,
"Q", x+radius, y+radius, x+radius - roundedRectangleRadius, y+radius,
"L", x-radius + roundedRectangleRadius, y+radius,
"Q", x-radius, y+radius, x-radius, y+radius - roundedRectangleRadius,
"Z"]
};
return shapePaths[shape];
}