[Plugin] Superellipse 1.2
-
Wow, yeah thats great! Welcome, thanks for the plugin,
Chris
-
Cool!
Next Will be Super Cycloïd?
-
@unknownuser said:
Next Will be Super Cycloïd?
Yeah, that sounds like a plugin I would work on. They tend to have that sort of mathematical flavor.
-
Welcome! Another great and simple plugin.
It works really well, though I have a note on the Exponent value. There is no known scale for the exponent input that I could tell. As of now its pretty much a shot in the dark as to how square the superellipse will come out. Perhaps having a scale of 1-100 (100 being a perfect square) the plugin would be more manageable?
Good job!
-
Why replace one arbitrary scale with another? they'll both serve the same purpose, and as long as the user understands 'big n = more square' you cant go too far wrong.
-
@su reviewer said:
As of now its pretty much a shot in the dark as to how square the superellipse will come out. Perhaps having a scale of 1-100 (100 being a perfect square) the plugin would be more manageable?
Otherwise great plugin!
Thanks for your review!
I can see your point. It is not real intuitive to me either how square the superellipse will be for a given exponent value.
We could replace the exponent with a scale that runs from 1-100. If 1 represents a completely round shape, then we would associate it with an ellipse. At the other end, 100 represents a completely square shape, so we associate it with a rectangle. But it is not so obvious to me what the numbers in the middle represent. Which superellispe should correspond to a scale factor of say 50?
-
Oh man, I could have used this about 4 days ago. This is one of those quick scripts I imagine using quite often.
Thank you very much.
-
Thank you Regular Polygon.
-
Is "Regular Polygon" a reference to Flat Land?
-
Thank you for this plugin. It is very nice.
I think the exponent makes sense. After all, it's a logical input considering the formula you're solving. Length and width are a and b so why not define n? I would prefer that to some arbitrary 1-100 scale.
-
@dave r said:
I think the exponent makes sense. After all, it's a logical input considering the formula you're solving. Length and width are a and b so why not define n? I would prefer that to some arbitrary 1-100 scale.
Silly me thought you figured that formula out for yourself, Dave.
Since I have no sense at this point where the exponent variable will take me, though I guess that comes with practice, the 1-100 option has some appeal. I should hold my tongue until I practice, but I won't.
Thanks for the contribution, rp, and for adding the loci to the ellipse.
-
A quick question about using values of n<1 if i may: how do you handle it, because surely you'll end up trying to take roots of negative numbers which'll give you imaginary numbers, unless you just take the imaginary part and use that?
-
@remus said:
A quick question about using values of n<1 if i may: how do you handle it, because surely you'll end up trying to take roots of negative numbers.
Here is the code that computes the coordinates.
def sgn(num) return 0 if num.zero? return +1 if ( num > 0 ) return -1 end # Compute the points for the vertices of the superellipse def points e = 2.0 / @exp pts = [] delta = 2 * Math;;PI / @edges for i in 0...@edges do phi = i * delta x = @a * sgn(Math.cos(phi)) * Math.cos(phi).abs**e y = @b * sgn(Math.sin(phi)) * Math.sin(phi).abs**e pts.push([x, y, 0]) end pts.push(pts[0]) # close the loop pts end
The only trick is to take the absolute value before you raise a number to a fractional power. After that, multiply it by +1 or -1, depending on the sign the original number had.
-
That makes sense, cheers.
-
@thomthom said:
Is "Regular Polygon" a reference to Flat Land?
No, not really.
"Regular Polygon" is kind of a play on words. It could mean an ordinary, everyday, run-of-the-mill polygon (i.e. the basic element of 3D graphics). But, in the mathematical sense, it means a symmetrical polygon whose angles and edges are all equal.
-
I have just released a new version 1.1 of the Superellipse plugin. This version allows you to specify the "squareness" of a superellipse using a scale. The exact association between the scale and the squareness is spelled out in gory detail in the post on my blog. But a picture is probably worth a 1000 words.
Basically, 0 corresponds to an ellipse, 100 corresponds to a rectangle, and a scale factor of 50 corresponds to a superellipse that stretches 50% of the way in between. I think this makes assigning a squareness value fairly intuitive.
You can run both versions (1.0 and 1.1) at the same time to compare them. To download the plugin, or read more about it, please visit my blog at http://regularpolygon.blogspot.com/
Thanks.
-
thanks for sharing
-
thanks for sharing
we will see, but it would prove itself often useful in time
++simon -
Hey, thanks everyone for the big welcome, and your show of support, for this first -- albeit simple -- plugin.
-
Really nice... but it reminds me... I used to use POV-Ray some years ago, in which it was possible to create a 3d-superellipsoid.
Could you make that??? would be so awesome, I used to use it a lot!
Perhaps in SU it would need a variable for level of detail, though...@unknownuser said:
The superellipsoid object creates a shape known as a superquadric ellipsoid object. It is an extension of the quadric ellipsoid. It can be used to create boxes and cylinders with round edges and other interesting shapes. Mathematically it is given by the equation:
The values of e and n, called the east-west and north-south exponent, determine the shape of the superquadric ellipsoid. Both have to be greater than zero. The sphere is given by e = 1 and n = 1.The syntax of the superquadric ellipsoid is:
SUPERELLIPSOID:
superellipsoid
{
<Value_E, Value_N>
[OBJECT_MODIFIERS...]
}The 2-D vector specifies the e and n values in the equation above. The object sits at the origin and occupies a space about the size of a box{<-1,-1,-1>,<1,1,1>}.
Two useful objects are the rounded box and the rounded cylinder. These are declared in the following way.
#declare Rounded_Box = superellipsoid { <Round, Round> }
#declare Rounded_Cylinder = superellipsoid { <1, Round> }The roundedness value Round determines the roundedness of the edges and has to be greater than zero and smaller than one. The smaller you choose the values, the smaller and sharper the edges will get.
Very small values of e and n might cause problems with the root solver (the Sturmian root solver cannot be used).
Advertisement