Cones
This commit is contained in:
20
fcad.scad
20
fcad.scad
@@ -1,4 +1,4 @@
|
|||||||
fDraw(fSphere(10));
|
fDraw(fCylinder(10, r1=5, r2=2));
|
||||||
|
|
||||||
///// Drawing modules
|
///// Drawing modules
|
||||||
module fDraw(model) {
|
module fDraw(model) {
|
||||||
@@ -45,17 +45,19 @@ function fCube(dims) = (
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
function fCylinder(h, r, sides=36) = (
|
function fCylinder(h, r, r1=undef, r2=undef, sides=36) = (
|
||||||
let(degrees_per_side = 360 / sides,
|
let(degrees_per_side = 360 / sides,
|
||||||
side_range = [0 : sides - 1])
|
side_range = [0 : sides - 1],
|
||||||
|
int_r1 = (r1 == undef) ? r : r1,
|
||||||
|
int_r2 = (r2 == undef) ? r : r2)
|
||||||
[
|
[
|
||||||
[fKeyPoints,
|
[fKeyPoints,
|
||||||
fCartesianProduct([
|
[for (side = side_range)
|
||||||
[for (side = side_range)
|
for (params = [[int_r1, 0], [int_r2, h]])
|
||||||
let (angle = side * degrees_per_side)
|
let (angle = side * degrees_per_side,
|
||||||
[r * sin(angle), r * cos(angle)]],
|
radius = params[0],
|
||||||
[0, h],
|
height = params[1])
|
||||||
]),
|
[radius * sin(angle), radius * cos(angle), height]],
|
||||||
],
|
],
|
||||||
[fKeyFaces, concat(
|
[fKeyFaces, concat(
|
||||||
// bottom
|
// bottom
|
||||||
|
|||||||
Reference in New Issue
Block a user