mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-05 22:37:35 +02:00
added ellipse
This commit is contained in:
BIN
docs/images/lib-ellipse-1.JPG
Normal file
BIN
docs/images/lib-ellipse-1.JPG
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
BIN
docs/images/lib-ellipse-2.JPG
Normal file
BIN
docs/images/lib-ellipse-2.JPG
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
24
docs/lib-ellipse.md
Normal file
24
docs/lib-ellipse.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# ellipse
|
||||||
|
|
||||||
|
Creates an ellipse.
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
- `axes` : 2 element vector `[x, y]` where x is the semi-major axis and y is the semi-minor axis.
|
||||||
|
- `$fa`, `$fs`, `$fn` : The shape created by this module can be viewd as `resize([x, y]) circle(r = x)` (but not the real implementation inside the module) so you can use these global variables to control it. Check [the circle module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_the_2D_Subsystem#circle) for more details.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
include <ellipse.scad>;
|
||||||
|
|
||||||
|
ellipse([40, 20]);
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
include <ellipse.scad>;
|
||||||
|
|
||||||
|
$fn = 8;
|
||||||
|
ellipse([20, 40]);
|
||||||
|
|
||||||
|

|
||||||
|
|
26
src/ellipse.scad
Normal file
26
src/ellipse.scad
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
* ellipse.scad
|
||||||
|
*
|
||||||
|
* Creates an ellipse.
|
||||||
|
*
|
||||||
|
* @copyright Justin Lin, 2017
|
||||||
|
* @license https://opensource.org/licenses/lgpl-3.0.html
|
||||||
|
*
|
||||||
|
* @see https://openhome.cc/eGossip/OpenSCAD/lib-ellipse.html
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
|
||||||
|
module ellipse(axes) {
|
||||||
|
frags = $fn > 0 ?
|
||||||
|
($fn >= 3 ? $fn : 3) :
|
||||||
|
max(min(360 / $fa, axes[0] * 2 * 3.14159 / $fs), 5);
|
||||||
|
|
||||||
|
step_a = 360 / frags;
|
||||||
|
polygon(
|
||||||
|
[
|
||||||
|
for(a = [0:step_a:360 - step_a])
|
||||||
|
[axes[0] * cos(a), axes[1] * sin(a)]
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
Reference in New Issue
Block a user