doc fixes

This commit is contained in:
Adrian Mariano 2021-10-05 22:09:48 -04:00
parent 9a01e15f3f
commit 1cb7373284

View file

@ -646,14 +646,14 @@ function plane_line_intersection(plane, line, bounded=false, eps=EPSILON) =
// bounded = If false, the line is considered unbounded. If true, it is treated as a bounded line segment. If given as `[true, false]` or `[false, true]`, the boundedness of the points are specified individually, allowing the line to be treated as a half-bounded ray. Default: false (unbounded) // bounded = If false, the line is considered unbounded. If true, it is treated as a bounded line segment. If given as `[true, false]` or `[false, true]`, the boundedness of the points are specified individually, allowing the line to be treated as a half-bounded ray. Default: false (unbounded)
// nonzero = set to true to use the nonzero rule for determining it points are in a polygon. See point_in_polygon. Default: false. // nonzero = set to true to use the nonzero rule for determining it points are in a polygon. See point_in_polygon. Default: false.
// eps = Tolerance in geometric comparisons. Default: `EPSILON` (1e-9) // eps = Tolerance in geometric comparisons. Default: `EPSILON` (1e-9)
// Example: The line intersects the 3d hexagon in a single point. // Example(3D): The line intersects the 3d hexagon in a single point.
// hex = zrot(140,p=rot([-45,40,20],p=path3d(hexagon(r=15)))); // hex = zrot(140,p=rot([-45,40,20],p=path3d(hexagon(r=15))));
// line = [[5,0,-13],[-3,-5,13]]; // line = [[5,0,-13],[-3,-5,13]];
// isect = polygon_line_intersection(hex,line); // isect = polygon_line_intersection(hex,line);
// stroke(hex,closed=true); // stroke(hex,closed=true);
// stroke(line); // stroke(line);
// color("red")move(isect)sphere(r=1); // color("red")move(isect)sphere(r=1,$fn=12);
// Example: In 2D things are more complicated. The output is a list of intersection parts, in the simplest case a single segment. // Example(2D): In 2D things are more complicated. The output is a list of intersection parts, in the simplest case a single segment.
// hex = hexagon(r=15); // hex = hexagon(r=15);
// line = [[-20,10],[25,-7]]; // line = [[-20,10],[25,-7]];
// isect = polygon_line_intersection(hex,line); // isect = polygon_line_intersection(hex,line);
@ -665,7 +665,7 @@ function plane_line_intersection(plane, line, bounded=false, eps=EPSILON) =
// move(part[0]) sphere(r=1); // move(part[0]) sphere(r=1);
// else // else
// stroke(part); // stroke(part);
// Example: In 2D things are more complicated. Here the line is treated as a ray. // Example(2D): Here the line is treated as a ray.
// hex = hexagon(r=15); // hex = hexagon(r=15);
// line = [[0,0],[25,-7]]; // line = [[0,0],[25,-7]];
// isect = polygon_line_intersection(hex,line,RAY); // isect = polygon_line_intersection(hex,line,RAY);
@ -677,7 +677,7 @@ function plane_line_intersection(plane, line, bounded=false, eps=EPSILON) =
// move(part[0]) circle(r=1,$fn=12); // move(part[0]) circle(r=1,$fn=12);
// else // else
// stroke(part); // stroke(part);
// Example: Here the intersection is a single point, which is returned as a single point "path" on the path list. // Example(2D): Here the intersection is a single point, which is returned as a single point "path" on the path list.
// hex = hexagon(r=15); // hex = hexagon(r=15);
// line = [[15,-10],[15,13]]; // line = [[15,-10],[15,13]];
// isect = polygon_line_intersection(hex,line,RAY); // isect = polygon_line_intersection(hex,line,RAY);
@ -689,7 +689,7 @@ function plane_line_intersection(plane, line, bounded=false, eps=EPSILON) =
// move(part[0]) circle(r=1,$fn=12); // move(part[0]) circle(r=1,$fn=12);
// else // else
// stroke(part); // stroke(part);
// Example: Another way to get a single segment // Example(2D): Another way to get a single segment
// hex = hexagon(r=15); // hex = hexagon(r=15);
// line = rot(30,p=[[15,-10],[15,25]],cp=[15,0]); // line = rot(30,p=[[15,-10],[15,25]],cp=[15,0]);
// isect = polygon_line_intersection(hex,line,RAY); // isect = polygon_line_intersection(hex,line,RAY);
@ -701,7 +701,7 @@ function plane_line_intersection(plane, line, bounded=false, eps=EPSILON) =
// move(part[0]) circle(r=1,$fn=12); // move(part[0]) circle(r=1,$fn=12);
// else // else
// stroke(part); // stroke(part);
// Example: Single segment again // Example(2D): Single segment again
// star = star(r=15,n=8,step=2); // star = star(r=15,n=8,step=2);
// line = [[20,-5],[-5,20]]; // line = [[20,-5],[-5,20]];
// isect = polygon_line_intersection(star,line,RAY); // isect = polygon_line_intersection(star,line,RAY);
@ -713,7 +713,7 @@ function plane_line_intersection(plane, line, bounded=false, eps=EPSILON) =
// move(part[0]) circle(r=1,$fn=12); // move(part[0]) circle(r=1,$fn=12);
// else // else
// stroke(part); // stroke(part);
// Example: Solution is two points // Example(2D): Solution is two points
// star = star(r=15,n=8,step=3); // star = star(r=15,n=8,step=3);
// line = rot(22.5,p=[[15,-10],[15,20]],cp=[15,0]); // line = rot(22.5,p=[[15,-10],[15,20]],cp=[15,0]);
// isect = polygon_line_intersection(star,line,SEGMENT); // isect = polygon_line_intersection(star,line,SEGMENT);
@ -725,7 +725,7 @@ function plane_line_intersection(plane, line, bounded=false, eps=EPSILON) =
// move(part[0]) circle(r=1,$fn=12); // move(part[0]) circle(r=1,$fn=12);
// else // else
// stroke(part); // stroke(part);
// Example: Solution is list of three segments // Example(2D): Solution is list of three segments
// star = star(r=25,ir=9,n=8); // star = star(r=25,ir=9,n=8);
// line = [[-25,12],[25,12]]; // line = [[-25,12],[25,12]];
// isect = polygon_line_intersection(star,line); // isect = polygon_line_intersection(star,line);
@ -737,7 +737,7 @@ function plane_line_intersection(plane, line, bounded=false, eps=EPSILON) =
// move(part[0]) circle(r=1,$fn=12); // move(part[0]) circle(r=1,$fn=12);
// else // else
// stroke(part); // stroke(part);
// Example: Solution is a mixture of segments and points // Example(2D): Solution is a mixture of segments and points
// star = star(r=25,ir=9,n=7); // star = star(r=25,ir=9,n=7);
// line = [left(10,p=star[8]), right(50,p=star[8])]; // line = [left(10,p=star[8]), right(50,p=star[8])];
// isect = polygon_line_intersection(star,line); // isect = polygon_line_intersection(star,line);
@ -1591,22 +1591,17 @@ function point_in_polygon(point, poly, nonzero=false, eps=EPSILON) =
// poly = Array of vertices for the polygon. // poly = Array of vertices for the polygon.
// ind = A list indexing the vertices of the polygon in `poly`. // ind = A list indexing the vertices of the polygon in `poly`.
// eps = A maximum tolerance in geometrical tests. Default: EPSILON // eps = A maximum tolerance in geometrical tests. Default: EPSILON
// Example: // Example(2D):
// poly = star(id=10, od=15,n=11); // poly = star(id=10, od=15,n=11);
// tris = polygon_triangulate(poly); // tris = polygon_triangulate(poly);
// polygon(poly); // for(tri=tris) stroke(select(poly,tri), width=.1, closed=true);
// up(1) // Example(3D):
// color("blue");
// for(tri=tris) trace_path(select(poly,tri), size=.1, closed=true);
//
// Example:
// include <BOSL2/polyhedra.scad> // include <BOSL2/polyhedra.scad>
// vnf = regular_polyhedron_info(name="dodecahedron",side=5,info="vnf"); // vnf = regular_polyhedron_info(name="dodecahedron",side=5,info="vnf");
// %vnf_polyhedron(vnf); // %vnf_polyhedron(vnf);
// vnf_tri = [vnf[0], [for(face=vnf[1]) each polygon_triangulate(vnf[0], face) ] ]; // vnf_tri = [vnf[0], [for(face=vnf[1]) each polygon_triangulate(vnf[0], face) ] ];
// color("blue") // color("blue")
// vnf_wireframe(vnf_tri, d=.15); // vnf_wireframe(vnf_tri, width=.15);
function polygon_triangulate(poly, ind, eps=EPSILON) = function polygon_triangulate(poly, ind, eps=EPSILON) =
assert(is_path(poly), "Polygon `poly` should be a list of 2d or 3d points") assert(is_path(poly), "Polygon `poly` should be a list of 2d or 3d points")
assert(is_undef(ind) assert(is_undef(ind)