1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-07-31 03:50:27 +02:00

added ellipse

This commit is contained in:
Justin Lin
2017-04-22 17:11:41 +08:00
parent 438529abce
commit 090e9dbe09
4 changed files with 50 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

24
docs/lib-ellipse.md Normal file
View 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]);
![ellipse](images/lib-ellipse-1.JPG)
include <ellipse.scad>;
$fn = 8;
ellipse([20, 40]);
![ellipse](images/lib-ellipse-2.JPG)

26
src/ellipse.scad Normal file
View 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)]
]
);
}