TESTER

superellipse

superellipse(x, y, xradius, yradius, exp, [draw=true], [stroke], [fill], [weight])

Draw a super ellipse

Syntaxe

superellipse(x=150, y=150, xradius=120, yradius=120, exp=4.5, stroke="#000000", fill="#FFA000", weight=4);

Arguments

NameRequiredDefaultDescription
xyes-x-coordinate
yyes-y-coordinate
xradiusyes-radiusX
yradiusyes-radiusY
expyes-exposant (n<2=sharp, n>2=squircle)
draw-trueIf false, return a list of points, and don't draw (stroke, fill & weight are ignored)
stroke--Stroke color
fill--Fill color
weight--Stroke weight (thickness)

Full example

canvas(width=500, height=200);
fill("#FFA000");
var mini = 0.2;
var maxi = 3.8;
var step = 0.15;
var radius = 30;
var startX = 10 + radius;
var startY = 10 + radius;
var nCols = 8;
var nRows = ceil((maxi - mini) / step / nCols);
for (var yIndex = 0; yIndex < nRows; yIndex++) {
    for (var xIndex = 0; xIndex < nCols; xIndex++) {
        var x = startX + xIndex * radius * 2;
        var y = startY + yIndex * radius * 2;
        var idx = yIndex * nCols + xIndex;
        var eVal = mini + idx * step;
        if (eVal <= maxi) {
            superellipse(x, y, radius-5, radius-5, eVal);
        }
    }
}
save("superellipse.png");

var p = superellipse(x=150, y=150, xradius=120, yradius=120, exp=4.5, draw=false);
console(p); // [270, 150, 269.9918767313, 169.8510557841, 269.967505275...]