From 8b70b3e2b4e1f8b1dc6ab761e9d587d2200c46c6 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sun, 2 Jun 2019 21:04:05 +0800 Subject: [PATCH] add doc --- docs/images/lib-in_shape-1.JPG | Bin 0 -> 29338 bytes docs/lib-in_shape.md | 37 +++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 docs/images/lib-in_shape-1.JPG create mode 100644 docs/lib-in_shape.md diff --git a/docs/images/lib-in_shape-1.JPG b/docs/images/lib-in_shape-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..cb6edcdd0986178ad07b0feb1655aa2c571b0364 GIT binary patch literal 29338 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 SYyWJA_^UnQ2kt4pPW}sj%)PMy literal 0 HcmV?d00001 diff --git a/docs/lib-in_shape.md b/docs/lib-in_shape.md new file mode 100644 index 00000000..e7626fb7 --- /dev/null +++ b/docs/lib-in_shape.md @@ -0,0 +1,37 @@ +# in_shape + +Checks wether a point is inside a shape. + +## Parameters + +- `shapt_pts` : The shape points. +- `pt` : The point to be checked. +- `include_edge` : If a point is on the edge of the shape, the function is default to return `false`. If `include_edge` is `true`, the function returns `true`. +- `epsilon` : An upper bound on the relative error due to rounding in floating point arithmetic. Default to 0.0001. + +## Examples + + include ; + include ; + + points = shape_taiwan(30); + + %polygon(points); + + n = 200; + xs = rands(-9, 9, n); + ys = rands(-16, 16, n); + + pts = [ + for(i = [0:n]) + let(p = [xs[i], ys[i]]) + if(in_shape(points, p, true)) + p + ]; + + for(p = pts) { + translate(p) + circle(.2); + } + +![in_shape](images/lib-in_shape-1.JPG) \ No newline at end of file