mirror of
https://github.com/BelfrySCAD/BOSL2.git
synced 2025-01-15 08:59:40 +00:00
Compare commits
1 commit
fbdaf60359
...
3ba64c6f8c
Author | SHA1 | Date | |
---|---|---|---|
|
3ba64c6f8c |
1 changed files with 9 additions and 4 deletions
|
@ -1999,12 +1999,9 @@ function reuleaux_polygon(n=3, r, d, anchor=CENTER, spin=0) =
|
|||
// path = squircle(squareness, size, [style]);
|
||||
// Description:
|
||||
// A [squircle](https://en.wikipedia.org/wiki/Squircle) is a shape intermediate between a square/rectangle and a circle/ellipse.Squircles are sometimes used to make dinner plates (more area for the same radius as a circle), keyboard buttons, and smartphone icons. Old CRT television screens also resembled elongated squircles.
|
||||
// .
|
||||
// There are multiple approaches to constructing a squircle. One approach is a special case of superellipse (shown in {{supershape}} example 3), and uses exponents to adjust the shape. Another, called Fernández-Guasti squircle or FG squircle, arises from work in optics and uses a "squareness" parameter between 0 and 1 to adjust the shape.
|
||||
// .
|
||||
// The FG style and superellipse style squircles are visually almost indistinguishable, with the superellipse having slightly rounder "corners" than FG for a given value of squareness. Either style requires just the two parameters `squareness` and `size`. The vertex distribution is adjusted to be more dense at the corners for smoothness at low values of `$fn`.
|
||||
// .
|
||||
// When called as a module, creates a 2D squircle with the desired squareness.
|
||||
// When called as a module, creates a 2D squircle with the desired squareness.
|
||||
// When called as a function, returns a 2D path for a squircle.
|
||||
// Arguments:
|
||||
// squareness = Value between 0 and 1. Controls the shape of the squircle. When `squareness=0` the shape is a circle, and when `squareness=1` the shape is a square. Otherwise, this parameter sets the location of a squircle "corner" at the specified interpolated position between a circle and a square. For the "superellipse" style, the special case where the superellipse exponent is 4 (also known as *Lamé's quartic curve*) results in a squircle at the geometric mean between radial points on the circle and square, corresponding to squareness=0.456786. Default: 0.5
|
||||
|
@ -2075,6 +2072,14 @@ function squircle(squareness=0.5, size=[1,1], style="fg", atype="box", anchor=CE
|
|||
? [reorient(anchor, spin, two_d=true, size=size, p=path, extent=false, override=override), override]
|
||||
: reorient(anchor, spin, two_d=true, size=size, p=path, extent=false, override=override);
|
||||
|
||||
function _squircle_anchor_radius(squareness, angle, style) =
|
||||
style == "fg"
|
||||
? let(sq = _linearize_squareness(squareness))
|
||||
squircle_radius_fg(sq, 1, angle)
|
||||
: let(n = _squircle_se_exponent(squareness))
|
||||
squircle_radius_se(n, 1, angle);
|
||||
//_superformula(theta=angle, m1=4,m2=4,n1=n,n2=n,n3=n,a=1,b=1);
|
||||
|
||||
|
||||
/* FG squircle functions */
|
||||
|
||||
|
|
Loading…
Reference in a new issue