1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-09-17 01:52:11 +02:00

610 Commits
v3.2.1 ... v3.3

Author SHA1 Message Date
Justin Lin
bb33edfd75 add deprecated msg 2022-10-11 17:41:16 +08:00
Justin Lin
8bfcdc39a9 update RELEASE 2022-10-11 11:14:19 +08:00
Justin Lin
5e60756a27 update README 2022-10-11 11:11:03 +08:00
Justin Lin
2ea9bcdffc update note 2022-10-11 11:04:08 +08:00
Justin Lin
f26629cb4c update examples 2022-10-11 11:03:41 +08:00
Justin Lin
ea60a5628a add fidget_boo 2022-10-02 17:33:30 +08:00
Justin Lin
c1d1997714 spacing = 1.35 2022-09-26 07:07:19 +08:00
Justin Lin
78a23c0a12 spacing = 1.25 2022-09-25 21:42:14 +08:00
Justin Lin
17d6364865 add fidget_pumpkin 2022-09-25 19:43:12 +08:00
Justin Lin
fbb4024168 simplified symbols 2022-09-25 12:30:12 +08:00
Justin Lin
fcdcf0b2b4 change eyes 2022-09-24 16:31:30 +08:00
Justin Lin
e75fd110d7 adjust head 2022-09-24 16:17:35 +08:00
Justin Lin
49461b3ce1 adjust head 2022-09-24 15:11:52 +08:00
Justin Lin
86028431bf use pt hash 2022-09-21 17:11:08 +08:00
Justin Lin
c30e83d318 adjust position 2022-09-21 11:23:22 +08:00
Justin Lin
bd628815bd modify head 2022-09-21 10:02:52 +08:00
Justin Lin
7a6ea23903 modify mouth 2022-09-21 09:15:42 +08:00
Justin Lin
ebfc46fd26 add maze_maze 2022-09-18 12:00:18 +08:00
Justin Lin
469fdcc6f7 del sorted param 2022-09-18 11:15:39 +08:00
Justin Lin
5578c169b0 rename 2022-09-14 15:30:27 +08:00
Justin Lin
b90b83ebc5 format 2022-09-13 16:46:03 +08:00
Justin Lin
daaff1322f add tri_concave_hull 2022-09-13 14:56:36 +08:00
Justin Lin
84c83769db rename 2022-09-11 15:56:17 +08:00
Justin Lin
bb59ba0939 rename 2022-09-11 15:54:53 +08:00
Justin Lin
3c70c23afa add island_maze 2022-09-11 13:07:12 +08:00
Justin Lin
683074dc54 change rose scale 2022-09-03 11:25:49 +08:00
Justin Lin
9d2f6eaac2 add rose_scale 2022-09-03 11:17:29 +08:00
Justin Lin
4c46ac11fc use sf_hull 2022-09-03 09:48:24 +08:00
Justin Lin
fb73eced66 change param value 2022-09-02 16:13:44 +08:00
Justin Lin
7a890293fb reduce ovelapped propabilities 2022-09-02 16:07:43 +08:00
Justin Lin
7eff4d759e refactor 2022-09-02 14:31:28 +08:00
Justin Lin
d78bed91e7 more random 2022-09-02 13:13:05 +08:00
Justin Lin
f875bacaf8 add climbing_rose 2022-09-02 11:27:57 +08:00
Justin Lin
bc424ed7b3 add center 2022-09-02 10:39:15 +08:00
Justin Lin
ca7a0e7ef1 i is not required 2022-08-31 10:06:41 +08:00
Justin Lin
264d83cdf1 ci as a seed factor 2022-08-31 09:48:53 +08:00
Justin Lin
7af26906d0 update img 2022-08-29 11:57:34 +08:00
Justin Lin
ee0ffbabd3 larger rect 2022-08-29 11:56:01 +08:00
Justin Lin
ce257f859b add directions param 2022-08-27 17:31:36 +08:00
Justin Lin
4bdd3ca089 change param order 2022-08-27 17:30:21 +08:00
Justin Lin
18281f72fc refactor 2022-08-27 16:38:29 +08:00
Justin Lin
18d3757079 refactor for adding a directions function 2022-08-27 16:19:09 +08:00
Justin Lin
2d5a38194a update doc 2022-08-27 15:36:50 +08:00
Justin Lin
02895d6529 add convexity 2022-08-27 15:33:30 +08:00
Justin Lin
29594b8688 use sf_cylinder if angle is 360 2022-08-27 15:26:59 +08:00
Justin Lin
d0ea27a76c update doc 2022-08-27 15:13:05 +08:00
Justin Lin
ea8fc1da2b update docs 2022-08-27 14:58:41 +08:00
Justin Lin
d29ab4eb8a check if coplanar 2022-08-22 23:38:18 +08:00
Justin Lin
824168a006 optimization 2022-08-22 14:34:43 +08:00
Justin Lin
87ec19fb7a refactor lines_intersection 2022-08-22 11:01:17 +08:00
Justin Lin
2602a90388 refactor lines_intersection 2022-08-22 11:00:51 +08:00
Justin Lin
95b679d82a rename 2022-08-21 16:32:27 +08:00
Justin Lin
6e08ec5fdb giant_theta_maze 2022-08-21 11:01:22 +08:00
Justin Lin
6a98237517 update head 2022-08-20 15:49:08 +08:00
Justin Lin
4a9d935059 noise lower rock 2022-08-18 15:30:45 +08:00
Justin Lin
f587ffecd0 offset .1 2022-08-18 11:48:31 +08:00
Justin Lin
7689ac9c55 add giant maze 2022-08-18 11:46:47 +08:00
Justin Lin
b832cbec2e refactor 2022-08-17 15:28:21 +08:00
Justin Lin
174eb609d5 add doc 2022-08-16 10:36:34 +08:00
Justin Lin
40dfebe040 refactor 2022-08-13 17:30:58 +08:00
Justin Lin
795c7c0a87 don't use hull 2022-08-13 17:16:54 +08:00
Justin Lin
a403ca060e add fidget_skull 2022-08-12 17:12:01 +08:00
Justin Lin
995b531faf update README 2022-08-11 16:55:59 +08:00
Justin Lin
ce915abd33 update doc 2022-08-11 16:49:34 +08:00
Justin Lin
631e78d642 add doc 2022-08-11 16:45:52 +08:00
Justin Lin
2cf3ac6781 refactor 2022-08-11 09:33:14 +08:00
Justin Lin
04e089613a rename 2022-08-10 15:06:22 +08:00
Justin Lin
232a2a56bf add fourier_vase 2022-08-07 17:07:52 +08:00
Justin Lin
8fbf812bca change values 2022-08-06 15:20:49 +08:00
Justin Lin
582fc09262 fn 4 2022-08-06 15:05:57 +08:00
Justin Lin
3a4e6b2a19 halftone 2022-08-06 15:05:17 +08:00
Justin Lin
bd64388362 add photo_fibonacci_lattice 2022-08-05 08:51:31 +08:00
Justin Lin
a3933b945e fix error dir 2022-08-02 15:11:19 +08:00
Justin Lin
9ef35e42bd fix off-1 error 2022-08-02 15:04:59 +08:00
Justin Lin
ef07707cdb accept n = 0 2022-08-02 07:53:08 +08:00
Justin Lin
b33e725523 improve wave_smoothness 2022-08-01 09:21:36 +08:00
Justin Lin
0c29e2b108 don't require x, y 2022-08-01 09:07:45 +08:00
Justin Lin
6b6f0d832a update examples 2022-07-31 20:44:44 +08:00
Justin Lin
f35d04e0e6 update examples 2022-07-31 20:36:03 +08:00
Justin Lin
1e1587c600 add spiral_ripples 2022-07-30 09:11:12 +08:00
Justin Lin
390bef0061 refactor 2022-07-29 08:58:27 +08:00
Justin Lin
86d5da1e23 remove center param 2022-07-29 08:32:43 +08:00
Justin Lin
b83d9440c0 rename 2022-07-29 08:19:44 +08:00
Justin Lin
30b906a1c3 add test 2022-07-28 20:14:02 +08:00
Justin Lin
047c175a19 update note 2022-07-28 15:46:18 +08:00
Justin Lin
77f9750091 add comment 2022-07-28 15:30:02 +08:00
Justin Lin
5b8e62a559 add doc 2022-07-28 15:25:50 +08:00
Justin Lin
5b725bd6bb use matrix index convention 2022-07-28 15:21:02 +08:00
Justin Lin
abd5683698 fix x error 2022-07-27 11:35:04 +08:00
Justin Lin
49a68a9f84 update examples 2022-07-22 11:06:35 +08:00
Justin Lin
505e514075 update doc 2022-07-22 10:42:20 +08:00
Justin Lin
11f9a5b58a add demo 2022-07-22 10:38:21 +08:00
Justin Lin
3b1c12247c add center 2022-07-21 20:23:57 +08:00
Justin Lin
f732686823 update example 2022-07-21 18:58:10 +08:00
Justin Lin
15c1cd605f fix a_step == 0 2022-07-21 18:00:27 +08:00
Justin Lin
709c92714e add arc_great_circle 2022-07-21 17:17:52 +08:00
Justin Lin
ed75179dfe default to 0.8 2022-07-20 18:31:11 +08:00
Justin Lin
cb1ee004ce del * 2022-07-20 07:43:14 +08:00
Justin Lin
6d0eb7de03 rename var 2022-07-19 17:19:56 +08:00
Justin Lin
a51a8f2bd4 0.618 2022-07-19 11:50:55 +08:00
Justin Lin
e6e52f7ab8 golden angle 2022-07-19 11:36:14 +08:00
Justin Lin
4e2edcef5b update doc 2022-07-19 11:34:07 +08:00
Justin Lin
756fde7c0f fix dir 2022-07-19 11:32:27 +08:00
Justin Lin
f278d7430a del 0.5 2022-07-19 11:29:09 +08:00
Justin Lin
86e30155c8 update doc 2022-07-19 11:18:29 +08:00
Justin Lin
97860fdf67 update doc 2022-07-19 10:18:26 +08:00
Justin Lin
c93d1ae897 add fibonacci_lattice2 2022-07-19 10:05:36 +08:00
Justin Lin
0a5d64d999 rename 2022-07-17 11:01:10 +08:00
Justin Lin
8eba081532 add storage_box 2022-07-17 10:38:06 +08:00
Justin Lin
bcee313c0e refactor 2022-07-14 12:12:58 +08:00
Justin Lin
4b7133252f add tetrapod_doll 2022-07-14 10:05:21 +08:00
Justin Lin
7a6712d1b1 format 2022-07-14 08:37:18 +08:00
Justin Lin
32995370d0 refactor foot 2022-07-11 09:14:58 +08:00
Justin Lin
65b434878d scale fin 2022-07-10 18:27:00 +08:00
Justin Lin
22b14f7923 fix foot error 2022-07-10 18:09:26 +08:00
Justin Lin
e4f3522143 clean up 2022-07-10 17:55:50 +08:00
Justin Lin
d1f595dbf1 clean up 2022-07-10 16:31:55 +08:00
Justin Lin
28278e814a add treble_clef_dragon 2022-07-10 16:12:20 +08:00
Justin Lin
fbe58944e8 remove scale 2022-07-10 15:06:48 +08:00
Justin Lin
dd63a9574e update docs 2022-07-10 11:52:01 +08:00
Justin Lin
0c1e2049e2 start accept a list of points 2022-07-10 11:50:51 +08:00
Justin Lin
7f3da91174 fix var error 2022-07-10 11:50:41 +08:00
Justin Lin
c63d5c0d47 start accept a list of points 2022-07-10 11:39:57 +08:00
Justin Lin
160d2e67ac refactor 2022-07-03 10:37:23 +08:00
Justin Lin
a6e74ca978 update docs 2022-07-02 17:38:55 +08:00
Justin Lin
e39a7311f3 add comments 2022-07-02 17:33:50 +08:00
Justin Lin
f2f7438257 update note 2022-07-02 17:32:56 +08:00
Justin Lin
e436e09923 update doc 2022-07-02 17:32:19 +08:00
Justin Lin
10b99289c6 add docs 2022-07-02 17:32:01 +08:00
Justin Lin
2fab2309fe random start 2022-07-02 17:05:17 +08:00
Justin Lin
0d19380f74 start default to start 2022-07-02 17:03:43 +08:00
Justin Lin
b384817b98 rand startr 2022-07-02 17:03:14 +08:00
Justin Lin
e66aeccd33 update doc 2022-07-02 16:50:28 +08:00
Justin Lin
6df0170d81 start default to undef 2022-07-02 16:46:14 +08:00
Justin Lin
c551e96352 update note 2022-06-30 16:10:11 +08:00
Justin Lin
b0c521f8c1 rename 2022-06-30 16:09:33 +08:00
Justin Lin
0e8b676c09 add pp_poisson3 2022-06-30 16:08:15 +08:00
Justin Lin
183b3b74b6 add seed param 2022-06-30 10:54:22 +08:00
Justin Lin
964e6b5020 add pp_poisson 2022-06-29 16:55:28 +08:00
Justin Lin
c71143c113 add stereographic_foliage_scroll 2022-06-24 09:22:39 +08:00
Justin Lin
5772dcbc55 move 2022-06-24 09:03:42 +08:00
Justin Lin
243c3eb659 return spiral r 2022-06-24 08:52:38 +08:00
Justin Lin
623878b75e refactor 2022-06-24 08:35:01 +08:00
Justin Lin
b613b87536 refactor 2022-06-24 08:29:37 +08:00
Justin Lin
90b4c830be refactor 2022-06-24 08:24:56 +08:00
Justin Lin
f1fd2797a4 add foliage_scroll 2022-06-23 18:36:25 +08:00
Justin Lin
938507d02d move to pp 2022-06-19 11:47:54 +08:00
Justin Lin
2651a23524 conditional end_i 2022-06-19 09:38:00 +08:00
Justin Lin
ad4b54984b update test 2022-06-19 09:19:39 +08:00
Justin Lin
31e7ca6275 remove the extra section 2022-06-19 09:07:15 +08:00
Justin Lin
6a30eb0e76 move feet 2022-06-17 11:50:01 +08:00
Justin Lin
464fcc5f8f modify head 2022-06-16 11:13:55 +08:00
Justin Lin
669e7c4b1d remove shear 2022-06-16 08:13:10 +08:00
Justin Lin
ac4288d5f4 modify dorsal fin 2022-06-15 23:28:59 +08:00
Justin Lin
a169468da6 modify horn 2022-06-15 17:45:39 +08:00
Justin Lin
91b56e3a5a update doc 2022-06-14 09:00:48 +08:00
Justin Lin
273f83bd27 update readme 2022-06-14 08:56:43 +08:00
Justin Lin
45050f31cd del semicolon of use/include 2022-06-06 13:11:46 +08:00
Justin Lin
fd666676d6 rename 2022-06-06 11:51:23 +08:00
Justin Lin
5330981a19 del one_spiral param 2022-06-06 10:49:19 +08:00
Justin Lin
6bfe94ce1c add type, one_spiral params 2022-06-05 21:01:58 +08:00
Justin Lin
9333145a6d add start_n param 2022-06-05 20:56:32 +08:00
Justin Lin
0fc6e05d8f add golden_spiral_jigsaw 2022-06-05 19:01:46 +08:00
Justin Lin
98ae52b828 add star bunny 2022-06-04 21:14:56 +08:00
Justin Lin
dae4ee49cc add star_bunny 2022-06-04 21:14:43 +08:00
Justin Lin
5cde164bb5 support 3D triangles 2022-06-04 15:51:58 +08:00
Justin Lin
7356046aa7 add triangle/tri_subdivide 2022-06-04 14:53:35 +08:00
Justin Lin
8ce4b435c6 update README 2022-06-03 21:03:39 +08:00
Justin Lin
1ee48d6f13 update README 2022-06-03 21:02:55 +08:00
Justin Lin
cdd5452618 refactor out pack_one 2022-06-03 19:51:37 +08:00
Justin Lin
95f69374e4 rename param 2022-06-03 19:12:01 +08:00
Justin Lin
832174831f remove unused modules 2022-06-03 13:50:25 +08:00
Justin Lin
cf5d70c1ef add forest 2022-06-03 12:46:54 +08:00
Justin Lin
0c4c338046 move 2022-06-03 12:46:41 +08:00
Justin Lin
cdb403ae8e refactor 2022-06-03 10:41:34 +08:00
Justin Lin
3046b8eacd rename 2022-06-03 10:40:00 +08:00
Justin Lin
8371943c25 remove density param 2022-06-03 10:37:45 +08:00
Justin Lin
e0b32b96b7 refactor out a tri_circle_packing 2022-06-02 14:12:14 +08:00
Justin Lin
1b3ff91046 refactor 2022-06-02 12:30:58 +08:00
Justin Lin
c3025ea51c add circle_packing3 2022-05-31 16:11:35 +08:00
Justin Lin
e4661c74eb refactor 2022-05-31 16:11:28 +08:00
Justin Lin
5cd9b7e7a0 rename 2022-05-31 16:07:10 +08:00
Justin Lin
89790d50ae add circle_packing2 2022-05-31 15:50:45 +08:00
Justin Lin
6affac09a7 add tri_subdivide 2022-05-31 15:50:25 +08:00
Justin Lin
b80ea25688 use circle_packing 2022-05-31 14:36:23 +08:00
Justin Lin
8c3a7d7f7a add circle_packing 2022-05-31 14:27:18 +08:00
Justin Lin
e2ec67b67d block it 2022-05-30 17:39:42 +08:00
Justin Lin
8c88932588 add mandelbrot_set 2022-05-30 12:57:42 +08:00
Justin Lin
c7ea5b384b optimization 2022-05-29 16:19:59 +08:00
Justin Lin
a46e75c672 optimization 2022-05-29 15:57:48 +08:00
Justin Lin
fb001c8752 change value 2022-05-29 12:11:39 +08:00
Justin Lin
0c534e6133 add filled param 2022-05-29 12:10:35 +08:00
Justin Lin
4d611bb0b5 filled 2022-05-29 12:09:50 +08:00
Justin Lin
f1d5d6e472 use norm 2022-05-29 11:28:48 +08:00
Justin Lin
12e6ad672d add differential_line_growth_bowl 2022-05-28 15:59:17 +08:00
Justin Lin
e71ee91b90 clean code 2022-05-28 11:44:06 +08:00
Justin Lin
27701333c7 support 3D line 2022-05-28 11:40:29 +08:00
Justin Lin
238c2ede27 shorten allSep 2022-05-27 17:22:51 +08:00
Justin Lin
1fb449fdf6 refactor and add smooth params 2022-05-27 09:10:35 +08:00
Justin Lin
bce7487a96 add differential_line_growth 2022-05-26 18:19:56 +08:00
Justin Lin
27536f28f6 add count 2022-05-25 09:32:36 +08:00
Justin Lin
9ce272b434 fix typo 2022-05-25 09:06:18 +08:00
Justin Lin
1c04072738 update note 2022-05-21 14:16:53 +08:00
Justin Lin
9996fe9fad update README 2022-05-21 14:12:03 +08:00
Justin Lin
b8ccb792af update README 2022-05-21 14:10:58 +08:00
Justin Lin
d9bbdce328 update README 2022-05-21 14:09:07 +08:00
Justin Lin
cc8522dd05 add docs 2022-05-21 14:02:04 +08:00
Justin Lin
5a39846101 add Deprecated/Preview 2022-05-21 12:17:55 +08:00
Justin Lin
795ac56f50 draw OBTUSE & ACUTE 2022-05-20 10:17:23 +08:00
Justin Lin
6fa4fe0ea9 refactor 2022-05-20 10:05:41 +08:00
Justin Lin
d5dd12ffcd refactor 2022-05-20 09:54:04 +08:00
Justin Lin
bcc10201b3 refactor 2022-05-20 09:37:06 +08:00
Justin Lin
a3b8fc41b5 refactor 2022-05-20 08:40:06 +08:00
Justin Lin
e5d38e2d6f add penrose3_crystallization 2022-05-19 15:50:54 +08:00
Justin Lin
c2ce9d8b8a ship 3.2.2 2022-05-16 20:53:04 +08:00
Justin Lin
6f00785d6c use unit_vector 2022-05-16 17:06:16 +08:00
Justin Lin
be53dd21c1 add unit_vector 2022-05-16 13:12:31 +08:00
Justin Lin
1006fa6624 clean () 2022-05-16 09:11:33 +08:00
Justin Lin
766d01801e use vt mult 2022-05-16 09:11:26 +08:00
Justin Lin
6c1a1502dd use vt mult 2022-05-16 09:08:31 +08:00
Justin Lin
6d83e02312 remove if(m <= n) 2022-05-16 09:05:31 +08:00
Justin Lin
d0ec3a2b37 refactor 2022-05-16 09:03:52 +08:00
Justin Lin
6338019c29 < leng is not necessary 2022-05-16 09:00:57 +08:00
Justin Lin
c051817624 reuse vts 2022-05-16 08:37:57 +08:00
Justin Lin
12898673a8 reuse vts 2022-05-16 08:37:18 +08:00
Justin Lin
0d685a7280 just use min 2022-05-16 07:52:38 +08:00
Justin Lin
cb171262e7 refactor dir table 2022-05-16 07:41:51 +08:00
Justin Lin
5a63fe41f7 refactor 2022-05-15 20:48:46 +08:00
Justin Lin
7c22b6ceca use c-style for 2022-05-15 20:42:10 +08:00
Justin Lin
fb84664183 use each 2022-05-15 20:31:00 +08:00
Justin Lin
db1ff5822d refactor: re-cond 2022-05-15 20:21:17 +08:00
Justin Lin
6d7276b48a change dir_table 2022-05-15 16:30:51 +08:00
Justin Lin
a45434fa6e optimization 2022-05-15 16:11:21 +08:00
Justin Lin
4d9319d8ca re-org var 2022-05-15 14:42:33 +08:00
Justin Lin
c678589c15 use for comp 2022-05-15 14:33:30 +08:00
Justin Lin
cf32517302 re-org var 2022-05-15 10:20:20 +08:00
Justin Lin
ee9b198036 re-org var 2022-05-15 10:17:52 +08:00
Justin Lin
63aab80116 re-org vars 2022-05-15 10:11:16 +08:00
Justin Lin
22dfa7da2d use foreach 2022-05-15 10:04:35 +08:00
Justin Lin
fcf97a77e1 don't call ptf_xxx_twist when 0 2022-05-15 09:53:58 +08:00
Justin Lin
762c8b6859 compare to [0, 0] 2022-05-15 09:42:53 +08:00
Justin Lin
9e74b763e6 add decimal 2022-05-15 09:40:25 +08:00
Justin Lin
e2bf9f36b0 rename 2022-05-15 09:38:50 +08:00
Justin Lin
9b2bf9e19b rename 2022-05-14 21:03:46 +08:00
Justin Lin
d330331494 optimization 2022-05-14 21:02:48 +08:00
Justin Lin
bcaf7fe67c optimization 2022-05-14 20:57:30 +08:00
Justin Lin
3519f834e6 optimization 2022-05-14 20:49:48 +08:00
Justin Lin
eb1cdc29a0 use search 2022-05-14 18:15:22 +08:00
Justin Lin
e336cc14e4 clean code 2022-05-14 17:47:48 +08:00
Justin Lin
56b0a371b3 clean code 2022-05-14 17:46:51 +08:00
Justin Lin
87f3fcb105 clean code 2022-05-14 17:46:29 +08:00
Justin Lin
0fd3841ecc optimization 2022-05-14 17:20:53 +08:00
Justin Lin
eb901f5bba optimization 2022-05-14 17:19:02 +08:00
Justin Lin
3f504c0034 get tri from conn_indices_tris 2022-05-14 14:55:31 +08:00
Justin Lin
cbb8268456 get face frim cnn_indices_faces 2022-05-14 14:51:44 +08:00
Justin Lin
91b4b19ef3 refactor 2022-05-14 12:06:56 +08:00
Justin Lin
df4b2c702d optimization 2022-05-14 12:00:26 +08:00
Justin Lin
7d25a25a69 optimization 2022-05-14 11:56:53 +08:00
Justin Lin
04a78738e9 fix module missing 2022-05-14 11:37:29 +08:00
Justin Lin
c14b970bee optimization 2022-05-13 21:50:59 +08:00
Justin Lin
d978128f8f optimization 2022-05-13 21:45:00 +08:00
Justin Lin
db376e5290 rename 2022-05-13 13:13:01 +08:00
Justin Lin
ef361c5d22 optimization 2022-05-13 09:42:35 +08:00
Justin Lin
663c43f70e refactor 2022-05-13 08:59:54 +08:00
Justin Lin
038429ede7 refactor 2022-05-13 08:03:52 +08:00
Justin Lin
7b301bdc74 add tests 2022-05-13 07:58:14 +08:00
Justin Lin
b4c5c16451 refactor 2022-05-12 16:37:02 +08:00
Justin Lin
b2e9775e7f refactor 2022-05-12 13:01:18 +08:00
Justin Lin
705aa35e3e refactor 2022-05-12 08:19:02 +08:00
Justin Lin
4fad71c352 don't turn them into 3D 2022-05-12 08:10:36 +08:00
Justin Lin
f2e437fdd4 refactor 2022-05-11 10:51:41 +08:00
Justin Lin
8250c9ff32 refactor 2022-05-11 10:33:45 +08:00
Justin Lin
a88edea05a refactor 2022-05-11 10:31:04 +08:00
Justin Lin
e5daf6d060 refactor: reuse ry_matrix 2022-05-11 10:24:29 +08:00
Justin Lin
999e0196c0 remove modules 2022-05-11 10:24:21 +08:00
Justin Lin
e3fd9908d3 reuse rot matrix 2022-05-11 10:15:45 +08:00
Justin Lin
fc5965267f refactor: reuse matrix 2022-05-11 10:11:25 +08:00
Justin Lin
dce855611c add lo, hi params 2022-05-11 09:25:40 +08:00
Justin Lin
de97253d92 refactor: use max 2022-05-10 16:40:33 +08:00
Justin Lin
cf61ba06c2 use m_rotation 2022-05-10 10:50:14 +08:00
Justin Lin
412672b00c add binary_search 2022-05-10 09:08:34 +08:00
Justin Lin
b891640014 refactor 2022-05-10 06:59:36 +08:00
Justin Lin
997857b596 return [0, 0, 0] when [0, 0, 0] 2022-05-09 18:13:34 +08:00
Justin Lin
8a9011422a return [0, 0] if [0, 0] 2022-05-09 16:20:48 +08:00
Justin Lin
969595b4c8 remove module 2022-05-09 16:16:11 +08:00
Justin Lin
68db8eeb6c add quarter param 2022-05-09 15:42:24 +08:00
Justin Lin
e932cdaa0f add rock_horn 2022-05-09 13:37:01 +08:00
Justin Lin
a4c0d0be65 rename 2022-05-08 20:51:37 +08:00
Justin Lin
dbb10e1a1b refactor 2022-05-08 17:54:31 +08:00
Justin Lin
f3b7a8f101 only forward makes a line 2022-05-08 17:51:26 +08:00
Justin Lin
0b7bce54c3 remove slice 2022-05-08 17:24:47 +08:00
Justin Lin
3f40ae40dc refactor 2022-05-08 17:20:42 +08:00
Justin Lin
f0652c39f7 refactor 2022-05-08 17:00:09 +08:00
Justin Lin
eecfa85018 refactor 2022-05-08 16:14:35 +08:00
Justin Lin
05c55ff1bb refactor 2022-05-08 16:10:37 +08:00
Justin Lin
6549c22938 refactor: rename 2022-05-08 16:01:06 +08:00
Justin Lin
1428dc8307 refactor 2022-05-08 15:48:00 +08:00
Justin Lin
07170ed1f0 refactor: move funcs into comm 2022-05-08 11:27:34 +08:00
Justin Lin
bd34a907c2 refactor: don't each 2022-05-08 11:00:59 +08:00
Justin Lin
cd84c11213 add seed param 2022-05-08 10:38:30 +08:00
Justin Lin
01e8bce16b fix name error 2022-05-08 10:37:25 +08:00
Justin Lin
822891f53e fix name error 2022-05-08 10:25:43 +08:00
Justin Lin
61a0ccc069 refactor 2022-05-08 10:20:26 +08:00
Justin Lin
74411f32c3 refactor 2022-05-08 10:19:09 +08:00
Justin Lin
b37508dd94 avoid p1 == p2 2022-05-08 10:00:59 +08:00
Justin Lin
fca63e677f format 2022-05-07 18:08:02 +08:00
Justin Lin
8fb260b595 refactor 2022-05-07 18:07:25 +08:00
Justin Lin
0fae2d5dce refactor 2022-05-07 17:50:44 +08:00
Justin Lin
8bcdb263d3 refactor 2022-05-07 17:20:59 +08:00
Justin Lin
c513d0753c refactor 2022-05-07 17:02:11 +08:00
Justin Lin
6b353cb7a5 refactor 2022-05-07 16:47:44 +08:00
Justin Lin
916f833107 refactor 2022-05-07 16:41:00 +08:00
Justin Lin
871bee3d50 refactor: it's r 2022-05-07 16:28:35 +08:00
Justin Lin
ac262336fb refactor: use for 2022-05-07 16:24:00 +08:00
Justin Lin
62ef13a8bd refactor 2022-05-07 14:01:10 +08:00
Justin Lin
7bf7c17b36 use assert 2022-05-07 13:59:46 +08:00
Justin Lin
98a5a64293 fix det error 2022-05-07 13:57:48 +08:00
Justin Lin
03287724ff refactor 2022-05-07 13:57:11 +08:00
Justin Lin
015c2ba7ce refactor 2022-05-07 13:47:35 +08:00
Justin Lin
7f2e67b1b5 refactor 2022-05-07 13:41:46 +08:00
Justin Lin
5f3802951f refactor 2022-05-07 13:37:11 +08:00
Justin Lin
2ffb27095e update doc 2022-05-07 12:26:22 +08:00
Justin Lin
c5ac23200b use m_transpose 2022-05-07 12:20:16 +08:00
Justin Lin
6106f1fc56 use relative path 2022-05-07 12:09:26 +08:00
Justin Lin
358aea023a fix space error 2022-05-07 09:37:37 +08:00
Justin Lin
a2d9e02eea clean code 2022-05-07 09:22:25 +08:00
Justin Lin
07c661b025 max, min can apply on points 2022-05-07 09:21:44 +08:00
Justin Lin
593715cf23 refactor 2022-05-06 22:57:11 +08:00
Justin Lin
c4b4a00909 optimization 2022-05-06 19:58:20 +08:00
Justin Lin
42fa6df7cc refactor 2022-05-06 19:39:15 +08:00
Justin Lin
193f38d531 fix period missing 2022-05-06 18:37:43 +08:00
Justin Lin
590d8ab7c3 optimization 2022-05-06 17:54:26 +08:00
Justin Lin
8c483f6c8b use param 2022-05-06 14:55:45 +08:00
Justin Lin
c142e8b6e8 add ripple_sphere 2022-05-06 14:08:51 +08:00
Justin Lin
e55a4a6108 fix random seed error 2022-05-06 09:45:07 +08:00
Justin Lin
5da7a66fac refactor 2022-05-05 21:33:00 +08:00
Justin Lin
582d7642eb refactor 2022-05-05 21:28:14 +08:00
Justin Lin
748719d639 refactor 2022-05-05 21:23:03 +08:00
Justin Lin
ba4c8e36a4 refactor 2022-05-05 21:18:32 +08:00
Justin Lin
c7c59f58b5 abs is not required 2022-05-05 20:42:18 +08:00
Justin Lin
0ae64dcf6a optimization 2022-05-05 16:07:20 +08:00
Justin Lin
3fd7fd60d9 optimization 2022-05-05 15:54:08 +08:00
Justin Lin
88801575e8 refactor 2022-05-05 13:22:49 +08:00
Justin Lin
e863770245 refactor 2022-05-05 13:19:03 +08:00
Justin Lin
108e2cc0ea refactor 2022-05-05 13:16:56 +08:00
Justin Lin
420738c25b refactor 2022-05-05 13:14:27 +08:00
Justin Lin
b08afa8798 refactor 2022-05-05 13:12:41 +08:00
Justin Lin
65a19f5f42 optimization 2022-05-05 12:05:17 +08:00
Justin Lin
e714fb0bc3 refactor 2022-05-05 10:30:07 +08:00
Justin Lin
a4bb82698a refactor 2022-05-05 09:29:03 +08:00
Justin Lin
cb03a1437b add test 2022-05-05 08:41:27 +08:00
Justin Lin
659988abe2 use cross 2022-05-05 08:31:46 +08:00
Justin Lin
252bc5738e fix name 2022-05-05 08:28:41 +08:00
Justin Lin
f306c22306 add test 2022-05-05 08:27:28 +08:00
Justin Lin
e25fbf6690 add test 2022-05-05 08:18:35 +08:00
Justin Lin
7bdb470285 rename 2022-05-05 08:12:32 +08:00
Justin Lin
2f274c299b refactor 2022-05-05 06:29:12 +08:00
Justin Lin
0414c440a3 rename 2022-05-04 21:15:52 +08:00
Justin Lin
1ef1b46a93 refactor 2022-05-04 21:12:04 +08:00
Justin Lin
4e406b19cf refactor 2022-05-04 21:04:38 +08:00
Justin Lin
6e4efe2e9f refactor 2022-05-04 20:55:52 +08:00
Justin Lin
50a658c20a should be remain > 1 2022-05-04 15:17:29 +08:00
Justin Lin
86865c6861 refactor 2022-05-04 15:05:21 +08:00
Justin Lin
bc6288f5d2 refactor 2022-05-04 15:00:09 +08:00
Justin Lin
61fef89bfd fix join-miter error 2022-05-04 10:17:34 +08:00
Justin Lin
ccf77872ed refactor 2022-05-04 09:15:25 +08:00
Justin Lin
a53c15bafe refactor: loop once 2022-05-04 09:10:48 +08:00
Justin Lin
b739142514 refactor: del unnecessary param 2022-05-04 08:29:16 +08:00
Justin Lin
bd69e673b1 refactor 2022-05-04 08:10:03 +08:00
Justin Lin
794730402b refactor 2022-05-04 07:49:56 +08:00
Justin Lin
d92586e839 refactor: pass i 2022-05-04 07:49:48 +08:00
Justin Lin
444fde9cc0 refactor: use lookup 2022-05-04 07:15:15 +08:00
Justin Lin
3ea9715bc4 all counter-clockwise? 2022-05-03 19:31:01 +08:00
Justin Lin
2ba17bacf7 refactor 2022-05-03 18:41:09 +08:00
Justin Lin
4276c31b97 refactor 2022-05-03 18:15:27 +08:00
Justin Lin
7792030765 refactor 2022-05-03 17:24:28 +08:00
Justin Lin
5e289d6442 refactor 2022-05-03 16:49:47 +08:00
Justin Lin
b7bc803849 tail recursion 2022-05-03 16:49:01 +08:00
Justin Lin
c97b5a9ed0 refactor 2022-05-03 16:37:28 +08:00
Justin Lin
1a27de190f refactor 2022-05-03 16:32:50 +08:00
Justin Lin
bf13db43eb don't repeat calc angleyz_pts01 2022-05-03 10:12:54 +08:00
Justin Lin
060e695a1a update comment 2022-05-03 10:05:18 +08:00
Justin Lin
ec3ed59e6f refactor: rot_m from a,v directly 2022-05-03 10:03:46 +08:00
Justin Lin
8f4370be7a refactor: sh_pts for matrix multi 2022-05-03 09:56:23 +08:00
Justin Lin
af6903992b remove # 2022-05-03 09:49:28 +08:00
Justin Lin
19b4434c83 fix scale error 2022-05-03 09:47:03 +08:00
Justin Lin
29105549ae fix scale missing 2022-05-03 09:31:42 +08:00
Justin Lin
f8a5752dd2 refactor 2022-05-03 09:27:23 +08:00
Justin Lin
6046591497 refactor 2022-05-03 09:06:49 +08:00
Justin Lin
37974e6255 refactor 2022-05-03 07:13:30 +08:00
Justin Lin
327c15865b refactor 2022-05-02 16:39:35 +08:00
Justin Lin
060b0b421c refactor 2022-05-02 16:30:31 +08:00
Justin Lin
c69f63e5d3 refactor 2022-05-02 16:29:14 +08:00
Justin Lin
6024d22d45 refactor 2022-05-02 16:27:02 +08:00
Justin Lin
de00c9d2aa add convexity 2022-05-02 14:55:19 +08:00
Justin Lin
a341c1f855 remove # 2022-05-02 14:48:58 +08:00
Justin Lin
1c2fe403cb refactor: simplify formula 2022-05-02 14:48:13 +08:00
Justin Lin
7ff012f360 refactor formula 2022-05-02 13:47:26 +08:00
Justin Lin
8d324469f8 refactor: don't mod 256 2022-05-02 10:34:49 +08:00
Justin Lin
cf01d9626a optimization: use native rands 2022-05-02 10:32:07 +08:00
Justin Lin
f791eccf25 optimization 2022-05-02 09:05:07 +08:00
Justin Lin
99ee4e4e74 optimization 2022-05-02 07:58:50 +08:00
Justin Lin
19b2526483 optimization 2022-05-01 20:32:19 +08:00
Justin Lin
2c7db9d85c half_sort is enough 2022-05-01 18:11:34 +08:00
Justin Lin
fd4785bbaa refactor 2022-05-01 17:43:27 +08:00
Justin Lin
3481ca7b22 refactor 2022-05-01 17:17:01 +08:00
Justin Lin
c547ab4ec6 remove module 2022-05-01 17:00:51 +08:00
Justin Lin
2d38e55630 refactor 2022-05-01 16:57:37 +08:00
Justin Lin
9aa6bbb5ca refactor 2022-05-01 16:55:53 +08:00
Justin Lin
920b09ed07 refactor: loop onice 2022-05-01 16:34:56 +08:00
Justin Lin
5ccfbf4bbb move to maze 2022-05-01 16:22:52 +08:00
Justin Lin
7f4c25b9e3 refactor: re-orgnize formula 2022-05-01 16:19:40 +08:00
Justin Lin
e16a869a3f refactor: use sorted 2022-05-01 15:54:27 +08:00
Justin Lin
d2d3c1e707 refactor 2022-04-30 17:33:36 +08:00
Justin Lin
63110174f4 add reverse param 2022-04-29 23:19:25 +08:00
Justin Lin
c9213aaead contains can handle undef 2022-04-29 21:20:42 +08:00
Justin Lin
b68d053332 optimization 2022-04-29 21:17:05 +08:00
Justin Lin
bff5b022a7 optimization 2022-04-29 20:39:39 +08:00
Justin Lin
2f9afc38c4 norm is ok 2022-04-29 18:05:03 +08:00
Justin Lin
22c71d8946 refactor 2022-04-29 14:12:35 +08:00
Justin Lin
671aac9d55 refactor 2022-04-29 11:06:35 +08:00
Justin Lin
65b375995a refactor: sort by key 2022-04-29 10:59:27 +08:00
Justin Lin
e4709ab049 support key param 2022-04-29 10:59:17 +08:00
Justin Lin
77f74c36ec optimization 2022-04-29 09:12:10 +08:00
Justin Lin
309098dfcc refactor 2022-04-29 08:52:52 +08:00
Justin Lin
4fe19bf552 refactor: use _face_normal 2022-04-29 08:20:56 +08:00
Justin Lin
05443666c3 based on vertex normal 2022-04-28 10:08:39 +08:00
Justin Lin
4510f43cc0 refactor 2022-04-28 09:41:53 +08:00
Justin Lin
ae8e72a7f4 reverse is not required 2022-04-28 09:38:28 +08:00
Justin Lin
1ea86206bb use for comp 2022-04-28 09:33:02 +08:00
Justin Lin
aff15eae5e because [each undef] is [] 2022-04-28 09:08:22 +08:00
Justin Lin
d06455082e refactor: use contains/reverse 2022-04-28 09:02:17 +08:00
Justin Lin
b621da6e42 refactor 2022-04-27 18:05:03 +08:00
Justin Lin
87596567a1 refactor 2022-04-25 17:25:37 +08:00
Justin Lin
7be7badbe0 refactor 2022-04-24 20:50:10 +08:00
Justin Lin
c4d9674a0e change param 2022-04-24 18:48:54 +08:00
Justin Lin
4f43260f44 refactor 2022-04-24 17:10:37 +08:00
Justin Lin
68827f41cf refactor: acos 2022-04-24 16:46:22 +08:00
Justin Lin
a8dd6c1af8 refactor 2022-04-23 17:19:33 +08:00
Justin Lin
712ca010a1 refafctor: use cross 2022-04-23 17:08:21 +08:00
Justin Lin
bd0ee73350 refactor 2022-04-23 16:29:50 +08:00
Justin Lin
1cfd8d5b11 include _pt2_hash.scad 2022-04-23 16:25:59 +08:00
Justin Lin
5b6ec4271d refactor: use coord directly 2022-04-23 12:17:31 +08:00
Justin Lin
4d0c83ddc8 refafctor: search in notCollapsedCoords 2022-04-23 12:13:48 +08:00
Justin Lin
79f8495090 collapsing method by leng is enough 2022-04-22 08:40:03 +08:00
Justin Lin
a67873d22c just check len(nbr_tiles) == 1 2022-04-21 22:20:51 +08:00
Justin Lin
274d70a85b only doDir when nbr in notCollaspedCoords 2022-04-21 21:28:42 +08:00
Justin Lin
cb6cb51405 refactor: use contains 2022-04-21 21:05:26 +08:00
Justin Lin
b6f23978ce del unnecessary param 2022-04-21 21:01:14 +08:00
Justin Lin
f84f7d77f9 optimization 2022-04-21 09:06:31 +08:00
Justin Lin
9401aeb510 refactor: vt operation 2022-04-21 08:25:32 +08:00
Justin Lin
74b1715e97 refactor: vt operation 2022-04-21 07:48:07 +08:00
Justin Lin
a5887d3daa update comment 2022-04-20 23:02:02 +08:00
Justin Lin
d5fa8807e0 add polygon_abuse 2022-04-20 23:00:58 +08:00
Justin Lin
65280744b3 cal to i == 2 is enough 2022-04-20 22:57:05 +08:00
Justin Lin
526f6dac97 optimization 2022-04-20 20:31:44 +08:00
Justin Lin
1f0513b7ff refactor: p 2022-04-20 18:39:58 +08:00
Justin Lin
fd18bdd959 refactor: use m_replace 2022-04-20 18:38:07 +08:00
Justin Lin
61a1d3d2b1 refactor: include 1st class hash function 2022-04-20 07:51:19 +08:00
Justin Lin
7c998619b1 refactor: use constant name 2022-04-19 16:08:48 +08:00
Justin Lin
1e2d5f5d39 refactor: extract constants 2022-04-19 16:06:33 +08:00
Justin Lin
68f73a808a optimization 2022-04-19 13:33:34 +08:00
Justin Lin
ca6394bb19 refactor: del tilemap 2022-04-19 13:26:26 +08:00
Justin Lin
fa65d0687b optimization 2022-04-19 13:22:26 +08:00
Justin Lin
ac0e57f91b fix sample nbrs error 2022-04-19 11:05:51 +08:00
Justin Lin
68e7b5d517 optimization 2022-04-19 09:58:28 +08:00
Justin Lin
8342deaa56 refactor: sort first 2022-04-19 08:38:55 +08:00
Justin Lin
639737a207 refactor: extact dir cond 2022-04-18 22:37:26 +08:00
Justin Lin
2ffef05abb refactor 2022-04-18 22:32:41 +08:00
Justin Lin
96432c8525 refactor 2022-04-18 22:22:21 +08:00
Justin Lin
a0e465a635 refactor: del var 2022-04-18 18:28:25 +08:00
Justin Lin
4031fee5bb refactor: vt multi 2022-04-18 16:57:08 +08:00
Justin Lin
f62079f334 refactor: we don't need acos 2022-04-18 16:47:51 +08:00
Justin Lin
ed1027f9de refactor: is_undef(combine) 2022-04-18 16:35:40 +08:00
Justin Lin
493645bc7e refactor: use list comprehension 2022-04-18 16:32:06 +08:00
Justin Lin
3dc5a9fea2 update doc 2022-04-18 16:15:24 +08:00
Justin Lin
892aa245da format 2022-04-18 10:38:49 +08:00
Justin Lin
62849b5374 avoid floating error 2022-04-18 10:36:57 +08:00
Justin Lin
31fa1869c2 avoid floating error 2022-04-18 10:33:59 +08:00
Justin Lin
5e1f247679 fix typo 2022-04-17 20:44:52 +08:00
Justin Lin
9fabbecd7c fix wrong variable 2022-04-17 20:43:23 +08:00
Justin Lin
884e42478d format 2022-04-17 20:40:12 +08:00
Justin Lin
93704a6fd9 fix wrong variable 2022-04-17 20:40:04 +08:00
Justin Lin
c31804a29d refactor 2022-04-17 20:35:21 +08:00
Justin Lin
7bcf5d8f27 refactor: don't use each 2022-04-17 20:04:38 +08:00
Justin Lin
92190fbb21 rename 2022-04-17 19:53:21 +08:00
Justin Lin
eb96b767d4 refactor: loop once 2022-04-17 12:12:40 +08:00
Justin Lin
a9591e8df5 refactor: loop once 2022-04-17 12:09:39 +08:00
Justin Lin
d7872a467a refactor: less is more 2022-04-17 12:02:18 +08:00
Justin Lin
202e9dd17e refactor: use m_replace 2022-04-17 11:45:20 +08:00
Justin Lin
598f75dba8 refactor: use m_replace 2022-04-17 11:34:10 +08:00
Justin Lin
b982fdf331 refactor: use if/else 2022-04-17 11:34:03 +08:00
Justin Lin
261168ee7e refactor: use m_replace 2022-04-17 10:44:47 +08:00
Justin Lin
6f880aa794 add m_replace 2022-04-17 10:44:38 +08:00
Justin Lin
d3e1cfea97 refactor: each 2022-04-17 10:35:22 +08:00
Justin Lin
3e2d95e387 refactor: use each 2022-04-16 22:07:27 +08:00
Justin Lin
0524d5bc11 refactor: format cond 2022-04-16 21:57:33 +08:00
Justin Lin
97a7f38969 refactor: optimization 2022-04-16 21:45:40 +08:00
Justin Lin
dc6d5f8065 refactor: format 2022-04-16 17:42:44 +08:00
Justin Lin
1628c56f0d refactor: format 2022-04-16 17:39:50 +08:00
Justin Lin
b16da34c86 refactor: format 2022-04-16 17:36:59 +08:00
Justin Lin
4875aeeb98 refactor: format 2022-04-16 17:30:30 +08:00
Justin Lin
869e645bbd refactor: reverse 2022-04-16 17:25:16 +08:00
Justin Lin
ada3588fb4 refactor: clean code 2022-04-16 17:18:02 +08:00
Justin Lin
64515eec03 refactor: merge pts2 cond 2022-04-16 17:08:27 +08:00
Justin Lin
a56f451b26 update test 2022-04-16 17:07:49 +08:00
Justin Lin
276405c478 refactor: use each 2022-04-16 16:47:03 +08:00
Justin Lin
5ddc184e8b refactor: use radians, degrees 2022-04-16 16:42:23 +08:00
Justin Lin
d69e08c506 refactor: extract sgn 2022-04-16 16:11:50 +08:00
Justin Lin
449e7b520b refactor: reverse 2022-04-16 15:59:17 +08:00
Justin Lin
a8f9499093 refactor: sqrt 2022-04-16 14:24:27 +08:00
Justin Lin
8a0ea31c78 refactor 2022-04-16 14:16:02 +08:00
Justin Lin
9ea8812d0f add test 2022-04-16 14:16:00 +08:00
Justin Lin
17969d9a7a refactor: del code 2022-04-16 14:05:30 +08:00
Justin Lin
1da331441a refactor: vector multi 2022-04-16 13:50:29 +08:00
Justin Lin
07343e9e37 refactor 2022-04-16 12:59:58 +08:00
Justin Lin
6c78b0e090 del echo 2022-04-16 12:37:33 +08:00
Justin Lin
2c7442a76a refactor: use util/lerp.scad 2022-04-16 12:05:07 +08:00
Justin Lin
8dff911ab0 refactor 2022-04-16 11:53:11 +08:00
Justin Lin
b024c6084f refactor: avoid atan2 2022-04-16 11:34:21 +08:00
Justin Lin
3ba4b3fdec refactor: cosa, sina 2022-04-16 11:25:41 +08:00
Justin Lin
d432557fb2 refactor: sum vt 2022-04-15 21:26:31 +08:00
Justin Lin
39864c5e1a refactor: return uv 2022-04-15 20:53:36 +08:00
Justin Lin
c70d99213d refactor: don't loop uv every gen 2022-04-15 19:40:15 +08:00
Justin Lin
2227f8b95e refactor: reuse uy_ly rx_lx 2022-04-15 19:00:33 +08:00
Justin Lin
802bc6f8eb add maze_vase 2022-04-15 15:36:46 +08:00
Justin Lin
b20cd082f1 add case 2022-04-15 10:19:30 +08:00
Justin Lin
3ee549e89e use contains 2022-04-15 10:04:02 +08:00
Justin Lin
89a6cc2137 update doc 2022-04-15 09:56:57 +08:00
Justin Lin
5d26af0f31 refactor: use contains 2022-04-15 09:50:25 +08:00
Justin Lin
178e3372c6 update note 2022-04-15 09:46:00 +08:00
Justin Lin
fd34e9d5b9 refactor: use contains 2022-04-15 09:44:05 +08:00
Justin Lin
3ad74ff561 add contains 2022-04-15 09:43:23 +08:00
Justin Lin
4fb59ebcdb rollback 2022-04-15 09:42:07 +08:00
Justin Lin
8cd1638a61 always search 2022-04-15 09:38:07 +08:00
Justin Lin
9599d5434c refactor: we don't need sort 2022-04-15 09:31:51 +08:00
Justin Lin
ed4d8efb55 refactor: use sorted 2022-04-15 09:21:36 +08:00
Justin Lin
89b5602026 refactor: use sorted 2022-04-15 08:59:17 +08:00
Justin Lin
a6a2b9d3f5 refactor: use hashset 2022-04-15 08:51:52 +08:00
Justin Lin
4c3dca538d add test 2022-04-15 08:12:48 +08:00
Justin Lin
35cf05dd42 add sorted 2022-04-15 08:07:38 +08:00
Justin Lin
bde84c004c refactor: use hashset 2022-04-14 21:22:45 +08:00
Justin Lin
38ee4a9c66 refactor: rename var 2022-04-14 21:21:01 +08:00
Justin Lin
695e161724 add test 2022-04-14 21:19:53 +08:00
Justin Lin
5205a31bf2 refactor: use hashset 2022-04-14 21:14:12 +08:00
Justin Lin
ad5c2a984a refactor: check bucket [] 2022-04-14 21:03:08 +08:00
Justin Lin
9bb9dd4260 refactor: check bucket [] 2022-04-14 21:02:55 +08:00
Justin Lin
8e042ae635 add test 2022-04-14 21:01:09 +08:00
Justin Lin
64df730e47 add test 2022-04-14 20:14:37 +08:00
Justin Lin
eccf2e2bd9 add test 2022-04-14 18:10:20 +08:00
Justin Lin
17c9118494 refactor: use sort 2022-04-14 18:03:34 +08:00
Justin Lin
1838104e4b refactor: vector can be compared 2022-04-14 18:01:23 +08:00
Justin Lin
67745a8edf refactor: use sort 2022-04-14 17:58:08 +08:00
Justin Lin
00a0bf9749 format 2022-04-14 16:01:39 +08:00
Justin Lin
42f4c7eafd refactor 2022-04-14 15:57:56 +08:00
Justin Lin
6250cce455 refactor: vector addition 2022-04-14 10:47:18 +08:00
Justin Lin
2b58eb7528 del 2022-04-14 10:36:13 +08:00
Justin Lin
d6b2e40d8d refactor: provide closed shape 2022-04-14 10:36:01 +08:00
Justin Lin
f2e81bf3c3 refactor: del pts 2022-04-14 10:19:22 +08:00
Justin Lin
2400ad550b add test 2022-04-14 10:05:11 +08:00
Justin Lin
e3c5d035aa refactor: vector minus 2022-04-14 09:52:22 +08:00
Justin Lin
963bcab381 add test 2022-04-14 09:52:12 +08:00
Justin Lin
4215efe4fa update doc 2022-04-14 07:51:45 +08:00
Justin Lin
7039e9e379 refactor: use leap, vector mult 2022-04-13 20:59:14 +08:00
Justin Lin
a6cdb1c2c8 refactor: remove var 2022-04-13 10:09:11 +08:00
Justin Lin
220db1a3a4 refactor: var is not necessary 2022-04-13 10:07:52 +08:00
Justin Lin
5e8a053e0d refactor: inner _learp 2022-04-13 09:23:38 +08:00
Justin Lin
83242cb5fd refactor: based on vector addition 2022-04-13 09:23:24 +08:00
Justin Lin
3f6211d8a6 add test 2022-04-13 09:10:25 +08:00
Justin Lin
9b3eee5993 refactor 2022-04-13 08:26:10 +08:00
Justin Lin
06f144d38b refactor: we don't really need angle 2022-04-12 20:26:41 +08:00
Justin Lin
7b3f27358b refactor: we don't really need angle 2022-04-12 19:37:15 +08:00
Justin Lin
6548996334 refactor: readability is 1st 2022-04-12 15:59:20 +08:00
Justin Lin
21a822e989 combination of quick sort and insertion sort 2022-04-12 14:46:42 +08:00
Justin Lin
4f09162c28 refactor: extract a _sort function 2022-04-12 14:35:29 +08:00
Justin Lin
db0d381ceb refactor: vector minus 2022-04-12 09:40:48 +08:00
Justin Lin
903caed63c refactor: use norm 2022-04-12 09:33:54 +08:00
Justin Lin
2a29844a3f get weights when first_collasped_propagated 2022-04-11 18:24:23 +08:00
Justin Lin
8a8e55d54f refactor: sort and get elem 2022-04-11 17:13:27 +08:00
Justin Lin
ad760d1f4a refactor: use cross 2022-04-11 11:31:14 +08:00
Justin Lin
71f2156d3e refactor: check eq in _hashset 2022-04-11 11:11:02 +08:00
Justin Lin
233ae4b50a refactor: extract a template 2022-04-11 11:08:12 +08:00
Justin Lin
a63bbb47fd refactor: check eq in f_eq 2022-04-11 11:05:13 +08:00
Justin Lin
9141a4db4b refactor: check eq in _dedup 2022-04-11 10:46:09 +08:00
Justin Lin
949a48a74f refactor: del default value 2022-04-11 07:39:23 +08:00
Justin Lin
fe079986dc fix missing dir 2022-04-10 20:24:25 +08:00
Justin Lin
7c6268c54c refactor: check dirs directly 2022-04-10 20:17:35 +08:00
Justin Lin
dfdfda681d refactor: check four dirs directly 2022-04-10 20:10:07 +08:00
Justin Lin
55c61ffb74 refactor: 1st dir is always visitable 2022-04-10 18:59:20 +08:00
Justin Lin
b6d86a4faf refactor: 1st dir is always visitable 2022-04-10 18:54:32 +08:00
Justin Lin
29fc7ca2ad rename 2022-04-10 14:40:01 +08:00
Justin Lin
402cbb268d add 3dmaze_mickey 2022-04-10 11:08:05 +08:00
Justin Lin
c59025b432 refactor: extract draw_3dmaze 2022-04-10 11:07:59 +08:00
Justin Lin
f5e24e2239 add test 2022-04-09 19:21:51 +08:00
Justin Lin
a99456225f fix order 2022-04-09 19:14:22 +08:00
Justin Lin
12a7c918f1 refactor: tail recursion 2022-04-09 19:04:18 +08:00
Justin Lin
7af202f5e5 refactor: don't repeat it 2022-04-09 18:54:01 +08:00
Justin Lin
410c4153f4 refacto: swap when leng == 2 2022-04-09 18:48:35 +08:00
Justin Lin
18e0ecceae refactor: tail recursion/sort 2022-04-09 18:42:14 +08:00
Justin Lin
267f5ce301 it's cross 2022-04-09 18:24:43 +08:00
Justin Lin
fd404de056 refactor: sort by cross 2022-04-09 18:22:11 +08:00
Justin Lin
544c6e6d46 refactor: sort by cross 2022-04-09 17:39:21 +08:00
Justin Lin
73067c7557 use x, y attrs 2022-04-09 17:07:50 +08:00
Justin Lin
98280924c1 format 2022-04-08 15:39:04 +08:00
Justin Lin
a72185fdf8 rename 2022-04-08 13:02:12 +08:00
Justin Lin
71f5735439 rename 2022-04-08 13:01:55 +08:00
Justin Lin
cb4eb6f5df add maze3d_sphere 2022-04-08 11:35:29 +08:00
Justin Lin
672db85bf5 fix missing argument 2022-04-08 11:31:52 +08:00
Justin Lin
d5381e0047 update comment 2022-04-08 11:19:05 +08:00
Justin Lin
dc62e32b67 refactor: del variable 2022-04-08 11:02:02 +08:00
887 changed files with 9583 additions and 5320 deletions

View File

@@ -1,4 +1,4 @@
# dotSCAD 3.2.1
# dotSCAD 3.3
> **Reduce the burden of mathematics/algorithm when playing OpenSCAD.**
@@ -18,13 +18,13 @@ OpenSCAD uses three library locations, the installation library, built-in librar
Every public module/function has the same name as the .scad file. Here's an example using the `line2d` module:
use <line2d.scad>;
use <line2d.scad>
line2d(p1 = [0, 0], p2 = [5, 0], width = 1);
The library uses directories to categorize some modules/functions. For example, vx_circle.scad exists in `voxel` directory. Prefix the directory name when using `vx_circle`.
use <voxel/vx_circle.scad>;
use <voxel/vx_circle.scad>
points = vx_circle(radius = 10);
for(pt = points) {
@@ -94,7 +94,6 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
[**cross_sections**(shape_pts, path_pts, angles[, twist, scale])](https://openhome.cc/eGossip/OpenSCAD/lib3x-cross_sections.html) | given a 2D shape, points and angles along the path, this function returns all cross-sections.
[**in_polyline**(line_pts, pt[, epsilon])](https://openhome.cc/eGossip/OpenSCAD/lib3x-in_polyline.html) | check whether a point is on a line.
[**lines_intersection**(line1, line2[, ext, epsilon])](https://openhome.cc/eGossip/OpenSCAD/lib3x-lines_intersection.html) | find the intersection of two line segments. Return `[]` if lines don't intersect.
[**rails2sections**(rails)](https://openhome.cc/eGossip/OpenSCAD/lib3x-rails2sections.html) | create sections along rails.
[**path_scaling_sections**(shape_pts, edge_path)](https://openhome.cc/eGossip/OpenSCAD/lib3x-path_scaling_sections.html) | given an edge path with the first point at the outline of a shape, this function uses the path to calculate scaling factors and returns all scaled sections in the reversed order of the edge path.
[**midpt_smooth**(points, n[, closed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-midpt_smooth.html) | given a 2D path, this function constructs a mid-point smoothed version by joining the mid-points of the lines of the path.
@@ -159,19 +158,20 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
Signature | Description
--|--
[**util/bsearch**(sorted, target)](https://openhome.cc/eGossip/OpenSCAD/lib3x-bsearch.html) | search a value in a list whose elements must be sorted by zyx.
[**util/has**(lt, elem[, sorted])](https://openhome.cc/eGossip/OpenSCAD/lib3x-has.html) | return `true` if `lt` contains elem.
[**util/binary_search**(sorted, target[, lo, hi])](https://openhome.cc/eGossip/OpenSCAD/lib3x-binary_search.html) | search a value in a sorted list.
[**util/contains**(lt, elem)](https://openhome.cc/eGossip/OpenSCAD/lib3x-contains.html) | return `true` if `lt` contains `elem`.
[**util/find_index**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-find_index.html) | return the index of the first element that satisfies the testing function.
[**util/dedup**(lt, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-dedup.html) | eliminate duplicate vectors.
[**util/flat**(lt[, depth])](https://openhome.cc/eGossip/OpenSCAD/lib3x-flat.html) | return a new list with all sub-list elements concatenated into it recursively up to the specified depth.
[**util/reverse**(lt)](https://openhome.cc/eGossip/OpenSCAD/lib3x-reverse.html) | reverse a list.
[**util/slice**(lt, begin, end)](https://openhome.cc/eGossip/OpenSCAD/lib3x-slice.html) | return a list selected from `begin` to `end`, or to the `end` of the list (`end` not included).
[**util/sort**(lt[, by, idx])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sort.html) | sort a list.
[**util/sorted**(lt[, cmp, key, reverse])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sorted.html) | sort a list.
[**util/sum**(lt)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sum.html) | use `+` to sum up all elements in a list.
[**util/swap**(lt, i, j)](https://openhome.cc/eGossip/OpenSCAD/lib3x-swap.html) | swap two elements in a list.
[**util/zip**(lts, combine)](https://openhome.cc/eGossip/OpenSCAD/lib3x-zip.html) | make a list that aggregates elements from each of the lists.
[**util/every**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-every.html) | test whether all elements in the list pass the test implemented by the provided function.
[**util/some**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-some.html) | test whether at least one element in the list passes the test implemented by the provided function.
[**util/count**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-count.html) | return the number of times `test` return `true` in the list.
### util/random
@@ -235,6 +235,7 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
[**matrix/m_shearing**([sx, sy, sz])](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_shearing.html) | generate a transformation matrix which can pass into `multmatrix` to shear all child elements along the X-axis, Y-axis, or Z-axis in 3D.
[**matrix/m_translation**(v)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_translation.html) | generate a transformation matrix which can pass into multmatrix to translates (moves) its child elements along the specified vector.
[**maxtrix/m_transpose**(m)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_transpose.html) | transpose a matrix.
[**matrix/m_replace**(m, i, j, value)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_replace.html) | replace the aᵢⱼ element of a matrix.
## Point Transformation
@@ -260,6 +261,7 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
[**triangle/tri_delaunay_indices**(d)](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_delaunay_indices.html) | return triangle indices from a delaunay object.
[**triangle/tri_delaunay_shapes**(d)](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_delaunay_shapes.html) | return triangle shapes from a delaunay object.
[**triangle/tri_delaunay_voronoi**(d)](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_delaunay_voronoi.html) | return [Voronoi](https://en.wikipedia.org/wiki/Voronoi_diagram) cells from a delaunay object.
[**triangle/tri_subdivide**(shape_pts[, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_subdivide.html) | subdivide a triangle `n` times.
----
@@ -349,14 +351,15 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
Signature | Description
--|--
[**maze/mz_square_cells**(rows, columns[, start, ...])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_cells.html) | return cell data of a square maze.
[**maze/mz_square**([rows, columns, start, init_cells, x_wrapping, y_wrapping, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square.html) | return cell data of a square maze.
[**maze/mz_square_get**(cell, query)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_get.html) | a helper for getting data from a square-maze cell.
[**maze/mz_square_walls**(cells, rows, columns, cell_width, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_walls.html) | a helper for creating square wall data from maze cells.
[**maze/mz_hex_walls**(cells, rows, columns, cell_radius, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hex_walls.html) | a helper for creating hex wall data from maze cells.
[**maze/mz_squarewalls**(cells, cell_width[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_squarewalls.html) | a helper for creating square wall data from maze cells.
[**maze/mz_hexwalls**(cells, cell_radius[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hexwalls.html) | a helper for creating hex wall data from maze cells.
[**maze/mz_square_initialize**(rows, columns, mask)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_initialize.html) | a helper for initializing cell data of a maze.
[**maze/mz_hamiltonian**(rows, columns[, start, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hamiltonian.html) | create a hamiltonian path from a maze.
[**maze/mz_theta_cells**(rows, beginning_number[, start, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta_cells.html) | return cell data of a theta maze.
[**maze/mz_theta_get**(cell, query)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta_get.html) | a helper for getting data from a theta-maze cell.
[**maze/mz_theta**(rings, beginning_number[, start, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta.html) | return cell data of a theta maze.
[**maze/mz_tiles**(cells[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_tiles.html) | turn maze cells into tiles.
## Polyhedra
@@ -371,5 +374,13 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
[**polyhedra/icosahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_icosahedron.html) | create a icosahedron.
[**polyhedra/superellipsoid**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_superellipsoid.html) | create a superellipsoid.
----
## Point Picking
Signature | Description
--|--
[**pp/pp_disk**(radius, value_count[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_disk.html) | generate random points over a disk.
[**pp/pp_sphere**(radius, value_count[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_sphere.html) | pick random points on the surface of a sphere.
[**pp/pp_poisson2**(size, r[, start, k, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_poisson2.html) | perform poisson sampling over a rectangle area.
[**pp/pp_poisson3**(size, r[, start, k, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_poisson3.html) | perform poisson sampling over a cube space.
----

View File

@@ -1,5 +1,66 @@
> Version numbers are based on [Semantic Versioning](https://semver.org/).
# v3.3
## Deprecated
Signature | Description
--|--
**rails2sections** | use [`maxtrix/m_transpose`](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_transpose.html) instead.
**util/sort** | use [`util/sorted`](https://openhome.cc/eGossip/OpenSCAD/lib3x-sorted.html) instead.
**util/has** | use [`util/contains`](https://openhome.cc/eGossip/OpenSCAD/lib3x-contains.html) instead.
**util/bsearch** | use [`util/binary_search`](https://openhome.cc/eGossip/OpenSCAD/lib3x-binary_search.html) instead.
**maze/mz_square_cells** | use [`maze/mz_square`](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square.html).
**maze/mz_square_walls** | use [`maze/mz_squarewalls`](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_squarewalls.html) instead.
**maze/mz_hex_walls** | use [`maze/mz_hexwalls`](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hexwalls.html) instead.
**maze/mz_theta_cells** | use [`maze/mz_theta`](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta.html) instead.
## Util
Signature | Description
--|--
[**util/sorted**(lt[, cmp, key, reverse])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sorted.html) | sort a list.
[**util/contains**(lt, elem)](https://openhome.cc/eGossip/OpenSCAD/lib3x-contains.html) | return `true` if `lt` contains `elem`.
[**util/binary_search**(sorted, target[, lo, hi])](https://openhome.cc/eGossip/OpenSCAD/lib3x-binary_search.html) | search a value in a sorted list.
[**util/count**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-count.html) | return the number of times `test` return `true` in the list.
## Matrix
Signature | Description
--|--
[**matrix/m_replace**(m, i, j, value)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_replace.html) | replace the aᵢⱼ element of a matrix.
## Triangle
Signature | Description
--|--
[**triangle/tri_subdivide**(shape_pts[, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_subdivide.html) | subdivide a triangle `n` times.
## Point Picking
Signature | Description
--|--
[**pp/pp_disk**(radius, value_count[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_disk.html) | generate random points over a disk.
[**pp/pp_sphere**(radius, value_count[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_sphere.html) | pick random points on the surface of a sphere.
[**pp/pp_poisson2**(size, r[, start, k, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_poisson2.html) | perform poisson sampling over a rectangle area.
[**pp/pp_poisson3**(size, r[, start, k, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_poisson3.html) | perform poisson sampling over a cube space.
## Maze
Signature | Description
--|--
[**maze/mz_square**([rows, columns, start, init_cells, x_wrapping, y_wrapping, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square.html) | return cell data of a square maze.
[**maze/mz_squarewalls**(cells, cell_width[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_squarewalls.html) | a helper for creating square wall data from maze cells.
[**maze/mz_hexwalls**(cells, cell_radius[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hexwalls.html) | a helper for creating hex wall data from maze cells.
[**maze/mz_theta**(rings, beginning_number[, start, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta.html) | return cell data of a theta maze.
[**maze/mz_tiles**(cells[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_tiles.html) | turn maze cells into tiles.
# v3.2.2
Maintenance release: bug fixes & performance improvements.
# v3.2.1
Maintenance release: bug fixes & performance improvements.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

@@ -1,6 +1,6 @@
# along_with
Puts children along the given path. If there's only one child, it will put the child for each point.
If you want to place objects precisely, their points and angles are required. When you have only points or you don't care their precise angles, `along_with` puts children along the given path. If there's only one child, it will put the child for each point.
## Parameters
@@ -12,8 +12,8 @@ Puts children along the given path. If there's only one child, it will put the c
## Examples
use <along_with.scad>;
use <shape_circle.scad>;
use <along_with.scad>
use <shape_circle.scad>
$fn = 24;
@@ -24,8 +24,8 @@ Puts children along the given path. If there's only one child, it will put the c
![along_with](images/lib3x-along_with-1.JPG)
use <along_with.scad>;
use <shape_circle.scad>;
use <along_with.scad>
use <shape_circle.scad>
$fn = 24;
@@ -44,8 +44,8 @@ Puts children along the given path. If there's only one child, it will put the c
![along_with](images/lib3x-along_with-2.JPG)
use <along_with.scad>;
use <golden_spiral.scad>;
use <along_with.scad>
use <golden_spiral.scad>
pts_angles = golden_spiral(
from = 5,
@@ -63,8 +63,8 @@ Puts children along the given path. If there's only one child, it will put the c
![along_with](images/lib3x-along_with-3.JPG)
use <bezier_curve.scad>;
use <along_with.scad>;
use <bezier_curve.scad>
use <along_with.scad>
module scales() {
module one_scale() {

View File

@@ -11,7 +11,7 @@ Returns the angle between two vectors.
## Examples
use <angle_between.scad>;
use <angle_between.scad>
assert(angle_between([0, 1], [1, 0]) == 90);
assert(angle_between([0, 1, 0], [1, 0, 0]) == 90);

View File

@@ -13,7 +13,7 @@ Creates an arc. You can pass a 2 element vector to define the central angle. Its
## Examples
use <arc.scad>;
use <arc.scad>
$fn = 24;
arc(radius = 20, angle = [45, 290], width = 2);
@@ -21,7 +21,7 @@ Creates an arc. You can pass a 2 element vector to define the central angle. Its
![arc](images/lib3x-arc-1.JPG)
use <arc.scad>;
use <arc.scad>
$fn = 24;
arc(radius = 20, angle = [45, 290], width = 2, width_mode = "LINE_OUTWARD");
@@ -29,7 +29,7 @@ Creates an arc. You can pass a 2 element vector to define the central angle. Its
![arc](images/lib3x-arc-2.JPG)
use <arc.scad>;
use <arc.scad>
$fn = 24;
arc(radius = 20, angle = [45, 290], width = 2, width_mode = "LINE_INWARD");

View File

@@ -11,8 +11,8 @@ Creates an arc path. You can pass a 2 element vector to define the central angle
## Examples
use <arc_path.scad>;
use <polyline_join.scad>;
use <arc_path.scad>
use <polyline_join.scad>
$fn = 24;
points = arc_path(radius = 20, angle = [45, 290]);
@@ -21,8 +21,8 @@ Creates an arc path. You can pass a 2 element vector to define the central angle
![arc_path](images/lib3x-arc_path-1.JPG)
use <arc_path.scad>;
use <polyline_join.scad>;
use <arc_path.scad>
use <polyline_join.scad>
$fn = 24;
points = arc_path(radius = 20, angle = 135);

View File

@@ -16,8 +16,8 @@ An `init_angle` less than 180 degrees is not recommended because the function us
## Examples
use <polyline2d.scad>;
use <archimedean_spiral.scad>;
use <polyline2d.scad>
use <archimedean_spiral.scad>
points_angles = archimedean_spiral(
arm_distance = 10,
@@ -32,7 +32,7 @@ An `init_angle` less than 180 degrees is not recommended because the function us
![archimedean_spiral](images/lib3x-archimedean_spiral-1.JPG)
use <archimedean_spiral.scad>;
use <archimedean_spiral.scad>
points_angles = archimedean_spiral(
arm_distance = 10,
@@ -48,7 +48,7 @@ An `init_angle` less than 180 degrees is not recommended because the function us
![archimedean_spiral](images/lib3x-archimedean_spiral-2.JPG)
use <archimedean_spiral.scad>;
use <archimedean_spiral.scad>
t = "3.141592653589793238462643383279502884197169399375105820974944592307816406286";

View File

@@ -14,7 +14,7 @@ When using this module, you should use points to represent the 2D shape. If your
## Examples
use <archimedean_spiral_extrude.scad>;
use <archimedean_spiral_extrude.scad>
shape_pts = [
[5, 0],

View File

@@ -14,8 +14,8 @@ Creates visually even spacing of n points on the surface of the sphere. Successi
## Examples
use <bauer_spiral.scad>;
use <polyline_join.scad>;
use <bauer_spiral.scad>
use <polyline_join.scad>
n = 200;
radius = 20;

View File

@@ -12,7 +12,7 @@ Bends a 3D object into an arc shape.
The containing cube of the target object should be laid down on the x-y plane. For example.
use <bend.scad>;
use <bend.scad>
x = 9.25;
y = 9.55;
@@ -25,7 +25,7 @@ The containing cube of the target object should be laid down on the x-y plane. F
Once you have the size of the containing cube, you can use it as the `size` argument of the `bend` module.
use <bend.scad>;
use <bend.scad>
x = 9.25;
y = 9.55;
@@ -41,7 +41,7 @@ Once you have the size of the containing cube, you can use it as the `size` argu
The arc shape is smoother if the `frags` value is larger.
use <bend.scad>;
use <bend.scad>
x = 9.25;
y = 9.55;

View File

@@ -25,7 +25,7 @@ The containing square of the target shape should be laid down on the x-y plane.
Once you have the size of the containing square, you can use it as the `size` argument of the `bend_extrude` module.
use <bend_extrude.scad>;
use <bend_extrude.scad>
x = 9.25;
y = 9.55;

View File

@@ -11,8 +11,8 @@ Given a set of control points, the `bezier_curve` function returns points of the
If you have four control points:
use <polyline_join.scad>;
use <bezier_curve.scad>;
use <polyline_join.scad>
use <bezier_curve.scad>
t_step = 0.05;
radius = 2;

View File

@@ -12,8 +12,8 @@ Given a path, the `bezier_smooth` function uses bazier curves to smooth all corn
## Examples
use <polyline_join.scad>;
use <bezier_smooth.scad>;
use <polyline_join.scad>
use <bezier_smooth.scad>
width = 2;
round_d = 15;
@@ -37,7 +37,7 @@ Given a path, the `bezier_smooth` function uses bazier curves to smooth all corn
![bezier_smooth](images/lib3x-bezier_smooth-1.JPG)
use <bezier_smooth.scad>;
use <bezier_smooth.scad>
round_d = 10;

View File

@@ -12,7 +12,7 @@ Move 2D outlines outward or inward by a given amount. Each point of the offsette
## Examples
use <bijection_offset.scad>;
use <bijection_offset.scad>
shape = [
[15, 0],
@@ -32,9 +32,9 @@ Move 2D outlines outward or inward by a given amount. Each point of the offsette
![bijection_offset](images/lib3x-bijection_offset-1.JPG)
use <bijection_offset.scad>;
use <path_extrude.scad>;
use <bezier_curve.scad>;
use <bijection_offset.scad>
use <path_extrude.scad>
use <bezier_curve.scad>
shape = [
[5, 0],

View File

@@ -0,0 +1,28 @@
# binary_search
A general-purpose function to search a value in a sorted list.
**Since:** 3.3
## Parameters
- `sorted` : The sorted list.
- `target` : The target element or a function literal that returns a negative integer, zero, or a positive integer as the element is less than, equal to, or greater than the value you want to search.
- `lo` : Default to 0. The lower bound to be searched.
- `hi` : Default to the end of the list. The higher bound to be searched.
## Examples
use <util/sorted.scad>
use <util/binary_search.scad>
points = [[1, 1], [3, 4], [7, 2], [5, 2]];
lt = sorted(points); // [[1, 1], [3, 4], [5, 2], [7, 2]]
assert(binary_search(lt, [7, 2]) == 3);
xIs5 = function(elem) elem[0] - 5;
assert(binary_search(lt, xIs5) == 2);
yIs4 = function(elem) elem[1] - 4;
assert(binary_search(lt, yIs4) == 1);

View File

@@ -12,14 +12,14 @@ Creates a box (container) from a 2D object.
## Examples
use <box_extrude.scad>;
use <box_extrude.scad>
box_extrude(height = 30, shell_thickness = 2)
circle(r = 30);
![box_extrude](images/lib3x-box_extrude-1.JPG)
use <box_extrude.scad>;
use <box_extrude.scad>
box_extrude(height = 30, shell_thickness = 2)
text("XD", size = 40, font = "Cooper Black");

View File

@@ -11,8 +11,8 @@ The `bsearch` function is a general-purpose function to search a value in a list
## Examples
use <util/sort.scad>;
use <util/bsearch.scad>;
use <util/sort.scad>
use <util/bsearch.scad>
points = [[1, 1], [3, 4], [7, 2], [5, 2]];
sorted = sort(points, by = "vt"); // [[1, 1], [5, 2], [7, 2], [3, 4]]

View File

@@ -14,7 +14,7 @@
## Examples
use <bspline_curve.scad>;
use <bspline_curve.scad>
points = [
[-10, 0],
@@ -37,7 +37,7 @@
![bspline_curve](images/lib3x-bspline_curve-1.JPG)
use <bspline_curve.scad>;
use <bspline_curve.scad>
points = [
[-10, 0],
@@ -62,7 +62,7 @@
![bspline_curve](images/lib3x-bspline_curve-2.JPG)
use <bspline_curve.scad>;
use <bspline_curve.scad>
points = [
[-10, 0],

View File

@@ -11,6 +11,6 @@ Choose an element from the given list randomly.
## Examples
use <util/choose.scad>;
use <util/choose.scad>
echo(choose([1, 2, 3, 4]));

View File

@@ -10,7 +10,7 @@ Sometimes you need all points on the path of a circle. Here's the function. Its
## Examples
use <circle_path.scad>;
use <circle_path.scad>
$fn = 24;

View File

@@ -18,7 +18,7 @@ Create a cone for rotatable models.
## Examples
use <part/cone.scad>;
use <part/cone.scad>
radius = 2.5;
length = 2;
@@ -41,7 +41,7 @@ Create a cone for rotatable models.
![cone](images/lib3x-cone-2.JPG)
use <part/cone.scad>;
use <part/cone.scad>
radius = 2.5;
length = 2;

View File

@@ -17,7 +17,7 @@ Create a connector peg.
## Examples
use <part/connector_peg.scad>;
use <part/connector_peg.scad>
radius = 2.5;
spacing = 0.5;
@@ -37,7 +37,7 @@ Create a connector peg.
![connector_peg](images/lib3x-connector_peg-1.JPG)
use <part/connector_peg.scad>;
use <part/connector_peg.scad>
radius = 2.5;
spacing = 0.5;

19
docs/lib3x-contains.md Normal file
View File

@@ -0,0 +1,19 @@
# contains
If `lt` contains `elem`, this function returns `true`.
**Since:** 3.3
## Parameters
- `lt` : A list of vectors.
- `elem` : A element.
## Examples
use <voxel/vx_circle.scad>
use <util/contains.scad>
pts = vx_circle(10);
assert(contains(pts, [2, -10]));
assert(!contains(pts, [0, 0]));

View File

@@ -11,9 +11,9 @@ Computes contour polygons by applying [marching squares](https://en.wikipedia.or
## Examples
use <polyline_join.scad>;
use <surface/sf_thicken.scad>;
use <contours.scad>;
use <polyline_join.scad>
use <surface/sf_thicken.scad>
use <contours.scad>
min_value = 1;
max_value = 360;

15
docs/lib3x-count.md Normal file
View File

@@ -0,0 +1,15 @@
# count
Returns the number of times `test` return `true` in the list.
**Since:** 3.3
## Parameters
- `lt` : The list.
- `test` : A testing function.
## Examples
points = [[7, 2, 2], [1, 1, 2], [3, 4, 2], [3, 4, 2], [1, 2, 3]];
assert(count(points, function(p) norm(p) > 5) == 3);

View File

@@ -12,9 +12,9 @@ Given a 2D shape, points and angles along the path, this function will return al
## Examples
use <sweep.scad>;
use <cross_sections.scad>;
use <archimedean_spiral.scad>;
use <sweep.scad>
use <cross_sections.scad>
use <archimedean_spiral.scad>
shape_pts = [
[-2, -10],

View File

@@ -14,7 +14,7 @@ Uses spherical coordinate system to create a crystal ball.
## Examples
use <crystal_ball.scad>;
use <crystal_ball.scad>
crystal_ball(radius = 6);

View File

@@ -16,8 +16,8 @@ Draws a curved line from control points. The curve is drawn only from the 2nd co
## Examples
use <curve.scad>;
use <polyline_join.scad>;
use <curve.scad>
use <polyline_join.scad>
pts = [
[28, 2, 1],

View File

@@ -13,6 +13,8 @@ Eliminating duplicate copies of repeating vectors.
## Examples
use <util/dedup.scad>
eq = function(e1, e2) e1[0] == e2[0] && e1[1] == e2[1] && e1[2] == e2[2];
points = [[1, 1, 2], [3, 4, 2], [7, 2, 2], [3, 4, 2], [1, 2, 3]];

View File

@@ -10,6 +10,6 @@ Converts a radian measurement to the corresponding value in degrees.
## Examples
use <util/degrees.scad>;
use <util/degrees.scad>
assert(degrees(PI) == 180);

View File

@@ -10,7 +10,7 @@ Extrudes a 2D object along the path of an ellipse from 0 to 180 degrees. The sem
## Examples
use <ellipse_extrude.scad>;
use <ellipse_extrude.scad>
semi_minor_axis = 5;
@@ -19,7 +19,7 @@ Extrudes a 2D object along the path of an ellipse from 0 to 180 degrees. The sem
![ellipse_extrude](images/lib3x-ellipse_extrude-1.JPG)
use <ellipse_extrude.scad>;
use <ellipse_extrude.scad>
semi_minor_axis = 5;
@@ -28,7 +28,7 @@ Extrudes a 2D object along the path of an ellipse from 0 to 180 degrees. The sem
![ellipse_extrude](images/lib3x-ellipse_extrude-2.JPG)
use <ellipse_extrude.scad>;
use <ellipse_extrude.scad>
semi_minor_axis = 5;
@@ -41,7 +41,7 @@ Extrudes a 2D object along the path of an ellipse from 0 to 180 degrees. The sem
![ellipse_extrude](images/lib3x-ellipse_extrude-3.JPG)
use <ellipse_extrude.scad>;
use <ellipse_extrude.scad>
semi_minor_axis = 10;

View File

@@ -11,7 +11,7 @@ The `every` function tests whether all elements in the list pass the test implem
## Examples
use <util/every.scad>;
use <util/every.scad>
biggerThanZero = function(elem) elem > 0;
assert(every([1, 30, 39, 29, 10, 13], biggerThanZero));

View File

@@ -1,6 +1,6 @@
# fibonacci_lattice
Creates visually even spacing of n points on the surface of the sphere. Nearest-neighbor points will all be approximately the same distance apart. There're 8 spirals on the sphere.
Creates visually even spacing of n points on the surface of the sphere. Nearest-neighbor points will all be approximately the same distance apart.
(It's called "visually even spacing" because only the vertices of the 5 [Platonic solids](https://en.wikipedia.org/wiki/Platonic_solid) can be said to be truly evenly spaced around the surface of a sphere.)
@@ -14,7 +14,7 @@ Creates visually even spacing of n points on the surface of the sphere. Nearest-
## Examples
use <fibonacci_lattice.scad>;
use <fibonacci_lattice.scad>
n = 200;
radius = 20;
@@ -29,9 +29,9 @@ Creates visually even spacing of n points on the surface of the sphere. Nearest-
![fibonacci_lattice](images/lib3x-fibonacci_lattice-1.JPG)
use <fibonacci_lattice.scad>;
use <polyline_join.scad>;
use <fibonacci_lattice.scad>
use <polyline_join.scad>
n = 200;
radius = 20;
@@ -41,16 +41,18 @@ Creates visually even spacing of n points on the surface of the sphere. Nearest-
translate(p)
sphere(1);
}
sphere(radius);
spirals = [for(j = [0:7])
[for(i = j; i < len(pts); i = i + 8) pts[i]]
sphere(radius * 0.9);
// You can pick spirals from points.
spirals = [for(j = [0:20])
[for(i = j; i < len(pts); i = i + 21) pts[i]]
];
for(spiral = spirals) {
polyline_join(spiral)
sphere(.5);
sphere(.25);
}
![fibonacci_lattice](images/lib3x-fibonacci_lattice-2.JPG)

View File

@@ -11,6 +11,6 @@ Generate a Fibonacci sequence.
## Examples
use <util/fibseq.scad>;
use <util/fibseq.scad>
echo(fibseq(1, 10)); // ECHO: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

View File

@@ -11,6 +11,6 @@ Returns the index of the first element in the list that satisfies the testing fu
## Examples
use <util/find_index.scad>;
use <util/find_index.scad>
assert(find_index([10, 20, 30, 40], function(e) e > 10) == 1);

View File

@@ -11,7 +11,7 @@ returns a new list with all sub-list elements concatenated into it recursively u
## Examples
use <util/flat.scad>;
use <util/flat.scad>
vt = [[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]];

View File

@@ -11,8 +11,8 @@ Drive a turtle with `["forward", length]` or `["turn", angle]`. This function is
## Examples
use <polyline_join.scad>;
use <turtle/footprints2.scad>;
use <polyline_join.scad>
use <turtle/footprints2.scad>
function arc_cmds(radius, angle, steps) =
let(

View File

@@ -11,8 +11,8 @@ A 3D verion of [footprint2](https://openhome.cc/eGossip/OpenSCAD/lib3x-footprint
## Examples
use <polyline_join.scad>;
use <turtle/footprints3.scad>;
use <polyline_join.scad>
use <turtle/footprints3.scad>
function xy_arc_cmds(radius, angle, steps) =
let(

View File

@@ -13,7 +13,7 @@ It returns a vector of `[[x, y], angle]`.
## Examples
use <golden_spiral.scad>;
use <golden_spiral.scad>
pts_angles = golden_spiral(
from = 3,
@@ -28,7 +28,7 @@ It returns a vector of `[[x, y], angle]`.
![golden_spiral](images/lib3x-golden_spiral-1.JPG)
use <golden_spiral.scad>;
use <golden_spiral.scad>
pts_angles = golden_spiral(
from = 5,

View File

@@ -17,7 +17,7 @@ When using this module, you should use points to represent the 2D shape. If your
## Examples
use <golden_spiral_extrude.scad>;
use <golden_spiral_extrude.scad>
shape_pts = [
[2, -10],
@@ -38,8 +38,8 @@ When using this module, you should use points to represent the 2D shape. If your
![golden_spiral_extrude](images/lib3x-golden_spiral_extrude-1.JPG)
use <shape_circle.scad>;
use <golden_spiral_extrude.scad>;
use <shape_circle.scad>
use <golden_spiral_extrude.scad>
$fn = 12;

View File

@@ -12,9 +12,9 @@ If `lt` contains `elem`, this function returns `true`. If you want to test eleme
## Examples
use <voxel/vx_circle.scad>;
use <util/sort.scad>;
use <util/has.scad>;
use <voxel/vx_circle.scad>
use <util/sort.scad>
use <util/has.scad>
pts = vx_circle(10);
assert(has(pts, [2, -10]));

View File

@@ -21,14 +21,14 @@ This function maps keys to values. You can use the following to process the retu
## Examples
use <util/map/hashmap.scad>;
use <util/map/hashmap_len.scad>;
use <util/map/hashmap_put.scad>;
use <util/map/hashmap_get.scad>;
use <util/map/hashmap_del.scad>;
use <util/map/hashmap_keys.scad>;
use <util/map/hashmap_values.scad>;
use <util/map/hashmap_entries.scad>;
use <util/map/hashmap.scad>
use <util/map/hashmap_len.scad>
use <util/map/hashmap_put.scad>
use <util/map/hashmap_get.scad>
use <util/map/hashmap_del.scad>
use <util/map/hashmap_keys.scad>
use <util/map/hashmap_values.scad>
use <util/map/hashmap_entries.scad>
m1 = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
assert(hashmap_len(m1) == 3);
@@ -45,8 +45,8 @@ This function maps keys to values. You can use the following to process the retu
Want to simulate class-based OO in OpenSCAD? Here's my experiment.
use <util/map/hashmap.scad>;
use <util/map/hashmap_get.scad>;
use <util/map/hashmap.scad>
use <util/map/hashmap_get.scad>
function methods(mths) = hashmap(mths);
function _(name, instance) = hashmap_get(instance, name);

View File

@@ -13,9 +13,9 @@ This function deletes the mapping for the specified key from a [util/map/hashmap
## Examples
use <util/map/hashmap.scad>;
use <util/map/hashmap_get.scad>;
use <util/map/hashmap_del.scad>;
use <util/map/hashmap.scad>
use <util/map/hashmap_get.scad>
use <util/map/hashmap_del.scad>
m1 = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
m2 = hashmap_del(m1, "k1");

View File

@@ -10,8 +10,8 @@ Returns a list containing all `[key, value]`s in a [util/map/hashmap](https://op
## Examples
use <util/map/hashmap.scad>;
use <util/map/hashmap_entries.scad>;
use <util/map/hashmap.scad>
use <util/map/hashmap_entries.scad>
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
echo(hashmap_entries(m)); // a list contains ["k1", 10], ["k2", 20], ["k3", 30]

View File

@@ -13,8 +13,8 @@ This function gets the value of the specified key from a [util/map/hashmap](http
## Examples
use <util/map/hashmap.scad>;
use <util/map/hashmap_get.scad>;
use <util/map/hashmap.scad>
use <util/map/hashmap_get.scad>
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
assert(hashmap_get(m, "k2") == 20);

View File

@@ -10,8 +10,8 @@ Returns a list containing all keys in a [util/map/hashmap](https://openhome.cc/e
## Examples
use <util/map/hashmap.scad>;
use <util/map/hashmap_keys.scad>;
use <util/map/hashmap.scad>
use <util/map/hashmap_keys.scad>
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);

View File

@@ -10,8 +10,8 @@ Returns the length of a [util/map/hashmap](https://openhome.cc/eGossip/OpenSCAD/
## Examples
use <util/map/hashmap.scad>;
use <util/map/hashmap_len.scad>;
use <util/map/hashmap.scad>
use <util/map/hashmap_len.scad>
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
assert(hashmap_len(m) == 3);

View File

@@ -14,9 +14,9 @@ Puts a key/value pair to a [util/map/hashmap](https://openhome.cc/eGossip/OpenSC
## Examples
use <util/map/hashmap.scad>;
use <util/map/hashmap_put.scad>;
use <util/map/hashmap_get.scad>;
use <util/map/hashmap.scad>
use <util/map/hashmap_put.scad>
use <util/map/hashmap_get.scad>
m1 = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);

View File

@@ -10,8 +10,8 @@ Returns a list containing all values in a [util/map/hashmap](https://openhome.cc
## Examples
use <util/map/hashmap.scad>;
use <util/map/hashmap_values.scad>;
use <util/map/hashmap.scad>
use <util/map/hashmap_values.scad>
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);

View File

@@ -19,12 +19,12 @@ This function models the mathematical set, backed by a hash table. You can use t
## Examples
use <util/set/hashset.scad>;
use <util/set/hashset_add.scad>;
use <util/set/hashset_has.scad>;
use <util/set/hashset_del.scad>;
use <util/set/hashset_len.scad>;
use <util/set/hashset_elems.scad>;
use <util/set/hashset.scad>
use <util/set/hashset_add.scad>
use <util/set/hashset_has.scad>
use <util/set/hashset_del.scad>
use <util/set/hashset_len.scad>
use <util/set/hashset_elems.scad>
s1 = hashset([1, 2, 3, 4, 5, 2, 3, 5]);
assert(hashset_len(s1) == 5);

View File

@@ -13,9 +13,9 @@ This function adds an element to a [util/set/hashset](https://openhome.cc/eGossi
## Examples
use <util/set/hashset.scad>;
use <util/set/hashset_add.scad>;
use <util/set/hashset_has.scad>;
use <util/set/hashset.scad>
use <util/set/hashset_add.scad>
use <util/set/hashset_has.scad>
s1 = hashset([1, 2, 3, 4, 5]);
s2 = hashset_add(s1, 9);

View File

@@ -13,9 +13,9 @@ This function dels an element from a [util/set/hashset](https://openhome.cc/eGos
## Examples
use <util/set/hashset.scad>;
use <util/set/hashset_del.scad>;
use <util/set/hashset_has.scad>;
use <util/set/hashset.scad>
use <util/set/hashset_del.scad>
use <util/set/hashset_has.scad>
s1 = hashset([1, 2, 3, 4, 5]);
s2 = hashset_del(s1, 3);

View File

@@ -10,8 +10,8 @@ Returns a list containing all elements in a [util/set/hashset](https://openhome.
## Examples
use <util/set/hashset.scad>;
use <util/set/hashset_elems.scad>;
use <util/set/hashset.scad>
use <util/set/hashset_elems.scad>
s = hashset([1, 2, 3, 4, 5]);
assert(hashset_elems(s) == [1, 2, 3, 4, 5]);

View File

@@ -13,8 +13,8 @@ Returns `true` if a [util/set/hashset](https://openhome.cc/eGossip/OpenSCAD/lib3
## Examples
use <util/set/hashset.scad>;
use <util/set/hashset_has.scad>;
use <util/set/hashset.scad>
use <util/set/hashset_has.scad>
s = hashset([1, 2, 3, 4, 5]);
assert(hashset_has(s, 3));

View File

@@ -10,8 +10,8 @@ Returns the length of the elements in a [util/set/hashset](https://openhome.cc/e
## Examples
use <util/set/hashset.scad>;
use <util/set/hashset_len.scad>;
use <util/set/hashset.scad>
use <util/set/hashset_len.scad>
s = hashset([1, 2, 3, 4, 5]);
assert(hashset_len(s) == 5);

View File

@@ -13,8 +13,8 @@ Gets all points on the path of a spiral around a cylinder. Its `$fa`, `$fs` and
## Examples
use <helix.scad>;
use <polyline_join.scad>;
use <helix.scad>
use <polyline_join.scad>
$fn = 12;
@@ -36,8 +36,8 @@ Gets all points on the path of a spiral around a cylinder. Its `$fa`, `$fs` and
![helix](images/lib3x-helix-1.JPG)
use <helix.scad>;
use <polyline_join.scad>;
use <helix.scad>
use <polyline_join.scad>
$fn = 12;

View File

@@ -21,7 +21,7 @@ Its `$fa`, `$fs` and `$fn` parameters are consistent with the `cylinder` module.
## Examples
use <helix_extrude.scad>;
use <helix_extrude.scad>
shape_pts = [
[5, -2],
@@ -43,7 +43,7 @@ Its `$fa`, `$fs` and `$fn` parameters are consistent with the `cylinder` module.
![helix_extrude](images/lib3x-helix_extrude-1.JPG)
use <helix_extrude.scad>;
use <helix_extrude.scad>
r1 = 40;
r2 = 20;

View File

@@ -10,7 +10,7 @@ This module creates hexagons in a hexagon.
## Examples
use <hexagons.scad>;
use <hexagons.scad>
radius = 20;
spacing = 2;
@@ -20,7 +20,7 @@ This module creates hexagons in a hexagon.
![hexagons](images/lib3x-hexagons-1.JPG)
use <hexagons.scad>;
use <hexagons.scad>
radius = 20;
spacing = 2;

View File

@@ -8,7 +8,7 @@ Hollows out a 2D object.
## Examples
use <hollow_out.scad>;
use <hollow_out.scad>
hollow_out(shell_thickness = 1)
circle(r = 3, $fn = 48);

View File

@@ -12,7 +12,7 @@ Checks whether a point is on a line.
## Examples
use <in_polyline.scad>;
use <in_polyline.scad>
pts = [
[0, 0],
@@ -27,7 +27,7 @@ Checks whether a point is on a line.
----
use <in_polyline.scad>;
use <in_polyline.scad>
pts = [
[10, 0, 10],

View File

@@ -13,8 +13,8 @@ Checks whether a point is inside a shape.
## Examples
use <shape_taiwan.scad>;
use <in_shape.scad>;
use <shape_taiwan.scad>
use <in_shape.scad>
points = shape_taiwan(30);

View File

@@ -17,7 +17,7 @@ Create a joint_T for rotatable models.
## Examples
use <part/joint_T.scad>;
use <part/joint_T.scad>
$fn = 48;

View File

@@ -12,6 +12,6 @@ Linear interpolate the vector v1 to v2.
## Examples
use <util/lerp.scad>;
use <util/lerp.scad>
assert(lerp([0, 0, 0], [100, 100, 100], 0.5) == [50, 50, 50]);

View File

@@ -13,7 +13,7 @@ Creates a line from two points. When the end points are `CAP_ROUND`, you can use
## Examples
use <line2d.scad>;
use <line2d.scad>
$fn = 24;

View File

@@ -13,7 +13,7 @@ Creates a 3D line from two points.
## Examples
use <line3d.scad>;
use <line3d.scad>
line3d(
p1 = [0, 0, 0],
@@ -24,7 +24,7 @@ Creates a 3D line from two points.
![line3d](images/lib3x-line3d-1.JPG)
use <line3d.scad>;
use <line3d.scad>
line3d(
p1 = [0, 0, 0],
@@ -37,7 +37,7 @@ Creates a 3D line from two points.
![line3d](images/lib3x-line3d-2.JPG)
use <line3d.scad>;
use <line3d.scad>
line3d(
p1 = [0, 0, 0],

View File

@@ -13,7 +13,7 @@ Find the intersection of two line segments. Return `[]` if lines don't intersect
## Examples
use <lines_intersection.scad>;
use <lines_intersection.scad>
line1 = [[0, 0], [0, 10]];
line2 = [[5, 0], [-5, 5]];

View File

@@ -11,10 +11,10 @@ When having uniform cross sections, you can use [sweep](https://openhome.cc/eGos
## Examples
use <shape_star.scad>;
use <shape_circle.scad>;
use <ptf/ptf_rotate.scad>;
use <loft.scad>;
use <shape_star.scad>
use <shape_circle.scad>
use <ptf/ptf_rotate.scad>
use <loft.scad>
sects = [
for(i = 10; i >= 4; i = i - 1)

View File

@@ -23,13 +23,14 @@
- `start` : The starting point of the turtle. Default to `[0, 0]`.
- `forward_chars` : Chars used for forwarding after the last iteration. Default to `'F'`.
- `rule_prs` : The probabilities for taking rules. If each rule is chosen with a certain probability, it's a stochastic L-system. Each probability value for a rule ranges from 0 to 1.
- `seed` : Optional. Seed value for random number generator for repeatable results. **Since:** 3.3.
## Examples
[lsystem2-collections.scad](https://github.com/JustinSDK/dotSCAD/blob/master/examples/turtle/lsystem2_collection.scad) collects several L-system grammars. Here's one of them.
use <turtle/lsystem2.scad>;
use <line2d.scad>;
use <turtle/lsystem2.scad>
use <line2d.scad>
for(line = fern()) {
line2d(
@@ -56,8 +57,8 @@
// a stochastic L-system
use <turtle/lsystem2.scad>;
use <line2d.scad>;
use <turtle/lsystem2.scad>
use <line2d.scad>
for(line = weed()) {
line2d(

View File

@@ -27,13 +27,14 @@
- `start` : The starting point of the turtle. Default to `[0, 0]`.
- `forward_chars` : Chars used for forwarding after the last iteration. Default to `'F'`.
- `rule_prs` : The probabilities for taking rules. If each rule is chosen with a certain probability, it's a stochastic L-system. Each probability value for a rule ranges from 0 to 1.
- `seed` : Optional. Seed value for random number generator for repeatable results. **Since:** 3.3.
## Examples
[lsystem3-collections.scad](https://github.com/JustinSDK/dotSCAD/blob/master/examples/turtle/lsystem3_collection.scad) collects several L-system grammars. Here's one of them.
use <turtle/lsystem3.scad>;
use <polyline_join.scad>;
use <turtle/lsystem3.scad>
use <polyline_join.scad>
for(line = hilbert_curve()) {
polyline_join([line[0], line[1]])
@@ -56,8 +57,8 @@
// a stochastic L-system
use <turtle/lsystem3.scad>;
use <polyline_join.scad>;
use <turtle/lsystem3.scad>
use <polyline_join.scad>
for(line = vine()) {
polyline_join([line[0], line[1]])

View File

@@ -10,7 +10,7 @@ It can calculate a determinant, a special number that can be calculated from a s
## Examples
use <matrix/m_determinant.scad>;
use <matrix/m_determinant.scad>
assert(
m_determinant([

View File

@@ -10,7 +10,7 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to mirror
## Examples
use <matrix/m_mirror.scad>;
use <matrix/m_mirror.scad>
rotate([0, 0, 10])
cube([3, 2, 1]);

32
docs/lib3x-m_replace.md Normal file
View File

@@ -0,0 +1,32 @@
# m_replace
It replaces the aᵢⱼ element of a matrix.
**Since:** 3.3
## Parameters
- `m` : A matrix.
- `i` : The i-th row.
- `j` : The j-th column.
- `value` : The new value.
## Examples
use <matrix/m_replace.scad>
original_m = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
];
expected = [
[1, 2, 3, 4],
[5, 6, 70, 8],
[9, 10, 11, 12]
];
actual = m_replace(original_m, 1, 2, 70);
assert(actual == expected);

View File

@@ -11,7 +11,7 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to rotate
## Examples
use <matrix/m_rotation.scad>;
use <matrix/m_rotation.scad>
point = [20, 0, 0];
a = [0, -45, 45];
@@ -25,7 +25,7 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to rotate
![m_rotation](images/lib3x-m_rotation-1.JPG)
use <matrix/m_rotation.scad>;
use <matrix/m_rotation.scad>
v = [10, 10, 10];

View File

@@ -10,7 +10,7 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to scale i
## Examples
use <matrix/m_scaling.scad>;
use <matrix/m_scaling.scad>
cube(10);
translate([15, 0, 0])

View File

@@ -12,7 +12,7 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to shear a
## Examples
use <matrix/m_shearing.scad>;
use <matrix/m_shearing.scad>
color("red") {
multmatrix(m_shearing(sx = [1, 0]))

View File

@@ -10,7 +10,7 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to transla
## Examples
use <matrix/m_translation.scad>;
use <matrix/m_translation.scad>
cube(2, center = true);
multmatrix(m_translation([5, 0, 0]))

View File

@@ -10,7 +10,7 @@ It transposes a matrix.
## Examples
use <matrix/m_transpose.scad>;
use <matrix/m_transpose.scad>
original_m = [
[1, 2, 3, 4],

View File

@@ -12,9 +12,9 @@ Given a 2D path, this function constructs a mid-point smoothed version by joinin
## Examples
use <polyline_join.scad>;
use <shape_taiwan.scad>;
use <midpt_smooth.scad>;
use <polyline_join.scad>
use <shape_taiwan.scad>
use <midpt_smooth.scad>
taiwan = shape_taiwan(50);
smoothed = midpt_smooth(taiwan, 20, true);

View File

@@ -9,7 +9,7 @@ Creates multi-line text from a list of strings. Parameters are the same as the b
## Examples
use <multi_line_text.scad>;
use <multi_line_text.scad>
multi_line_text(
["Welcome", "to", "Taiwan"],

View File

@@ -9,12 +9,13 @@ Creates a hamiltonian path from a maze. The path is the result of maze traversal
- `rows` : The rows of a maze.
- `columns` : The columns of a maze.
- `start` : The start point to travel the maze. Default to `[0, 0]`.
- `init_cells` : You can define your own initial cell data, a 2-dimension list of `[x, y, type, visited]`. `visited` means the cell is visited or not. A visited cell won't be visited when traveling the maze. If you don't provide `init_cells`, `mz_square` will generate one automatically. If you provide `init_cells`, `rows` and `columns` will be ignored. **Since:** 3.3
- `seed` : The maze is traveling randomly. Use `seed` to initialize the pseudorandom number generator.
## Examples
use <maze/mz_hamiltonian.scad>;
use <polyline_join.scad>;
use <maze/mz_hamiltonian.scad>
use <polyline_join.scad>
rows = 5;
columns = 10;

View File

@@ -15,9 +15,9 @@ It's a helper for creating wall data from maze cells. You can transform wall poi
## Examples
use <maze/mz_square_cells.scad>;
use <maze/mz_hex_walls.scad>;
use <polyline_join.scad>;
use <maze/mz_square_cells.scad>
use <maze/mz_hex_walls.scad>
use <polyline_join.scad>
rows = 10;
columns = 12;

33
docs/lib3x-mz_hexwalls.md Normal file
View File

@@ -0,0 +1,33 @@
# mz_hexwalls
It's a helper for creating wall data from maze cells. You can transform wall points for creating different types of mazes.
**Since:** 3.3
## Parameters
- `cells` : Maze cells.
- `cell_radius` : The radius of a cell.
- `left_border` : Default to `true`. Create the leftmost border of the maze.
- `bottom_border` : Default to `true`. Create the bottommost border of the maze.
## Examples
use <maze/mz_square.scad>
use <maze/mz_hexwalls.scad>
use <polyline_join.scad>
rows = 10;
columns = 12;
cell_width = 5;
wall_thickness = 2;
cells = mz_square(rows, columns);
walls = mz_hexwalls(cells, cell_width);
for(wall = walls) {
polyline_join(wall)
circle(wall_thickness, $fn = 24);
}
![mz_hexwalls](images/lib3x-mz_hexwalls-1.JPG)

61
docs/lib3x-mz_square.md Normal file
View File

@@ -0,0 +1,61 @@
# mz_square
This function returns cell data of a square maze. The data is a 2-dimension list of cells. A cell has the data structure `[x, y, type]`. `x` and `y` are 0-based. `x` means the x-th column and `y` means y-th row for a cell. The value of `type` can be `0`, `1`, `2`, `3` or `4`. Setting them to constants is convenient.
NO_WALL = 0; // the cell has no wall
TOP_WALL = 1; // the cell has a top wall
RIGHT_WALL = 2; // the cell has a right wall
TOP_RIGHT_WALL = 3; // the cell has a top wall and a right wall
MASK = 4; // the cell is masked.
The cell data is seperated from views. You can use cell data to construct [different types of mazes](https://www.thingiverse.com/justinsdk/collections/maze-generator).
**Since:** 3.3
## Parameters
- `rows` : The number of rows.
- `columns` : The number of columns.
- `start` : The start point to travel the maze. Default to `[0, 0]`.
- `init_cells` : You can define your own initial cell data, a 2-dimension list of `[x, y, type, visited]`. `visited` means the cell is visited or not. A visited cell won't be visited when traveling the maze. If you don't provide `init_cells`, `mz_square` will generate one automatically. If you provide `init_cells`, `rows` and `columns` will be ignored.
- `x_wrapping` : Default to `false`. If you want to wrap the maze in the x direction, set it to `true`. The last column of cells will be adjacent to the first column of cells.
- `y_wrapping` : Default to `false`. If you want to wrap the maze in the y direction, set it to `true`. The last row of cells will be adjacent to the first row of cells.
- `seed` : The maze is traveling randomly. Use `seed` to initialize the pseudorandom number generator.
## Examples
use <maze/mz_square.scad>
use <line2d.scad>
rows = 10;
columns = 10;
cell_width = 5;
wall_thickness = 2;
NO_WALL = 0;
TOP_WALL = 1;
RIGHT_WALL = 2;
TOP_RIGHT_WALL = 3;
MASK = 4;
cells = mz_square(rows, columns);
for(row = cells, cell = row) {
type = cell[2];
translate([cell.x, cell.y] * cell_width) {
if(type == TOP_WALL || type == TOP_RIGHT_WALL) {
line2d([0, cell_width], [cell_width, cell_width], wall_thickness);
}
if(type == RIGHT_WALL || type == TOP_RIGHT_WALL) {
line2d([cell_width, cell_width], [cell_width, 0], wall_thickness);
}
}
}
line2d([0, 0], [cell_width * columns, 0], wall_thickness);
line2d([0, 0], [0, cell_width * rows], wall_thickness);
![mz_square](images/lib3x-mz_square-1.JPG)

Some files were not shown because too many files have changed in this diff Show More