1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-01 12:30:33 +02:00
This commit is contained in:
Justin Lin
2021-06-30 10:57:02 +08:00
parent b47f07e659
commit ef9ec57cdc
9 changed files with 144 additions and 97 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -0,0 +1,55 @@
# sf_solidifyT
It solidifies two surfaces with triangular mesh.
**Since:** 3.1
## Parameters
- `points1` : A list of `[x, y, z]`s.
- `points2` : A list of `[x, y, z]`s.
- `triangles` : Determine which points are connected by an edge. All triangles have points in the same direction, counter-clockwise. See examples below.
## Examples
use <triangle/tri_delaunay.scad>;
use <surface/sf_solidifyT.scad>;
points = [for(i = [0:50]) rands(-300, 300, 2)];
triangles = tri_delaunay(points);
pts = [for(p = points) [p[0], p[1], rands(100, 150, 1)[0]]];
pts2 = [for(p = pts) [p[0], p[1], p[2] - 100]];
sf_solidifyT(pts, pts2, triangles = triangles);
![sf_solidifyT](images/lib3x-sf_solidifyT-1.JPG)
use <triangle/tri_delaunay.scad>;
use <surface/sf_solidifyT.scad>;
thickness = .2;
a_step = 10;
r_step = 0.2;
scale = 100;
function f(x, y) = (pow(y,2)/pow(2, 2))-(pow(x,2)/pow(2, 2));
pts2d = [
for(a = [a_step:a_step:360])
for(r = [r_step:r_step:2])
let(
x = round(r * cos(a) * 100) / 100,
y = round(r * sin(a) * 100) / 100
)
[x, y]
];
points1 = [for(p = pts2d) scale * [p[0], p[1], f(p[0], p[1])]];
points2 = [for(p = points1) [p[0], p[1], p[2] - scale * thickness]];
triangles = tri_delaunay(pts2d);
sf_solidifyT(points1, points2, triangles);
![sf_solidifyT](images/lib3x-sf_solidifyT-2.JPG)

65
docs/lib3x-sf_thickenT.md Normal file
View File

@@ -0,0 +1,65 @@
# sf_thickenT
It thickens a surface with triangular mesh.
## Parameters
- `points` : A list of `[x, y, z]`s.
- `thickness` : The depth of the thickening.
- `triangles` : Determine which points are connected by an edge. All triangles have points in the same direction, counter-clockwise. If it's ignored, `sf_thickenT` would use `[x, y]` to do Delaunay trianglation.
- `direction` : The direction of thickening. It accepts `"BOTH"` (default), `"FORWARD"` or `"BACKWARD"`. Thickening is applied in both directions from the surface, the direction of the surface normals or the opposite direction to the surface normals. It also accept a direction vector `[x, y, z]`. Thickening is only applied in the direction you give.
## Examples
use <surface/sf_thickenT.scad>;
radius = 100;
width = 2;
thickness = .2;
a_step = 10;
r_step = 0.2;
function f(x, y) = (pow(y,2)/pow(2, 2))-(pow(x,2)/pow(2, 2));
points = [
for(a = [a_step:a_step:360])
for(r = [r_step:r_step:2])
let(
x = round(r * cos(a) * 100) / 100,
y = round(r * sin(a) * 100) / 100
)
[x, y, f(x, y)]
];
sf_thickenT(points, thickness);
![sf_thickenT](images/lib3x-sf_thickenT-1.JPG)
use <triangle/tri_delaunay.scad>;
use <surface/sf_thickenT.scad>;
u_step = 10;
r_step = 0.2;
thickness = .2;
points = [
for(u = [0:u_step:360])
for(v = [-1:r_step:1])
let(
x = (1 + v / 2 * cos(u / 2)) * cos(u),
y = (1 + v / 2 * cos(u / 2)) * sin(u),
z = v / 2 * sin(u / 2)
)
[x, y, z]
];
triangles = tri_delaunay([
for(u = [0:u_step:360])
for(v = [-1:r_step:1])
[v, u]
]);
sf_thickenT(points, thickness, triangles);
![sf_thickenT](images/lib3x-sf_thickenT-2.JPG)