1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-09-18 02:22:18 +02:00

951 Commits
v3.0 ... v3.2.1

Author SHA1 Message Date
Justin Lin
3bb2111e2f ship 3.2.1 2022-04-06 17:50:07 +08:00
Justin Lin
d0474ed757 update doc 2022-04-06 17:44:11 +08:00
Justin Lin
adf07c5da8 format 2022-04-06 17:02:32 +08:00
Justin Lin
0b23e5666a Szudzik function 2022-04-06 15:56:28 +08:00
Justin Lin
f5c4320d5e Szudzik's function 2022-04-06 15:40:41 +08:00
Justin Lin
eeaa9b3b2f Horner's method 2022-04-06 14:27:57 +08:00
Justin Lin
029ddc4150 format 2022-04-06 12:11:38 +08:00
Justin Lin
c810e30003 refactor: rows, columns is not necessary 2022-04-05 22:44:44 +08:00
Justin Lin
1225d4bf47 rename 2022-04-05 22:42:38 +08:00
Justin Lin
aec1ec38d1 add maze_city_taiwan 2022-04-05 18:30:02 +08:00
Justin Lin
b9e77be7e7 move 2022-04-05 18:10:12 +08:00
Justin Lin
0468ecae77 format 2022-04-05 18:08:40 +08:00
Justin Lin
57ec3f46ef del 2022-04-05 11:52:37 +08:00
Justin Lin
84301af250 use rands_sphere 2022-04-05 11:52:35 +08:00
Justin Lin
617139d720 update note 2022-04-05 11:45:36 +08:00
Justin Lin
3d7c2c6f85 move 2022-04-05 11:44:16 +08:00
Justin Lin
21d5638e94 add rands_sphere, rands_disk 2022-04-05 11:40:16 +08:00
Justin Lin
25b61d8ded return [] if no intersection 2022-04-05 11:37:43 +08:00
Justin Lin
6d4f7661ec update example 2022-04-04 21:38:36 +08:00
Justin Lin
c981127471 remove sort 2022-04-04 21:38:07 +08:00
Justin Lin
7c40e28e64 det == 0 is never error 2022-04-04 21:27:11 +08:00
Justin Lin
38ce75b708 reverse if necessary 2022-04-04 21:00:06 +08:00
Justin Lin
d2a936a5a3 don't sort 2022-04-04 20:47:48 +08:00
Justin Lin
c3425143c3 refactor/format 2022-04-04 18:58:32 +08:00
Justin Lin
556fd1ed28 update doc 2022-04-04 16:39:28 +08:00
Justin Lin
7421fa97c4 update doc 2022-04-04 16:37:37 +08:00
Justin Lin
d90b0c20fc update doc 2022-04-04 16:31:44 +08:00
Justin Lin
438e9cfd93 refactor: extract lines 2022-04-04 15:35:21 +08:00
Justin Lin
f76fd33054 format 2022-04-04 14:36:41 +08:00
Justin Lin
820cf7de83 format 2022-04-04 10:58:08 +08:00
Justin Lin
a3b9e42098 use vector sub 2022-04-04 10:57:55 +08:00
Justin Lin
b3289dd55b use vector substractiokn 2022-04-04 10:55:36 +08:00
Justin Lin
659654f533 update doc 2022-04-04 10:41:56 +08:00
Justin Lin
770adea91f fix doc error 2022-04-04 10:40:58 +08:00
Justin Lin
dcacb8a267 refactor: extract dist cond 2022-04-03 14:30:25 +08:00
Justin Lin
047731d7d6 refactor: extract dist cond 2022-04-03 14:22:59 +08:00
Justin Lin
8ce96f9128 format 2022-04-03 14:16:17 +08:00
Justin Lin
fb4a626707 format 2022-04-03 13:08:42 +08:00
Justin Lin
336648434c format 2022-04-03 11:58:46 +08:00
Justin Lin
b8e52677b3 refactor: cal px, py directly 2022-04-01 22:15:24 +08:00
Justin Lin
4e0078f25c change params 2022-04-01 17:11:29 +08:00
Justin Lin
356966b8f6 format 2022-04-01 13:58:01 +08:00
Justin Lin
bb9c630e20 format 2022-04-01 13:50:17 +08:00
Justin Lin
98f9d8ea57 format 2022-04-01 13:44:49 +08:00
Justin Lin
197c542c5e del echo 2022-04-01 13:40:39 +08:00
Justin Lin
e900aefcce merge scale 2022-04-01 13:38:50 +08:00
Justin Lin
2a461a62b0 merge z 2022-04-01 13:34:43 +08:00
Justin Lin
2601d8425c format 2022-04-01 13:32:26 +08:00
Justin Lin
a0d07ea78f fix module name 2022-04-01 13:30:15 +08:00
Justin Lin
3a4b1224e6 refactor: use each 2022-04-01 13:27:56 +08:00
Justin Lin
48315257b1 format 2022-04-01 13:25:32 +08:00
Justin Lin
62e129614f refactor: when leng 2, swap if necessary 2022-04-01 12:52:57 +08:00
Justin Lin
1fb61fc3ec refactor: use built-in search 2022-04-01 09:52:32 +08:00
Justin Lin
7889c5608f refactor: use search if eq undef 2022-04-01 09:07:41 +08:00
Justin Lin
d16d419463 roll back 2022-04-01 08:56:40 +08:00
Justin Lin
d4c4a78d98 fix param name error 2022-04-01 08:18:14 +08:00
Justin Lin
fafd073840 find_index: test support elem 2022-04-01 08:15:45 +08:00
Justin Lin
f8f91df05a add comment 2022-03-31 20:25:52 +08:00
Justin Lin
896e0bbd2e support $fn 2022-03-31 20:24:52 +08:00
Justin Lin
d4fc1279dd fix type error 2022-03-31 16:51:02 +08:00
Justin Lin
8715bcc927 add maze3d 2022-03-31 10:20:29 +08:00
Justin Lin
3a5cd29732 refactor: built-in search 2022-03-31 08:21:34 +08:00
Justin Lin
d5d809c70d refactor: built-in search 2022-03-31 07:44:05 +08:00
Justin Lin
aa082712df format 2022-03-30 21:44:37 +08:00
Justin Lin
da03b782ed refactor: merge for 2022-03-30 21:44:14 +08:00
Justin Lin
280332fb8f refactor: use norm 2022-03-30 21:40:58 +08:00
Justin Lin
aa0c8e1cd7 refactor: use dv 2022-03-30 21:34:01 +08:00
Justin Lin
0af33f4008 use m_transpose 2022-03-30 21:29:40 +08:00
Justin Lin
a65a8e60cb fix syntax error 2022-03-30 21:28:58 +08:00
Justin Lin
950e929edb refactor: the same as m_transpose 2022-03-30 21:24:23 +08:00
Justin Lin
032db93442 fix missing variable 2022-03-30 21:22:51 +08:00
Justin Lin
0e3a4d4ccd refactor: reuse p 2022-03-30 21:15:21 +08:00
Justin Lin
379b0c3614 refactor: use slice 2022-03-30 21:11:59 +08:00
Justin Lin
76afd424e3 refactor: use find_index 2022-03-30 20:50:36 +08:00
Justin Lin
1188fe9bcc format 2022-03-30 17:26:55 +08:00
Justin Lin
8e5255fdc9 refactor: naming value 2022-03-30 17:02:17 +08:00
Justin Lin
9f189e1124 refactor: format 2022-03-30 16:58:54 +08:00
Justin Lin
22ec55cfac refactor: look_at or not 2022-03-30 14:37:00 +08:00
Justin Lin
ba5b184d16 format 2022-03-30 09:39:11 +08:00
Justin Lin
3e1044787f add convexity 2022-03-30 09:36:02 +08:00
Justin Lin
96c9cfc0c4 fix rotation bug 2022-03-30 09:17:27 +08:00
Justin Lin
af87c89ecc refactor: start from unit sphere 2022-03-28 17:11:52 +08:00
Justin Lin
1c893c3fc7 update note 2022-03-28 17:00:14 +08:00
Justin Lin
0430baeaa9 refactor: start from unit sphere 2022-03-28 16:58:14 +08:00
Justin Lin
cd2b3bf379 redefine period 2022-03-28 16:45:58 +08:00
Justin Lin
91dff32e23 update doc 2022-03-28 15:39:58 +08:00
Justin Lin
da2ba88798 add mz_cube 2022-03-28 11:39:55 +08:00
Justin Lin
aa60b6f570 change seed 2022-03-28 10:08:49 +08:00
Justin Lin
c1d191dc97 update note 2022-03-27 12:24:54 +08:00
Justin Lin
9f3ecd0b3c refactor: use new maze functions/modules 2022-03-27 12:24:34 +08:00
Justin Lin
15478290e1 rename 2022-03-27 12:13:28 +08:00
Justin Lin
4c68946b3f refactor: use mz_square 2022-03-27 12:04:53 +08:00
Justin Lin
a1a306995f refactor: two dim cells 2022-03-27 11:59:00 +08:00
Justin Lin
53ac475bbf add mz_theta 2022-03-27 11:52:23 +08:00
Justin Lin
5f329649b6 refactor: two dim cells 2022-03-27 11:51:36 +08:00
Justin Lin
1072876ac7 refactor: two dim cells 2022-03-27 11:49:03 +08:00
Justin Lin
a5408736e5 refactor: two dim maze 2022-03-27 11:39:52 +08:00
Justin Lin
f34bfe1d90 refactor: clean code 2022-03-27 11:36:09 +08:00
Justin Lin
3f7478710f add mz_square 2022-03-27 11:34:18 +08:00
Justin Lin
5595170b09 update comment 2022-03-26 16:36:00 +08:00
Justin Lin
fdf879dbae refactor: reuse dir_vs 2022-03-25 15:53:20 +08:00
Justin Lin
a4e8194938 refactor: del search 2022-03-25 15:21:40 +08:00
Justin Lin
193ff6f531 refactor 2022-03-25 15:21:09 +08:00
Justin Lin
6fac123aee refactor 2022-03-25 11:32:55 +08:00
Justin Lin
d2f961494b refactor: built-in sign 2022-03-25 10:39:52 +08:00
Justin Lin
cadbdc826d refactor 2022-03-25 10:37:18 +08:00
Justin Lin
73c3e2d54c refactor 2022-03-25 10:33:25 +08:00
Justin Lin
6292c8989a refactor: conditional value 2022-03-24 22:30:12 +08:00
Justin Lin
438e7752ac refactor: border params are flexible 2022-03-24 14:23:46 +08:00
Justin Lin
6247979899 refactor: check border automatically 2022-03-24 14:11:18 +08:00
Justin Lin
bebf3bfc53 refactor: accept cells 2022-03-24 14:01:05 +08:00
Justin Lin
00680fe1fc wrapping default to false 2022-03-24 09:37:55 +08:00
Justin Lin
3f8fc98145 support wrapping 2022-03-24 09:37:35 +08:00
Justin Lin
8326dcc38f refactor 2022-03-23 21:00:42 +08:00
Justin Lin
5d39610f11 refactor: use % 2022-03-23 20:46:14 +08:00
Justin Lin
19f5f66697 refactor: use % 2022-03-23 20:37:57 +08:00
Justin Lin
535d64a562 refactor: clean dep 2022-03-23 20:27:14 +08:00
Justin Lin
66c0b70417 refactor: use tf matrix 2022-03-23 17:53:42 +08:00
Justin Lin
6a9da8be00 refactor: vector addition 2022-03-22 15:15:02 +08:00
Justin Lin
5dd6d0abd5 refactor 2022-03-22 15:12:28 +08:00
Justin Lin
f38d7a784b refactor: use rands directly 2022-03-22 15:11:22 +08:00
Justin Lin
cded66d2c4 refactor: 9-nearest-neighbor 2022-03-22 15:06:47 +08:00
Justin Lin
6229ab6d8c refactor: 9-nearest-neighbor 2022-03-22 15:04:38 +08:00
Justin Lin
d2a9b4be93 refactor: search is faster 2022-03-22 07:59:54 +08:00
Justin Lin
d38c3b91fc refactor: search is faster 2022-03-21 20:28:19 +08:00
Justin Lin
62da7cebdc refactor: find min directly 2022-03-21 18:44:20 +08:00
Justin Lin
07ee15da1c refactor 2022-03-21 17:43:16 +08:00
Justin Lin
d609292ad2 refactor: rename 2022-03-21 15:39:14 +08:00
Justin Lin
cf1d5deaa9 refactor: rename 2022-03-21 15:34:44 +08:00
Justin Lin
71815a2cdc reuse calculated weights 2022-03-21 15:26:28 +08:00
Justin Lin
7e66869bca refactor: rename 2022-03-21 14:59:05 +08:00
Justin Lin
a9b40f133b refactor: no undef 2022-03-21 14:55:38 +08:00
Justin Lin
a0d4d732a7 rename 2022-03-21 13:42:30 +08:00
Justin Lin
7c613930d5 rename 2022-03-21 13:39:43 +08:00
Justin Lin
b939634f8b refactor: process wf directly 2022-03-21 13:36:35 +08:00
Justin Lin
f3b3029d01 refactor: return coord directly 2022-03-21 11:37:02 +08:00
Justin Lin
fdc8e2f29a update featured img 2022-03-21 10:25:47 +08:00
Justin Lin
d9bc2e29ea rename 2022-03-21 09:49:16 +08:00
Justin Lin
b67f4bf200 avoid path loop 2022-03-21 09:23:03 +08:00
Justin Lin
5825205a4f del i = 0 2022-03-21 09:20:26 +08:00
Justin Lin
5b85e635d2 use len(not_collapsed_coords) == 0 to stop 2022-03-21 09:06:14 +08:00
Justin Lin
cb0a4bed9f check from notCollaspedCoords 2022-03-20 22:10:04 +08:00
Justin Lin
7926667772 find notCollaspedCoords from notCollaspedCoords 2022-03-20 21:59:05 +08:00
Justin Lin
bb4700ba66 random start collasped_propagated 2022-03-20 21:43:50 +08:00
Justin Lin
11b39945df refactor: cache rx 2022-03-20 18:46:08 +08:00
Justin Lin
03563afb6f refactor: clean variables 2022-03-20 18:10:43 +08:00
Justin Lin
6f13757cbc refactor: replace states directly 2022-03-20 18:03:18 +08:00
Justin Lin
27190008bf refactor: replaced by compatible_nbr_tiles 2022-03-20 17:55:23 +08:00
Justin Lin
6f9660a67d refactor: just test threshold < state_weight[1] 2022-03-20 12:47:24 +08:00
Justin Lin
f0bc7e5dc2 refactor: tail recursion 2022-03-20 12:18:38 +08:00
Justin Lin
8c57db2e06 refactor 2022-03-19 23:31:02 +08:00
Justin Lin
05abb19126 default wall_thickness 1.6 2022-03-19 14:59:34 +08:00
Justin Lin
ad064532e5 always with bottom 2022-03-19 14:47:10 +08:00
Justin Lin
0ed3e296ea diff levels 2022-03-19 14:23:53 +08:00
Justin Lin
8158938c13 rename 2022-03-19 11:15:01 +08:00
Justin Lin
af521dd53f add with_bottom 2022-03-19 11:11:29 +08:00
Justin Lin
8b77eba322 add linear_extrude(wall_thickness) 2022-03-19 10:40:43 +08:00
Justin Lin
bc96e0ebd5 add maze_tai_chi 2022-03-19 10:39:53 +08:00
Justin Lin
679b0d0fc2 fix end condition 2022-03-18 19:31:48 +08:00
Justin Lin
39c1c1a9db avoid recursion limit 2022-03-18 18:22:31 +08:00
Justin Lin
f97366ccdf refactor 2022-03-18 16:19:27 +08:00
Justin Lin
3d24874d6d refactor 2022-03-18 15:54:58 +08:00
Justin Lin
7d1cbb9460 refactor 2022-03-18 14:34:27 +08:00
Justin Lin
2cd56758eb refactor 2022-03-18 13:08:33 +08:00
Justin Lin
120b7ea2c7 update note 2022-03-18 12:02:02 +08:00
Justin Lin
e9dd4418d1 refactor 2022-03-18 12:01:42 +08:00
Justin Lin
5c547351db don't care the last one 2022-03-18 09:24:42 +08:00
Justin Lin
7744b4e79c avoid repeating computation 2022-03-18 09:20:44 +08:00
Justin Lin
18991671f8 add count 2022-03-18 08:07:46 +08:00
Justin Lin
2a7c38915b count path leng 2022-03-18 07:11:00 +08:00
Justin Lin
a7ab17c149 refactor 2022-03-17 21:05:29 +08:00
Justin Lin
1d1479b531 sorting is not necessary 2022-03-17 20:26:06 +08:00
Justin Lin
1184258336 update note 2022-03-17 18:07:06 +08:00
Justin Lin
da5cd8a250 performanced improved 2022-03-17 18:04:20 +08:00
Justin Lin
3e110a045b format 2022-03-17 17:03:20 +08:00
Justin Lin
637dcf0840 refactor 2022-03-17 16:39:12 +08:00
Justin Lin
4a5c576630 refactor 2022-03-17 16:28:04 +08:00
Justin Lin
4b24c81eeb support mask 2022-03-17 16:21:46 +08:00
Justin Lin
06a785bfb1 support init_cells param 2022-03-17 16:21:31 +08:00
Justin Lin
22fdb8c2e5 update doc 2022-03-17 08:51:26 +08:00
Justin Lin
045acaa3ac update doc 2022-03-17 08:45:26 +08:00
Justin Lin
d7a6bb35ac refactor 2022-03-16 13:36:59 +08:00
Justin Lin
43d338eaaf performance improved 2022-03-16 11:46:04 +08:00
Justin Lin
1723ba3abe refactor 2022-03-16 09:46:31 +08:00
Justin Lin
2dc729d860 refactor 2022-03-16 09:35:01 +08:00
Justin Lin
68b13fc330 refactor 2022-03-16 09:22:17 +08:00
Justin Lin
f9274fa745 update note 2022-03-16 09:16:15 +08:00
Justin Lin
3dc36af58b add mz_hexwalls 2022-03-16 09:15:45 +08:00
Justin Lin
c8efde6258 fix rc error 2022-03-16 09:15:36 +08:00
Justin Lin
deb875b147 fix rc error 2022-03-16 09:15:25 +08:00
Justin Lin
9a1ac9a363 fix idx error 2022-03-16 09:15:04 +08:00
Justin Lin
0280293192 add mz_squarewalls 2022-03-16 08:25:01 +08:00
Justin Lin
aa70a75fa2 refactor 2022-03-16 08:13:29 +08:00
Justin Lin
6459cc582e refactor 2022-03-16 08:03:00 +08:00
Justin Lin
a93739474b refactor 2022-03-16 07:59:41 +08:00
Justin Lin
cb0e361671 refactor 2022-03-15 21:45:11 +08:00
Justin Lin
f5e403bbf0 refactor 2022-03-15 20:49:29 +08:00
Justin Lin
65116cbc78 refactor 2022-03-15 20:43:21 +08:00
Justin Lin
ac9368e74d update doc 2022-03-15 20:39:34 +08:00
Justin Lin
61ca95d3a1 update doc 2022-03-15 20:36:52 +08:00
Justin Lin
b5063e12bf refactor 2022-03-15 18:35:18 +08:00
Justin Lin
3357bd4e84 support mask 2022-03-15 18:02:55 +08:00
Justin Lin
2e135ef9ae update note 2022-03-15 13:43:31 +08:00
Justin Lin
9585c3a75a move 2022-03-15 13:42:50 +08:00
Justin Lin
3eed784234 add helix_lampshade 2022-03-15 07:54:03 +08:00
Justin Lin
d2ad4ff388 update example 2022-03-14 17:12:04 +08:00
Justin Lin
7cfc2f21dd update note 2022-03-14 08:42:09 +08:00
Justin Lin
d6f7219eb6 refactor 2022-03-14 08:41:24 +08:00
Justin Lin
8b90e319b3 fix cond 2022-03-12 23:01:37 +08:00
Justin Lin
1a99069057 refactor 2022-03-12 22:39:46 +08:00
Justin Lin
b89a800022 refactor 2022-03-12 22:30:10 +08:00
Justin Lin
951ed2daf2 refactor 2022-03-12 22:28:38 +08:00
Justin Lin
e048056057 refactor 2022-03-12 22:14:04 +08:00
Justin Lin
2f7aea6147 refactor 2022-03-12 22:08:36 +08:00
Justin Lin
57914a8245 refactor 2022-03-12 18:31:09 +08:00
Justin Lin
987bc3be5b refactor 2022-03-12 18:24:00 +08:00
Justin Lin
3cb77f3a7a refactor 2022-03-12 17:52:05 +08:00
Justin Lin
ed01eebf16 refactor 2022-03-12 16:30:01 +08:00
Justin Lin
6df459370e remove sum 2022-03-12 16:25:14 +08:00
Justin Lin
14b15a2b1c refactor 2022-03-12 16:25:05 +08:00
Justin Lin
4eb10d2b73 refactor 2022-03-12 16:23:02 +08:00
Justin Lin
b9d3cc8530 refactor 2022-03-12 16:22:55 +08:00
Justin Lin
d2b61f1c60 refactor 2022-03-12 16:22:45 +08:00
Justin Lin
ccb16cc4f7 refactor 2022-03-12 16:22:38 +08:00
Justin Lin
95edbbee76 refactor 2022-03-12 11:48:03 +08:00
Justin Lin
79f9a76087 refactor 2022-03-12 11:35:18 +08:00
Justin Lin
e5aff6782d refactor 2022-03-12 09:37:57 +08:00
Justin Lin
52b5a26006 refactor 2022-03-12 09:19:46 +08:00
Justin Lin
da4342441f refactor 2022-03-12 08:37:38 +08:00
Justin Lin
c76766f5b4 refactor 2022-03-11 23:01:34 +08:00
Justin Lin
8a528e2e2b refactor 2022-03-11 22:18:26 +08:00
Justin Lin
37b4855793 refactor 2022-03-11 21:10:47 +08:00
Justin Lin
d60b35dd0d refactor 2022-03-11 21:08:40 +08:00
Justin Lin
78f6acdabf update test 2022-03-11 21:03:57 +08:00
Justin Lin
84e5fb4c7b add test 2022-03-11 20:54:49 +08:00
Justin Lin
b07b1b1f3d refactor 2022-03-11 15:36:56 +08:00
Justin Lin
a38fd21f43 refactor 2022-03-11 15:31:25 +08:00
Justin Lin
32f44ec9c1 refactor 2022-03-11 15:29:15 +08:00
Justin Lin
ffbb7c5db4 add test 2022-03-11 15:29:11 +08:00
Justin Lin
21c00b52d3 refactor 2022-03-11 15:19:44 +08:00
Justin Lin
88a970b2ba add test 2022-03-11 15:10:51 +08:00
Justin Lin
fbca4bd868 refactor 2022-03-11 15:08:49 +08:00
Justin Lin
5f400c124d refactor 2022-03-11 12:07:31 +08:00
Justin Lin
2b3fc8f80e refactor 2022-03-11 08:56:42 +08:00
Justin Lin
62f6c4caa5 refactor 2022-03-11 08:24:24 +08:00
Justin Lin
0ce5d6e1da refactor 2022-03-10 21:57:21 +08:00
Justin Lin
63ddbd3104 refactor 2022-03-10 21:41:06 +08:00
Justin Lin
2b2d4dbefa refactor 2022-03-10 20:43:24 +08:00
Justin Lin
642242b204 refactor 2022-03-10 20:40:10 +08:00
Justin Lin
920509c3f1 add test 2022-03-10 20:40:06 +08:00
Justin Lin
5b04d11ac8 refactor 2022-03-10 20:27:14 +08:00
Justin Lin
fa63d1eec6 refactor 2022-03-10 20:25:27 +08:00
Justin Lin
9def71f194 add tests 2022-03-10 20:24:06 +08:00
Justin Lin
58f26d8e0f refactor 2022-03-10 20:24:01 +08:00
Justin Lin
20242f5d51 refactor 2022-03-10 20:19:57 +08:00
Justin Lin
84c5ea2d91 refactor 2022-03-10 20:18:32 +08:00
Justin Lin
2f3bf9c309 add test 2022-03-10 20:18:13 +08:00
Justin Lin
8f6c8f340a refactor 2022-03-10 20:16:40 +08:00
Justin Lin
e36fd9bd46 refactor 2022-03-10 20:14:13 +08:00
Justin Lin
2687844621 add test 2022-03-10 20:13:12 +08:00
Justin Lin
7ab33ba03c del 2022-03-10 20:13:06 +08:00
Justin Lin
738ca61cab update docs 2022-03-09 10:32:44 +08:00
Justin Lin
dd76edf17f move 2022-03-08 09:33:41 +08:00
Justin Lin
ff89443ff2 update doc 2022-03-08 09:33:35 +08:00
Justin Lin
adf3ea365f refactor 2022-03-07 15:04:57 +08:00
Justin Lin
762d16b2a4 refactor 2022-03-07 11:24:06 +08:00
Justin Lin
118e1191dd refactor 2022-03-07 10:48:56 +08:00
Justin Lin
90006a6b20 refactor 2022-03-07 10:17:38 +08:00
Justin Lin
d9a93b401e refactor 2022-03-06 22:50:47 +08:00
Justin Lin
dbc918cfe1 refactor 2022-03-06 17:23:58 +08:00
Justin Lin
0a41e6bcc1 refactor 2022-03-06 17:18:11 +08:00
Justin Lin
5b37c7ad86 refactor 2022-03-06 16:24:37 +08:00
Justin Lin
dff52fd168 Merge pull request #27 from FranDias/patch-1
umber -> number in readme
2022-03-06 08:53:22 +08:00
Francisco Dias
fef3a55965 umber -> number in readme 2022-03-05 19:22:23 -05:00
Justin Lin
0ca2eb4e93 refactor 2022-03-05 11:46:03 +08:00
Justin Lin
ff8f754dcc refactor 2022-03-05 11:20:53 +08:00
Justin Lin
f16de19a00 refactor 2022-03-05 11:11:34 +08:00
Justin Lin
fe71af113f refactor 2022-03-05 11:10:12 +08:00
Justin Lin
ec276b274f refactor 2022-03-05 10:47:24 +08:00
Justin Lin
a8e903ccb7 refactor 2022-03-04 21:01:23 +08:00
Justin Lin
b89c2d90d3 return first when leng is 1 2022-03-04 19:52:16 +08:00
Justin Lin
2771e2cd31 performance improved 2022-03-04 19:44:08 +08:00
Justin Lin
ccbcac6a10 refactor 2022-03-04 18:05:25 +08:00
Justin Lin
d9c890d8c3 refactor 2022-03-04 15:58:33 +08:00
Justin Lin
18ecbcee93 refactor 2022-03-04 13:40:29 +08:00
Justin Lin
dff91873b3 refactor 2022-03-04 13:24:44 +08:00
Justin Lin
c7897c47c0 refactor 2022-03-04 09:37:48 +08:00
Justin Lin
26592f72cd fix Issue #26 2022-03-04 08:32:22 +08:00
Justin Lin
b0f8f5c4f4 refactor 2022-03-03 23:08:24 +08:00
Justin Lin
96ec1e0c26 refactor 2022-03-01 15:52:17 +08:00
Justin Lin
8475049fad refactor 2022-03-01 13:06:27 +08:00
Justin Lin
1d7d45e3ed refactor 2022-03-01 10:02:42 +08:00
Justin Lin
17fcdbb92e refactor 2022-03-01 09:56:45 +08:00
Justin Lin
14ad6b4090 refactor 2022-03-01 09:54:48 +08:00
Justin Lin
769023f639 update test 2022-03-01 09:24:14 +08:00
Justin Lin
fc7c8ae32f refactor 2022-03-01 09:07:15 +08:00
Justin Lin
716f48c450 update test 2022-03-01 09:04:42 +08:00
Justin Lin
943d7bffca refactor 2022-03-01 09:01:28 +08:00
Justin Lin
cb7c28d01a refactor 2022-03-01 08:48:01 +08:00
Justin Lin
e04381bdea use [each lt, v] to replace concat(lt, [v]) 2022-02-28 11:22:58 +08:00
Justin Lin
9a143a9f72 refactor 2022-02-28 11:07:35 +08:00
Justin Lin
8f76446bd8 use [each lt, v] to replace concat(lt, [v]) 2022-02-28 11:05:50 +08:00
Justin Lin
c9370160a7 use [each lt, v] to replace concat(lt, [v]) 2022-02-28 10:52:47 +08:00
Justin Lin
57f800f1fc use [each lt, v] to replace concat(lt, [v]) 2022-02-27 22:32:57 +08:00
Justin Lin
8dc6336f2f use [each lt, v] to replace concat(lt, [v]) 2022-02-27 22:02:51 +08:00
Justin Lin
042feb4951 use [each lt, v] to replace concat(lt, [v]) 2022-02-27 18:53:03 +08:00
Justin Lin
fd9eb1fe4d Merge branch 'master' of https://github.com/JustinSDK/dotSCAD 2022-02-27 18:50:23 +08:00
Justin Lin
7d407d8cda use [each lt, v] to replace concat(lt, [v]) 2022-02-27 18:50:19 +08:00
Justin Lin
97e6e5755e Merge pull request #25 from vaaski/patch-1
fix: readme typo
2022-02-26 08:29:33 +08:00
vaaski
70cdccd280 fix: readme typo 2022-02-25 17:24:53 +01:00
Justin Lin
69bfe3fdfa rename 2022-02-13 18:03:22 +08:00
Justin Lin
74aadcb514 add ruyi 2022-02-13 18:03:11 +08:00
Justin Lin
81ba7db6cc rand top 2022-02-13 16:51:17 +08:00
Justin Lin
0ac32c05b8 formatting 2022-02-13 15:59:24 +08:00
Justin Lin
00861bc751 scale 50 2022-02-13 15:56:11 +08:00
Justin Lin
ca6c2ba7ee add pineapple 2022-02-13 15:48:23 +08:00
Justin Lin
acdf107222 del 2022-02-05 11:23:20 +08:00
Justin Lin
97f2fd8d62 update top 2022-02-03 15:42:12 +08:00
Justin Lin
0835f77aaa update top 2022-02-03 14:23:31 +08:00
Justin Lin
b8d61e7578 add crystal_cluster 2022-02-03 11:47:47 +08:00
Justin Lin
0409c35375 rename 2022-01-26 16:51:44 +08:00
Justin Lin
dd632d5845 add reaction_diffusion 2022-01-24 18:05:37 +08:00
Justin Lin
9320125b42 change params 2022-01-20 17:22:11 +08:00
Justin Lin
7113cce683 add voronoi_melon 2022-01-20 17:06:39 +08:00
Justin Lin
86d0c65108 use rand_pts_sphere 2022-01-19 16:25:53 +08:00
Justin Lin
2cfc99a08c change phi 2022-01-17 20:04:21 +08:00
Justin Lin
6e0c0cfc78 change infinity 2022-01-17 20:03:04 +08:00
Justin Lin
a9938bfcfd add voronoi_sphere 2022-01-17 16:57:18 +08:00
Justin Lin
b3aaecd32c change infinity 2022-01-11 15:44:15 +08:00
Justin Lin
84eeaf913a add vrn_sphere 2022-01-11 11:34:12 +08:00
Justin Lin
1ec50f7b85 add gyroid 2022-01-09 18:48:50 +08:00
Justin Lin
3569617313 update note 2022-01-07 09:09:42 +08:00
Justin Lin
eca8947822 add sf_cylinder 2022-01-07 09:06:42 +08:00
Justin Lin
773dc87be9 add owls 2022-01-04 08:16:02 +08:00
Justin Lin
530faeec35 refactor 2022-01-03 08:07:24 +08:00
Justin Lin
48e986ce14 add detail param 2022-01-02 22:54:25 +08:00
Justin Lin
f3216c2062 df rock 2022-01-02 20:44:30 +08:00
Justin Lin
2942651117 adjust beak 2022-01-02 19:12:05 +08:00
Justin Lin
8d78ec4253 adjust beak 2022-01-02 19:10:45 +08:00
Justin Lin
39fc86e67e add owl 2022-01-02 17:49:03 +08:00
Justin Lin
09125eb667 remove polyline2d 2022-01-02 17:37:04 +08:00
Justin Lin
9ba754162a refactor 2021-12-27 09:20:43 +08:00
Justin Lin
b2e58ac763 refactor 2021-12-27 09:18:47 +08:00
Justin Lin
c917ffee41 refactor 2021-12-27 09:17:48 +08:00
Justin Lin
5270d6c606 add maze_city 2021-12-26 18:50:33 +08:00
Justin Lin
cd4dda3b39 add mz_wang_tiles 2021-12-26 18:50:16 +08:00
Justin Lin
cc15a7df8b add ripple_vase 2021-12-19 17:48:12 +08:00
Justin Lin
a299949c42 add amplitude 2021-12-19 16:00:03 +08:00
Justin Lin
47bdb4b31d refactor 2021-12-19 15:57:26 +08:00
Justin Lin
0fb6f4b9a1 add ripples 2021-12-19 15:52:51 +08:00
Justin Lin
9facafaf61 update gallery img 2021-12-14 21:56:21 +08:00
Justin Lin
cd16a74d08 rotate fin 2021-12-12 11:17:08 +08:00
Justin Lin
496a151005 rename 2021-12-11 09:36:04 +08:00
Justin Lin
2e12d6b79a add tail hair 2021-12-10 16:31:20 +08:00
Justin Lin
d5221e1289 rotate tail 2021-12-10 13:07:59 +08:00
Justin Lin
382d1c60b8 offset mountain 2021-12-10 11:16:07 +08:00
Justin Lin
d3d0517376 adjust 2021-12-10 11:08:41 +08:00
Justin Lin
43a71ead1d add spiral_dragon2 2021-12-10 10:56:44 +08:00
Justin Lin
e5f17508da new mountain 2021-12-10 08:46:02 +08:00
Justin Lin
3ff2961a6d update hair 2021-12-09 22:01:12 +08:00
Justin Lin
819a76d81c update tail 2021-12-09 21:31:49 +08:00
Justin Lin
efdd6c1078 update img 2021-12-09 21:12:52 +08:00
Justin Lin
4029ab4641 add tail hair 2021-12-09 21:12:48 +08:00
Justin Lin
14ca2c48ae update hair 2021-12-09 20:45:37 +08:00
Justin Lin
f8c89b1dab update hair 2021-12-09 20:37:59 +08:00
Justin Lin
2e92394513 format 2021-12-09 17:50:16 +08:00
Justin Lin
bd7d16d6e5 add tail hair 2021-12-09 17:46:45 +08:00
Justin Lin
6d212c8722 thicken road 2021-12-09 10:45:07 +08:00
Justin Lin
1d946647eb ship 3.2 2021-12-09 07:56:05 +08:00
Justin Lin
c5a99c3223 add rubber_duck_debugging 2021-12-05 13:55:41 +08:00
Justin Lin
39e363d59c thin tail 2021-12-04 16:50:36 +08:00
Justin Lin
9478d1ec60 update docs 2021-12-04 12:16:20 +08:00
Justin Lin
134ca1b364 refactor 2021-12-04 11:52:25 +08:00
Justin Lin
e7c38fa876 dot notation indexing 2021-12-04 11:23:04 +08:00
Justin Lin
bd8f755a6c it's y 2021-12-04 11:21:48 +08:00
Justin Lin
91d5c40336 use polyline_join 2021-12-04 10:57:29 +08:00
Justin Lin
5c8c0b8139 update doc 2021-12-04 10:17:13 +08:00
Justin Lin
324693a38f dot notation indexing 2021-12-04 10:16:45 +08:00
Justin Lin
14a6348771 update test 2021-12-04 09:58:07 +08:00
Justin Lin
7d9cb94f22 dot notation indexing 2021-12-04 09:58:00 +08:00
Justin Lin
90a29ceecd dot notation indexing 2021-12-04 08:56:09 +08:00
Justin Lin
e7bfb3c951 update doc 2021-12-03 09:45:52 +08:00
Justin Lin
59eb3a1dc2 update doc 2021-12-03 09:43:24 +08:00
Justin Lin
e49c40e0f0 add polar_zonohedra 2021-12-03 09:30:06 +08:00
Justin Lin
d822688eaf modify jaw 2021-12-02 16:03:55 +08:00
Justin Lin
d25b73dbda update note 2021-12-02 10:48:12 +08:00
Justin Lin
22dce8fee2 add polar_zonohedra 2021-12-02 10:47:32 +08:00
Justin Lin
abd287b29e rename 2021-12-02 10:25:53 +08:00
Justin Lin
a82827e389 pitch 2021-12-01 19:55:03 +08:00
Justin Lin
c6a661e074 add polar_zonohedra 2021-12-01 17:36:44 +08:00
Justin Lin
0490da4b91 add infinity_dragon 2021-11-30 10:36:59 +08:00
Justin Lin
364488970b update length 2021-11-30 09:13:33 +08:00
Justin Lin
4eda143bbb move 2021-11-30 08:23:41 +08:00
Justin Lin
2a87a2221f add lemniscate_2circles 2021-11-29 10:45:25 +08:00
Justin Lin
39cbc9a069 add comment 2021-11-29 10:01:00 +08:00
Justin Lin
55e64dcb53 change a default 2021-11-29 09:56:47 +08:00
Justin Lin
154436382c add lemniscate_curve 2021-11-29 09:49:45 +08:00
Justin Lin
90c6db16d5 union all 2021-11-22 18:02:10 +08:00
Justin Lin
0ec9f0e0e5 update doc 2021-11-22 09:46:34 +08:00
Justin Lin
218830d252 update README 2021-11-22 09:39:21 +08:00
Justin Lin
84f3636bf0 update note 2021-11-22 09:37:14 +08:00
Justin Lin
d9dd44db29 update README 2021-11-22 09:36:37 +08:00
Justin Lin
9577f68d13 deprecated 2021-11-22 09:32:36 +08:00
Justin Lin
7a8c152607 use new modules/functions 2021-11-22 09:31:05 +08:00
Justin Lin
345603551b use shape_star 2021-11-19 16:17:00 +08:00
Justin Lin
610c9588bd use polyline_join 2021-11-18 08:08:50 +08:00
Justin Lin
7b1095d130 update docs 2021-11-17 11:05:38 +08:00
Justin Lin
884892a3f1 use path_scaling_sections 2021-11-14 18:36:23 +08:00
Justin Lin
2600504dd5 add tiled_line_ring 2021-11-14 10:39:13 +08:00
Justin Lin
f27250d285 format 2021-11-13 09:44:22 +08:00
Justin Lin
5016231000 refactor 2021-11-12 09:54:03 +08:00
Justin Lin
402aa95289 update README 2021-11-10 11:27:14 +08:00
Justin Lin
50d11142d5 refine feet 2021-11-09 21:06:36 +08:00
Justin Lin
031438a4df update README 2021-11-09 18:17:41 +08:00
Justin Lin
9063d9da05 add torus_knot_dragon_and_pearl 2021-11-09 18:17:37 +08:00
Justin Lin
3fbee973a9 refactor 2021-11-09 16:57:51 +08:00
Justin Lin
3b5af34041 add doc 2021-11-07 16:01:53 +08:00
Justin Lin
824aefefd9 rename 2021-11-05 08:34:33 +08:00
Justin Lin
4cdeb5b4a6 add doc 2021-11-05 08:33:44 +08:00
Justin Lin
9271c79a3a add doc 2021-11-03 08:04:28 +08:00
Justin Lin
3b2b07ae25 del svg 2021-11-02 18:01:41 +08:00
Justin Lin
214b0a2640 update LICENSE 2021-11-02 17:55:28 +08:00
Justin Lin
29da8be872 add doc 2021-11-01 08:10:17 +08:00
Justin Lin
10930e8b1c add star 2021-10-29 16:49:18 +08:00
Justin Lin
756ed377c3 update README 2021-10-29 11:48:50 +08:00
Justin Lin
300f72a959 update note 2021-10-29 11:47:10 +08:00
Justin Lin
faf53b3846 add shape_star 2021-10-29 11:45:14 +08:00
Justin Lin
2376e429d1 update README 2021-10-28 15:15:44 +08:00
Justin Lin
b0817f2339 del unused module 2021-10-28 15:13:30 +08:00
Justin Lin
0304233cdc delete unused function 2021-10-28 15:11:34 +08:00
Justin Lin
4176cb476e add wormhole 2021-10-28 10:38:26 +08:00
Justin Lin
3901e4f1ea add doc 2021-10-28 08:20:03 +08:00
Justin Lin
9022cb731d rename 2021-10-28 08:04:26 +08:00
Justin Lin
b76a2f9c32 add doc 2021-10-28 07:42:16 +08:00
Justin Lin
bb2f10043f update example 2021-10-27 15:51:35 +08:00
Justin Lin
5b65cc16a7 rename 2021-10-26 16:51:54 +08:00
Justin Lin
8cdfe435ee rename 2021-10-26 10:29:10 +08:00
Justin Lin
1cddbc3453 rename 2021-10-26 10:25:49 +08:00
Justin Lin
50621b0306 change param 2021-10-26 09:36:26 +08:00
Justin Lin
8dad1bd4b6 add platonic_solid_frame 2021-10-26 09:33:47 +08:00
Justin Lin
c6b0c30fd8 reverse face 2021-10-26 09:08:01 +08:00
Justin Lin
a6d0c85dbe update README 2021-10-25 11:30:33 +08:00
Justin Lin
87deb39a4b add central_scale 2021-10-24 14:08:23 +08:00
Justin Lin
bfa0fd2b11 add doc 2021-10-21 17:09:54 +08:00
Justin Lin
2bd663d46b update doc 2021-10-18 16:06:05 +08:00
Justin Lin
5c1c6a7463 update doc 2021-10-18 16:04:53 +08:00
Justin Lin
ca92286690 update doc 2021-10-18 16:04:29 +08:00
Justin Lin
cbff19c33e add comment 2021-10-18 16:02:19 +08:00
Justin Lin
43b22a0f4c add comments 2021-10-18 16:01:53 +08:00
Justin Lin
6bda39ecef add doc 2021-10-18 16:00:56 +08:00
Justin Lin
37c3a647a5 refactor 2021-10-15 10:20:18 +08:00
Justin Lin
59ae93ba5f calculate r_base directly 2021-10-14 22:11:14 +08:00
Justin Lin
6d6f62c77f refactor 2021-10-14 18:25:10 +08:00
Justin Lin
a8ae7c18e4 rewrite polyhedra 2021-10-14 18:22:05 +08:00
Justin Lin
9c3c92ab13 update README 2021-10-13 16:12:17 +08:00
Justin Lin
f1116dc8cf add doc 2021-10-13 16:09:12 +08:00
Justin Lin
5a44454547 fix join index 2021-10-13 16:06:22 +08:00
Justin Lin
57d46eda8d update README 2021-10-12 16:38:05 +08:00
Justin Lin
4a19b445ab update README 2021-10-12 16:35:02 +08:00
Justin Lin
675f80159e add doc 2021-10-12 16:24:03 +08:00
Justin Lin
1132451009 i can be ignored 2021-10-12 16:23:55 +08:00
Justin Lin
c78fb13731 update README 2021-10-08 10:05:14 +08:00
Justin Lin
a53c202c48 update README 2021-10-08 10:04:24 +08:00
Justin Lin
ccbd81b88e update note 2021-10-08 09:36:51 +08:00
Justin Lin
a14c5676d4 use polyline_join 2021-10-08 09:36:01 +08:00
Justin Lin
e9440e55d6 scale first cat 2021-10-07 09:49:55 +08:00
Justin Lin
8f1d6a6e1a refactor 2021-10-06 16:33:17 +08:00
Justin Lin
95dc133d0d refactor 2021-10-06 16:29:33 +08:00
Justin Lin
dbdf8a757d move octahedron 2021-10-06 16:08:20 +08:00
Justin Lin
d6affc1ff5 add polyhedra 2021-10-06 15:54:20 +08:00
Justin Lin
f7e81a78e3 update readme 2021-10-06 15:53:57 +08:00
Justin Lin
63a5e53572 refactor 2021-10-04 12:39:16 +08:00
Justin Lin
006572c5bf move 2021-10-04 08:01:18 +08:00
Justin Lin
3678b8b6d7 move 2021-10-04 07:58:45 +08:00
Justin Lin
89eb57652b refactor 2021-10-01 14:17:53 +08:00
Justin Lin
0a24f4fc67 refactor 2021-10-01 13:39:12 +08:00
Justin Lin
6e8277c91d rename 2021-10-01 13:28:30 +08:00
Justin Lin
9071ac3788 update doc 2021-10-01 10:30:10 +08:00
Justin Lin
f1b1239950 fix wrong angleyz 2021-10-01 10:28:42 +08:00
Justin Lin
71b6203d9c fix 2D to 3D bugs 2021-10-01 09:54:47 +08:00
Justin Lin
fa0e77ebaf depends on $children 2021-10-01 09:15:06 +08:00
Justin Lin
6e38061655 refactor 2021-10-01 08:47:45 +08:00
Justin Lin
ac2c420487 refactor 2021-10-01 08:46:08 +08:00
Justin Lin
a29b851500 update note 2021-10-01 08:31:00 +08:00
Justin Lin
bc17a2df19 add polyline_hull 2021-10-01 08:27:07 +08:00
Justin Lin
d701b537f0 remove children support 2021-10-01 08:26:06 +08:00
Justin Lin
4683ff5a46 refactor 2021-10-01 08:20:49 +08:00
Justin Lin
06c1ef94bc refactor 2021-10-01 08:08:11 +08:00
Justin Lin
e2958b6ae1 use for-loop 2021-10-01 08:03:07 +08:00
Justin Lin
a2971ec1d0 add fidget_cat 2021-09-24 16:11:25 +08:00
Justin Lin
1634403e28 refactor 2021-09-23 07:46:45 +08:00
Justin Lin
57da4b39ad add hexahedron 2021-09-22 16:56:46 +08:00
Justin Lin
5374999967 add tetrahedron 2021-09-22 16:39:04 +08:00
Justin Lin
60f3698200 delete unnecessary code 2021-09-22 16:36:21 +08:00
Justin Lin
83b1843f3f add octahedron 2021-09-22 16:35:22 +08:00
Justin Lin
b2d2940ef1 refactor 2021-09-22 16:30:28 +08:00
Justin Lin
3c0c524186 format 2021-09-22 16:22:45 +08:00
Justin Lin
4eef2c6dde refactor 2021-09-22 16:22:09 +08:00
Justin Lin
af9cfb16e4 add dodecahedron 2021-09-22 16:08:48 +08:00
Justin Lin
9340f73f1a add geom_dodecahedron 2021-09-22 16:07:34 +08:00
Justin Lin
66d02d02e2 change default values 2021-09-19 10:40:12 +08:00
Justin Lin
44165275e7 create bottom 2021-09-19 09:32:37 +08:00
Justin Lin
dcda61390c shell param is not necessary 2021-09-18 17:14:15 +08:00
Justin Lin
58a7a20c53 don't concat 2021-09-18 16:26:28 +08:00
Justin Lin
d0bc8c0f7f shell_random_threshold default to 0.5 2021-09-18 16:22:12 +08:00
Justin Lin
26fcdbe8e3 add shell_random_threshold 2021-09-18 16:21:44 +08:00
Justin Lin
704ed1e725 add shell param 2021-09-18 12:22:46 +08:00
Justin Lin
702aab846e add shell 2021-09-18 12:21:03 +08:00
Justin Lin
fbc07cec80 we don't have to mod nums_of_buckets 2021-09-16 07:50:37 +08:00
Justin Lin
b1b61fddbf single a_step is ok 2021-09-10 15:17:33 +08:00
Justin Lin
89096ad329 update comment 2021-09-10 12:22:25 +08:00
Justin Lin
e5b1a6cf93 add superellipsoid 2021-09-10 12:11:38 +08:00
Justin Lin
523ce3cb33 add perlin_sphere 2021-09-10 09:45:53 +08:00
Justin Lin
ea36c97ac7 performance improved 2021-09-09 17:37:33 +08:00
Justin Lin
5e7b5f1691 update doc 2021-09-09 16:31:42 +08:00
Justin Lin
8fb3d5b579 add rand_pts_circle 2021-09-08 18:02:17 +08:00
Justin Lin
cafa0ebd06 update comment 2021-09-08 18:01:59 +08:00
Justin Lin
a2fee75749 adjust size of bucket 2021-09-08 11:45:04 +08:00
Justin Lin
0725d945de delete unused modules 2021-09-08 10:49:21 +08:00
Justin Lin
41ebc07fd0 don't use quick_mode 2021-09-08 10:48:43 +08:00
Justin Lin
c59fdc5f1d provide quick_mode 2021-09-08 08:36:33 +08:00
Justin Lin
23ed306148 performance improved 2021-09-07 15:59:11 +08:00
Justin Lin
657c10a9cc performance improved 2021-09-07 15:47:07 +08:00
Justin Lin
8da1912fff add _pt3_hash 2021-09-07 15:47:01 +08:00
Justin Lin
fd375dd50f rename 2021-09-07 10:21:24 +08:00
Justin Lin
69e2a79488 use geom_isosphere to rewrite 2021-09-07 10:14:45 +08:00
Justin Lin
e5af7b3027 refactor 2021-09-07 10:12:29 +08:00
Justin Lin
9c532acce4 refactor 2021-09-07 10:03:47 +08:00
Justin Lin
1d085c35d0 add isosphere 2021-09-06 17:36:44 +08:00
Justin Lin
09d898c035 add tri_subdivide 2021-09-06 17:23:51 +08:00
Justin Lin
12e6af2492 delete repeated function 2021-09-05 15:33:26 +08:00
Justin Lin
f3a5ce76e3 delete unused function 2021-09-05 15:28:16 +08:00
Justin Lin
8ca4e12b22 add fidget_heart 2021-09-04 08:39:36 +08:00
Justin Lin
e021750d7b clean code 2021-09-03 15:37:35 +08:00
Justin Lin
43fa3fb5fd rename variables 2021-09-03 11:40:08 +08:00
Justin Lin
853da1f9e2 refactor 2021-09-03 11:38:21 +08:00
Justin Lin
346cea1db8 add r_union 2021-09-03 11:29:32 +08:00
Justin Lin
c6ca52aba8 add r_union2 2021-09-03 11:18:03 +08:00
Justin Lin
5863a5c3f6 clean code 2021-09-03 07:40:17 +08:00
Justin Lin
43d614ba7c add euler_spiral 2021-08-31 11:28:42 +08:00
Justin Lin
fb0672480f dedup befor drawing 2021-08-31 10:02:48 +08:00
Justin Lin
3d1a4cbb33 rename 2021-08-31 08:29:37 +08:00
Justin Lin
0494ef7f32 del unnecessary code 2021-08-30 08:09:29 +08:00
Justin Lin
9850227fe4 adjust face 2021-08-29 21:39:18 +08:00
Justin Lin
4f22f8489a accept diff font and font_size 2021-08-29 17:51:37 +08:00
Justin Lin
210844c9f8 emoticon moai 2021-08-29 09:01:35 +08:00
Justin Lin
e9095eaff5 add ears 2021-08-29 08:21:16 +08:00
Justin Lin
950c7a5937 add moai 2021-08-27 19:50:18 +08:00
Justin Lin
9cbac21f17 del unused module 2021-08-27 07:54:06 +08:00
Justin Lin
30f83865f1 add tri_arc_path 2021-08-26 21:13:12 +08:00
Justin Lin
b6d86ab4ba angle_between adds a ccw param 2021-08-26 21:09:32 +08:00
Justin Lin
2355820034 change param 2021-08-26 20:27:42 +08:00
Justin Lin
679e3aae62 add tri_is_ccw 2021-08-26 18:49:42 +08:00
Justin Lin
21754293c8 add lavender 2021-08-25 17:33:24 +08:00
Justin Lin
d4a865080c fix error vector 2021-08-25 14:43:47 +08:00
Justin Lin
b79131f9bc add nose param 2021-08-24 16:46:54 +08:00
Justin Lin
7aad397860 rename 2021-08-24 16:44:16 +08:00
Justin Lin
b209c40d99 remove render 2021-08-24 09:10:54 +08:00
Justin Lin
d8122150a1 allow one word 2021-08-24 09:05:16 +08:00
Justin Lin
e507f71619 scale decoratiokn 2021-08-24 08:58:41 +08:00
Justin Lin
966f6f6850 rename 2021-08-23 15:31:27 +08:00
Justin Lin
d35fe91246 font default to 思源黑體 Medium 2021-08-23 15:20:27 +08:00
Justin Lin
2f9509c249 model default to both 2021-08-23 15:17:32 +08:00
Justin Lin
0810d86314 scale 0.7 2021-08-23 15:16:39 +08:00
Justin Lin
52e43aa03c adjust 2021-08-23 09:10:00 +08:00
Justin Lin
d875d41e4c rename 2021-08-23 08:44:51 +08:00
Justin Lin
82ec74eee1 add tumbler_helmet 2021-08-22 20:33:03 +08:00
Justin Lin
3390b0587d refactor 2021-08-22 20:32:47 +08:00
Justin Lin
433040f363 use string directly 2021-08-22 17:45:54 +08:00
Justin Lin
8cc0eeebc3 don't cut bottom 2021-08-22 16:04:06 +08:00
Justin Lin
803906e8cd remove render 2021-08-22 15:36:25 +08:00
Justin Lin
03f4939fe1 scale when smoothing 2021-08-22 15:33:02 +08:00
Justin Lin
066e5fc55d add tumbler 2021-08-22 15:21:57 +08:00
Justin Lin
aeb9dec141 change param value 2021-08-21 12:37:02 +08:00
Justin Lin
bfa3d6b8ff rename 2021-08-21 10:43:15 +08:00
Justin Lin
4fb0f9ac7b add engraved param 2021-08-21 10:11:46 +08:00
Justin Lin
e5eeb77292 delete extra support 2021-08-20 21:41:40 +08:00
Justin Lin
2e5b245167 update note 2021-08-20 21:29:57 +08:00
Justin Lin
a37c6030e9 add convexity param 2021-08-20 21:28:17 +08:00
Justin Lin
13ca93e9db extra support 2021-08-20 21:11:13 +08:00
Justin Lin
749079767d refactor 2021-08-19 16:37:58 +08:00
Justin Lin
d8a444099f add ivory_ball_fern_leaf 2021-08-19 16:36:42 +08:00
Justin Lin
0dc5544e2e use relative path 2021-08-19 16:12:40 +08:00
Justin Lin
ac41769faa change param name 2021-08-19 12:37:35 +08:00
Justin Lin
bcbc4e09a5 add worley_sphere 2021-08-19 12:30:54 +08:00
Justin Lin
888460d2e3 add param 2021-08-19 10:42:12 +08:00
Justin Lin
c5be2d398a add polyhedron_abuse param (hidden feature) 2021-08-18 17:56:30 +08:00
Justin Lin
798676e2eb refactor 2021-08-18 16:24:57 +08:00
Justin Lin
ad6b0ae4f1 add fidget ball 2021-08-18 12:44:32 +08:00
Justin Lin
9829c5c201 add kogan_sphere 2021-08-16 18:22:02 +08:00
Justin Lin
fd6fbbc92f add penrose_basket 2021-08-16 13:13:31 +08:00
Justin Lin
6aaab429fb add ptf_c2sphere 2021-08-16 12:23:27 +08:00
Justin Lin
d00f51edcb update examples 2021-08-15 14:02:56 +08:00
Justin Lin
0c1e85e5db init from OBTUSE 2021-08-15 13:58:14 +08:00
Justin Lin
ed3b8c1422 add triangles param 2021-08-15 11:48:57 +08:00
Justin Lin
7574f0aa3d mirror tri to tile 2021-08-15 11:24:32 +08:00
Justin Lin
62c4e1c656 add triangles param 2021-08-15 10:23:11 +08:00
Justin Lin
af88ee6e86 add worley_vase 2021-08-14 09:26:13 +08:00
Justin Lin
30d60d643f add images 2021-08-14 09:24:56 +08:00
Justin Lin
0d63029c4c update note 2021-08-14 09:10:48 +08:00
Justin Lin
c58e019b69 add rail_extruded_sections 2021-08-14 09:10:11 +08:00
Justin Lin
249cced4c7 update doc 2021-08-14 09:09:47 +08:00
Justin Lin
2a4bd4c006 use rails2sections 2021-08-14 08:44:09 +08:00
Justin Lin
569a0091c3 add rails2sections 2021-08-14 08:34:41 +08:00
Justin Lin
beaf6fb776 delete depreated doc 2021-08-14 08:29:41 +08:00
Justin Lin
9f8614397b better bottom fitness 2021-08-13 20:50:33 +08:00
Justin Lin
0c3c0286e9 tri is [type, vertices] 2021-08-13 15:01:02 +08:00
Justin Lin
026cd9391e add tile_penrose2 2021-08-13 14:59:25 +08:00
Justin Lin
58a293f6c8 fix fn 2021-08-12 16:03:14 +08:00
Justin Lin
0e6d98fd1e delete q 2021-08-12 08:03:29 +08:00
Justin Lin
7d8bfc6099 change vertices order 2021-08-11 20:18:33 +08:00
Justin Lin
2844a30d91 change vertices order 2021-08-11 20:03:51 +08:00
Justin Lin
9b0c825f92 simplify subdivid 2021-08-11 17:48:01 +08:00
Justin Lin
428af98b5d update type 2021-08-11 17:38:42 +08:00
Justin Lin
505e384343 rename fn 2021-08-11 17:16:50 +08:00
Justin Lin
9fe43dc7b2 delete ) 2021-08-11 17:14:24 +08:00
Justin Lin
9955169c75 update example 2021-08-11 17:01:57 +08:00
Justin Lin
d350362c47 refactor 2021-08-11 08:28:57 +08:00
Justin Lin
26a0d7a62e refactor 2021-08-10 19:30:07 +08:00
Justin Lin
091f071cb5 add tile_penrose3 2021-08-10 11:34:52 +08:00
Justin Lin
401c6baca4 add twist_taiji 2021-08-09 16:45:11 +08:00
Justin Lin
bbe59b9dbb move 2021-08-09 16:28:14 +08:00
Justin Lin
02fd718ca7 rename 2021-08-09 15:12:59 +08:00
Justin Lin
a00945ae1f scale foot 2021-08-09 08:37:03 +08:00
Justin Lin
a599842933 add caterpillar 2021-08-08 20:26:36 +08:00
Justin Lin
da08e75e73 refactor 2021-08-08 19:25:56 +08:00
Justin Lin
a129aa547c add shape2wire 2021-08-08 14:57:52 +08:00
Justin Lin
eceb3fa282 66 vertices 2021-08-03 22:01:37 +08:00
Justin Lin
a16a8373d3 elaborate fin 2021-08-03 16:15:05 +08:00
Justin Lin
4a516bf64d elaborate it 2021-08-03 16:05:56 +08:00
Justin Lin
43285d49b1 scale down tail 2021-08-03 11:43:04 +08:00
Justin Lin
3d081ed0c3 change peral position 2021-08-03 10:23:44 +08:00
Justin Lin
9ad1835322 rename 2021-08-03 09:19:44 +08:00
Justin Lin
05737e0512 add a pearl 2021-08-03 09:18:21 +08:00
Justin Lin
8b65a1cb5c chane tail scale 2021-08-03 08:59:28 +08:00
Justin Lin
179701330f change body path 2021-08-03 08:57:25 +08:00
Justin Lin
50f87275e0 dragon 2021-08-02 22:26:03 +08:00
Justin Lin
f8037bf484 adjust head 2021-08-02 17:00:53 +08:00
Justin Lin
3f3d799870 elaborate it 2021-08-02 16:54:25 +08:00
Justin Lin
3bb5553698 random hair 2021-08-02 16:46:52 +08:00
Justin Lin
ad826cfb77 elaborate it 2021-08-02 15:24:49 +08:00
Justin Lin
fabfd1a9ce add dragon_claw 2021-08-02 15:02:15 +08:00
Justin Lin
ecd8311921 clean code 2021-08-01 16:51:11 +08:00
Justin Lin
2939d03879 re-design scales 2021-08-01 16:46:51 +08:00
Justin Lin
2d3315f9ad refactor 2021-08-01 15:31:21 +08:00
Justin Lin
7c8dec3671 re-design scales 2021-08-01 15:18:45 +08:00
Justin Lin
6bed665368 thicken beard 2021-08-01 13:24:44 +08:00
Justin Lin
5a5ee9cc0c re-design body scales 2021-08-01 13:10:15 +08:00
Justin Lin
3784469c59 refactor 2021-07-31 16:23:26 +08:00
Justin Lin
1544546cdd remove params 2021-07-31 16:19:40 +08:00
Justin Lin
7bd7326794 remove params 2021-07-31 16:18:02 +08:00
Justin Lin
0a117e0c09 rename and refactor 2021-07-31 16:16:58 +08:00
Justin Lin
3b48de2c47 add tile_hitomezashi 2021-07-31 15:25:19 +08:00
Justin Lin
0295b0ded0 refactor 2021-07-31 12:34:50 +08:00
Justin Lin
4bddf3ca33 refactor 2021-07-31 12:34:43 +08:00
Justin Lin
a8472c0831 add knot_tiles 2021-07-31 12:32:30 +08:00
Justin Lin
a56cf44b4c add choose_children 2021-07-31 12:31:56 +08:00
Justin Lin
a213a797a0 add rand_pts_sphere 2021-07-30 18:05:02 +08:00
Justin Lin
4cd74cb0bf del echo 2021-07-30 12:18:19 +08:00
Justin Lin
b722d178e7 add tiled_quarter_circles 2021-07-30 12:02:15 +08:00
Justin Lin
bf8cb44595 rename param 2021-07-30 11:43:31 +08:00
Justin Lin
6e3d3e0a4b move 2021-07-30 11:07:03 +08:00
Justin Lin
352ca21300 refactor 2021-07-30 11:06:47 +08:00
Justin Lin
5399224ff0 move 2021-07-30 11:02:55 +08:00
Justin Lin
574e4b695a refactor 2021-07-30 11:02:42 +08:00
Justin Lin
2e1959f3ef move 2021-07-30 11:02:27 +08:00
Justin Lin
8829123ade add tile_truchet 2021-07-30 10:55:36 +08:00
Justin Lin
1812e732bb refactor 2021-07-29 18:54:09 +08:00
Justin Lin
021716cf80 add tile_w2c 2021-07-29 16:58:48 +08:00
Justin Lin
3f499ca32d round-robin edges 2021-07-29 15:24:19 +08:00
Justin Lin
a11eae4aaa rename 2021-07-29 12:06:48 +08:00
Justin Lin
61f7988820 refactor 2021-07-29 12:05:18 +08:00
Justin Lin
7d47d56bdd refactor 2021-07-29 11:55:27 +08:00
Justin Lin
1a6ce7ea0a thicken beard 2021-07-22 16:25:20 +08:00
Justin Lin
9c487ec304 refactor 2021-07-22 13:31:16 +08:00
Justin Lin
5d593ecbc3 fin lifted 2021-07-21 20:55:06 +08:00
Justin Lin
9153c997eb add torus_knot_dragon2 2021-07-21 18:08:19 +08:00
Justin Lin
904e15667d simplify it 2021-07-21 13:36:42 +08:00
Justin Lin
cdccc4723b rename param 2021-07-21 11:08:22 +08:00
Justin Lin
88775366db rename param 2021-07-21 11:08:10 +08:00
Justin Lin
0d188fa96c update README 2021-07-21 11:06:19 +08:00
Justin Lin
fd1b426d4f update doc 2021-07-21 11:06:08 +08:00
Justin Lin
e1a5fcb928 simplify it 2021-07-21 09:20:42 +08:00
Justin Lin
d77581d717 adjust head 2021-07-20 17:21:59 +08:00
Justin Lin
81f5e05840 sharpen mouth 2021-07-20 16:45:09 +08:00
Justin Lin
e312c03414 fix CG error 2021-07-20 16:20:11 +08:00
Justin Lin
6c6093d46b flame mountain 2021-07-20 14:19:59 +08:00
Justin Lin
61faa5ae06 fix CG error 2021-07-20 13:32:34 +08:00
Justin Lin
ccfca4e246 curve nose 2021-07-20 12:47:46 +08:00
Justin Lin
f4fa300fac delete duplicated module 2021-07-20 12:44:17 +08:00
Justin Lin
404a01b29b curved nose 2021-07-20 12:43:10 +08:00
Justin Lin
3cae424fb4 rename 2021-07-19 18:18:25 +08:00
Justin Lin
ad926d2def rotate meme 2021-07-19 17:50:14 +08:00
Justin Lin
96f9d8c38a refactor 2021-07-19 17:49:14 +08:00
Justin Lin
3c43ef8fc2 add ms_paperclip_meme 2021-07-19 15:30:15 +08:00
Justin Lin
0d71103959 random hair 2021-07-19 11:28:07 +08:00
Justin Lin
da07c95497 random hair 2021-07-18 17:58:47 +08:00
Justin Lin
ccafbe8a3a refactor 2021-07-18 10:09:35 +08:00
Justin Lin
bed658178e refactor 2021-07-18 09:20:14 +08:00
Justin Lin
7b6e873b2a del unnecessary code 2021-07-17 20:04:48 +08:00
Justin Lin
780ecc3c06 update params 2021-07-17 18:12:12 +08:00
Justin Lin
97f4cfa60d add maze_tower 2021-07-17 17:54:40 +08:00
Justin Lin
66bf0f89bf fix seed missing 2021-07-17 14:41:46 +08:00
Justin Lin
246fc3006c rename 2021-07-15 13:52:57 +08:00
Justin Lin
aa42d2cd4e delete y_offset 2021-07-15 12:23:48 +08:00
Justin Lin
4583305c76 modify examples 2021-07-15 12:21:06 +08:00
Justin Lin
f3473e8765 add shape 2021-07-15 12:01:54 +08:00
Justin Lin
e855403d7a add shape 2021-07-15 11:31:53 +08:00
Justin Lin
d3a51b280a rename 2021-07-15 11:26:33 +08:00
Justin Lin
9863b718a0 use arc_path 2021-07-15 10:57:24 +08:00
Justin Lin
0551981b07 generalize shape 2021-07-15 10:53:07 +08:00
Justin Lin
e6639cd01c rename 2021-07-14 15:39:33 +08:00
Justin Lin
8d39873360 add twisted_donut 2021-07-14 14:52:54 +08:00
Justin Lin
71b6ab666d update README 2021-07-13 15:50:18 +08:00
Justin Lin
a7d9a26b07 update README 2021-07-13 15:36:46 +08:00
Justin Lin
dc8e747545 add comment 2021-07-12 14:39:07 +08:00
Justin Lin
b34724ee43 add bunny_frame 2021-07-12 14:29:57 +08:00
Justin Lin
c4075b886d support negative deep 2021-07-12 13:54:39 +08:00
Justin Lin
82e328dc56 perf improved when inner_thickness = 0 2021-07-10 17:19:06 +08:00
Justin Lin
d2a07d052d fix error indices 2021-07-10 17:09:52 +08:00
Justin Lin
77395af6d3 change thickness to outer_thickness and inner_thickness 2021-07-10 16:06:46 +08:00
Justin Lin
e24df8c443 update example 2021-07-10 15:44:46 +08:00
Justin Lin
50abc4c93c update example 2021-07-10 15:41:58 +08:00
Justin Lin
39b6a1ebfd add polyhedron_frame 2021-07-10 15:38:30 +08:00
Justin Lin
7df79fd6fe fix error incenter 2021-07-10 15:37:25 +08:00
Justin Lin
21012a76fe fix error tri_incenter 2021-07-10 15:36:45 +08:00
Justin Lin
3ea7909853 refactor 2021-07-10 09:39:28 +08:00
Justin Lin
90831fb216 refactor 2021-07-10 09:36:10 +08:00
Justin Lin
d6505ca082 use relative path 2021-07-10 09:19:27 +08:00
Justin Lin
64513c8fb0 add _vertex_normals 2021-07-10 09:18:07 +08:00
Justin Lin
738076131c add convex_offset 2021-07-09 20:13:09 +08:00
Justin Lin
1ad4d38dca update doc 2021-07-09 19:08:23 +08:00
Justin Lin
fccd4c73a7 support 3D points 2021-07-09 19:07:55 +08:00
Justin Lin
d2949cd53d use relative path 2021-07-08 20:06:46 +08:00
Justin Lin
0053576c7f update README 2021-07-05 10:48:12 +08:00
Justin Lin
a2296774da update README 2021-07-04 13:49:04 +08:00
Justin Lin
13bd40b8a5 update README 2021-07-03 12:05:09 +08:00
Justin Lin
7330e65ce7 update README 2021-07-03 12:04:55 +08:00
Justin Lin
03e2b9cc9e update README 2021-07-03 12:01:12 +08:00
Justin Lin
b610a0a1cd update RELEASE 2021-07-03 12:00:26 +08:00
Justin Lin
4e39228a12 update README 2021-07-03 11:58:39 +08:00
Justin Lin
5f091f84a3 deprecate bezier_surface and function_grapher 2021-07-03 11:56:13 +08:00
Justin Lin
52f3d10175 update docs 2021-07-03 11:53:58 +08:00
Justin Lin
131c1aec83 move 2021-07-01 15:02:03 +08:00
Justin Lin
7e41e738e2 move 2021-07-01 14:40:20 +08:00
Justin Lin
2054cf64ff add comment 2021-07-01 13:06:28 +08:00
Justin Lin
fb45f89381 add seashell 2021-07-01 11:45:43 +08:00
Justin Lin
701bbb47e9 update doc 2021-06-30 17:57:05 +08:00
Justin Lin
ef9ec57cdc add docs 2021-06-30 10:57:02 +08:00
Justin Lin
b47f07e659 update doc 2021-06-30 08:33:44 +08:00
Justin Lin
fa6bb62d41 add doc photo 2021-06-28 17:45:43 +08:00
Justin Lin
a5065f7062 update README 2021-06-28 09:45:07 +08:00
Justin Lin
ded1b38580 update doc 2021-06-27 20:29:05 +08:00
Justin Lin
9490f960d6 add comment 2021-06-27 10:52:30 +08:00
Justin Lin
67f3b36613 fix wrong triangles 2021-06-27 09:23:20 +08:00
Justin Lin
1d437f53b4 rename 2021-06-27 08:44:43 +08:00
Justin Lin
caf29ff9aa customized hash 2021-06-27 08:41:37 +08:00
Justin Lin
9595e2cb34 when triangles is undef, delaunary trianglation 2021-06-26 20:52:32 +08:00
Justin Lin
9cc90e482a change param order 2021-06-26 20:45:39 +08:00
Justin Lin
43d25322f0 triangles : counter-clockwise 2021-06-26 20:43:53 +08:00
Justin Lin
74ed27cbc4 triangles : counter-clockwise 2021-06-26 20:39:36 +08:00
Justin Lin
bed2cf49fa update doc 2021-06-26 18:36:10 +08:00
Justin Lin
536128227b add sf_thicken_tri 2021-06-26 18:35:53 +08:00
Justin Lin
507c7ec226 refactor 2021-06-26 18:35:32 +08:00
Justin Lin
1415848406 relative path 2021-06-26 16:15:24 +08:00
Justin Lin
1a3514e1c8 clean code 2021-06-26 12:49:33 +08:00
Justin Lin
bf5cf4af31 add sf_solidify_tri 2021-06-26 12:38:52 +08:00
Justin Lin
a3e27d98bf del comment 2021-06-26 12:34:10 +08:00
Justin Lin
c69fd8820b rename variable 2021-06-25 08:24:09 +08:00
Justin Lin
e30b57343c don't diff 2021-06-25 08:12:46 +08:00
Justin Lin
ae21c27cfe render first to avoid bugs 2021-06-24 17:34:25 +08:00
Justin Lin
b5a142e4b5 del unnecessary code 2021-06-24 17:23:29 +08:00
Justin Lin
ba89c31b17 add BOTH option 2021-06-24 16:51:08 +08:00
Justin Lin
c4f7e29f03 update doc 2021-06-24 15:33:57 +08:00
Justin Lin
fcbf5d1923 add doc 2021-06-24 15:32:08 +08:00
Justin Lin
95c5076a0a update doc 2021-06-22 18:02:33 +08:00
Justin Lin
a43647ea41 add doc 2021-06-22 17:58:06 +08:00
Justin Lin
0aaf599868 remove swap_surface param 2021-06-22 17:45:25 +08:00
Justin Lin
629edc0422 add direction options 2021-06-22 17:24:58 +08:00
Justin Lin
26302df1bc use relative path 2021-06-22 08:30:29 +08:00
Justin Lin
1f101a37d6 fix face normal error 2021-06-21 11:49:26 +08:00
Justin Lin
2b6a4fc03a update README 2021-06-21 09:02:35 +08:00
Justin Lin
a987e2749c update docs 2021-06-21 09:01:43 +08:00
Justin Lin
c64c81720f add doc 2021-06-21 08:57:52 +08:00
Justin Lin
6e3038f222 don't reverse ctrl_pts 2021-06-21 08:52:53 +08:00
Justin Lin
874e6bfd3e refactor 2021-06-21 08:51:44 +08:00
Justin Lin
1febd7deea add m_transpose 2021-06-21 08:50:45 +08:00
Justin Lin
cb12836e8b fix face_normal error 2021-06-21 08:47:14 +08:00
Justin Lin
d06d719468 fix face_normal error 2021-06-21 08:45:35 +08:00
Justin Lin
caabc795cd delete test hook 2021-06-21 08:35:11 +08:00
Justin Lin
dfaa75e2b0 add sf_hull 2021-06-21 08:34:45 +08:00
Justin Lin
f00402b0d1 remove slicing param 2021-06-21 08:34:40 +08:00
Justin Lin
7518539350 add swap_surface param 2021-06-20 17:39:18 +08:00
Justin Lin
ad1b0c898a delete tests 2021-06-20 17:25:48 +08:00
Justin Lin
ac5c850aa9 use sf_splines 2021-06-20 17:21:49 +08:00
Justin Lin
e8619fe3ff use sf_splines 2021-06-20 17:20:31 +08:00
Justin Lin
db9a43e073 use is_undef 2021-06-20 17:15:42 +08:00
Justin Lin
d0acef0cf8 rename 2021-06-20 15:49:23 +08:00
Justin Lin
81413584ad add direction param 2021-06-20 15:29:01 +08:00
Justin Lin
3ba9e6a3ce use sf_solidify 2021-06-20 14:52:56 +08:00
Justin Lin
0aea981273 use sf_thicken 2021-06-20 14:44:36 +08:00
Justin Lin
4db960af36 use sf_thicken 2021-06-20 14:42:43 +08:00
Justin Lin
32478aa942 add sf_thicken 2021-06-20 14:41:07 +08:00
Justin Lin
4a5251579e fix surface error 2021-06-20 14:40:27 +08:00
Justin Lin
7d1f168102 change params 2021-06-16 12:14:24 +08:00
Justin Lin
0607811c6c stick offset 2021-06-16 12:01:58 +08:00
Justin Lin
179804d936 remove base ring 2021-06-16 11:59:33 +08:00
Justin Lin
cd99e2d4dd remove base ring 2021-06-16 11:54:24 +08:00
Justin Lin
0279738e41 thicker 2021-06-16 10:57:41 +08:00
Justin Lin
9dccb65ad2 thicker 2021-06-16 10:57:00 +08:00
Justin Lin
89ec4df583 add base 2021-06-16 10:17:49 +08:00
Justin Lin
88132600fe change params 2021-06-16 08:58:22 +08:00
Justin Lin
9f44991ccf change params 2021-06-15 20:36:57 +08:00
Justin Lin
6303d19cbf change params 2021-06-15 20:32:57 +08:00
Justin Lin
0f5fb100cc change params 2021-06-15 20:32:49 +08:00
Justin Lin
036a84606f rename 2021-06-15 14:29:52 +08:00
Justin Lin
a5c5f7b15e add fidget_star 2021-06-15 13:03:56 +08:00
Justin Lin
ffec5dba60 rename 2021-06-15 10:02:34 +08:00
Justin Lin
57543b1791 add doc 2021-06-15 09:58:46 +08:00
Justin Lin
f6de4f31d4 rename 2021-06-11 10:04:56 +08:00
Justin Lin
abe2fe661a add base 2021-06-07 11:31:57 +08:00
Justin Lin
9e25b59584 change param 2021-06-06 09:39:43 +08:00
Justin Lin
a592755390 update README 2021-06-05 13:17:47 +08:00
Justin Lin
34b49281c8 rename 2021-06-05 13:17:42 +08:00
Justin Lin
b8dbe53756 change param 2021-06-03 10:19:42 +08:00
Justin Lin
6330473ea7 rename 2021-06-03 09:21:04 +08:00
Justin Lin
2c02c0ff59 add sf_splines 2021-06-02 17:26:21 +08:00
Justin Lin
3e51eb9afe it requires no modules 2021-06-02 13:17:29 +08:00
Justin Lin
e207aea55f update param 2021-06-02 12:45:22 +08:00
Justin Lin
ceb704f943 update param 2021-06-02 10:51:22 +08:00
Justin Lin
f356842f9c add thickness_offset_factor 2021-06-02 10:46:21 +08:00
Justin Lin
32c407ff0b fix d error 2021-06-01 17:18:03 +08:00
Justin Lin
009230c8f8 fix end 2021-06-01 15:49:47 +08:00
Justin Lin
9f4ede7e29 add spiral_polygon_fidget 2021-06-01 06:43:33 +08:00
Justin Lin
047f82a9a3 update doc 2021-05-30 17:22:51 +08:00
Justin Lin
9762822c11 add doc 2021-05-30 17:18:53 +08:00
Justin Lin
4a80dc87d3 use pow 2 to compare 2021-05-30 13:23:30 +08:00
Justin Lin
e1df07da37 update README 2021-05-29 09:56:38 +08:00
Justin Lin
8865d1cf36 update README 2021-05-29 09:56:10 +08:00
Justin Lin
a319a0e680 rename 2021-05-29 09:54:17 +08:00
Justin Lin
639f3befac add filled_thicnkess param 2021-05-27 12:00:09 +08:00
Justin Lin
98d66acb4f fix x dir 2021-05-27 11:48:56 +08:00
Justin Lin
ea5b08b7dd add torus_knot_maze 2021-05-27 11:27:17 +08:00
Justin Lin
fd51f696ff rename var 2021-05-27 09:18:31 +08:00
Justin Lin
80014fbcf7 add mask hook 2021-05-24 09:50:01 +08:00
Justin Lin
eb86524787 add spiral_maze 2021-05-23 11:28:07 +08:00
Justin Lin
bba2ae4f0f consider y dir curve 2021-05-22 20:10:25 +08:00
Justin Lin
4f0b530e39 add example 2021-05-22 12:26:54 +08:00
Justin Lin
623c24c66b use middle point 2021-05-22 12:24:02 +08:00
Justin Lin
22c6174812 resample 2021-05-22 12:08:36 +08:00
Justin Lin
85449ed29e add sf_curve 2021-05-22 12:07:08 +08:00
Justin Lin
6d9e2d0822 add error message 2021-05-16 09:50:53 +08:00
Justin Lin
f2bf6bcaba add images 2021-05-15 09:36:52 +08:00
Justin Lin
51532e09c0 add docs 2021-05-15 09:33:25 +08:00
Justin Lin
52696f518c update example 2021-05-15 09:28:01 +08:00
Justin Lin
ce475031b0 add doc 2021-05-15 09:18:29 +08:00
Justin Lin
4e0d3e8d28 add parameters 2021-05-08 12:00:29 +08:00
Justin Lin
512c1b9c7d add distorted_vase 2021-05-08 11:34:54 +08:00
Justin Lin
045db5889d cal rr directly 2021-05-07 10:43:10 +08:00
Justin Lin
a15f98dafb fix hash bugs 2021-05-07 10:32:39 +08:00
Justin Lin
c59b35fd81 keep hash code 2021-05-07 08:50:40 +08:00
Justin Lin
a42f758f35 pass function 2021-05-07 08:00:30 +08:00
Justin Lin
d4dbbc7952 use indicesOfCell 2021-05-06 19:10:55 +08:00
Justin Lin
003a13c247 mult constant value 2021-05-06 18:02:32 +08:00
Justin Lin
5e70eef142 _indices_hash is faster 2021-05-06 17:38:36 +08:00
Justin Lin
c0ad7be8b0 add doc 2021-05-06 13:22:31 +08:00
Justin Lin
6044aaeb75 require int 2021-05-03 18:03:03 +08:00
Justin Lin
d92ca8161a don't cal len repeatly 2021-05-03 17:25:45 +08:00
Justin Lin
3480f9be06 don't cal len repeatly 2021-05-03 17:15:33 +08:00
Justin Lin
5defe6e218 add doc 2021-05-03 16:47:36 +08:00
Justin Lin
58eaccf998 use ^ 2021-05-02 18:33:33 +08:00
Justin Lin
665b90ee3c update readme 2021-05-01 09:42:04 +08:00
Justin Lin
53dc3fd81e update README 2021-05-01 09:40:40 +08:00
Justin Lin
9a82b9901b update readme 2021-05-01 09:37:02 +08:00
Justin Lin
662915c805 add tri_circumcenter 2021-04-25 17:54:05 +08:00
Justin Lin
056a09920c remove rr 2021-04-25 17:46:55 +08:00
Justin Lin
332ea57577 use _tri_circumcircle 2021-04-25 17:45:55 +08:00
Justin Lin
c8aaea8e1f use _tri_circumcircle 2021-04-25 17:45:45 +08:00
Justin Lin
5af03c2eb4 rename 2021-04-25 17:44:40 +08:00
Justin Lin
d49f9fbeec rename 2021-04-25 17:42:59 +08:00
Justin Lin
ef6a1d1d1c rename 2021-04-25 17:42:49 +08:00
Justin Lin
08060db897 rename 2021-04-25 17:33:32 +08:00
Justin Lin
20fcbfaee7 add delaunay_fibonacci 2021-04-25 17:17:51 +08:00
Justin Lin
a9b088af90 add tri_incentre 2021-04-25 17:17:13 +08:00
Justin Lin
76e6ecaa6c update demo 2021-04-25 11:34:29 +08:00
Justin Lin
3b090cbc95 update example 2021-04-25 11:31:06 +08:00
Justin Lin
7991f86144 update doc 2021-04-24 12:00:12 +08:00
Justin Lin
53c82c6308 use delaunay to voronoi 2021-04-24 11:57:45 +08:00
Justin Lin
90c0552c19 update demo 2021-04-24 11:49:18 +08:00
Justin Lin
962c98f7d0 move into triangle dir 2021-04-24 11:47:31 +08:00
Justin Lin
209ba9cc01 add ret param 2021-04-24 10:05:38 +08:00
Justin Lin
baf64e47b8 use for directly 2021-04-23 21:56:13 +08:00
Justin Lin
d18665329f use for directly 2021-04-23 21:38:33 +08:00
Justin Lin
e2d9643e72 use for directly 2021-04-23 21:27:06 +08:00
Justin Lin
1004fad157 use for directly 2021-04-23 21:20:36 +08:00
Justin Lin
3921f1e2ce use for directly 2021-04-23 21:15:38 +08:00
Justin Lin
34b4dd761b delete variable 2021-04-23 20:53:43 +08:00
Justin Lin
2035dc2bb7 UPDATE README 2021-04-23 18:22:04 +08:00
Justin Lin
7cabed710d update README 2021-04-23 18:20:54 +08:00
Justin Lin
6f9d01659f update README 2021-04-23 18:13:38 +08:00
Justin Lin
334f7132d0 remove stack_pop 2021-04-23 14:34:39 +08:00
Justin Lin
4d1e2b9345 re-write stack 2021-04-23 13:33:11 +08:00
Justin Lin
99a0ee4159 use power operator 2021-04-23 08:20:13 +08:00
Justin Lin
b6eb09dc65 sum up totalWeights directly 2021-04-23 08:02:14 +08:00
Justin Lin
675a3ef519 format 2021-04-23 07:58:13 +08:00
Justin Lin
843e03ce18 performance improved 2021-04-23 07:52:38 +08:00
Justin Lin
f2b69a9ce0 performance improved 2021-04-23 07:11:56 +08:00
Justin Lin
a4e73b0cee remove unused functions 2021-04-22 21:19:49 +08:00
Justin Lin
159c668e87 performance improved 2021-04-22 21:15:37 +08:00
Justin Lin
e3b1e82cc8 add voronoi_taiwan 2021-04-18 17:01:09 +08:00
Justin Lin
81cad42db7 update README 2021-04-18 16:55:21 +08:00
Justin Lin
8ac2f973cc discard 2021-04-18 16:41:07 +08:00
Justin Lin
6468746766 performance improved 2021-04-18 11:03:07 +08:00
Justin Lin
7b07fa981c counter-clockwise 2021-04-18 10:49:45 +08:00
Justin Lin
97e2c50dee discard 2021-04-18 10:49:39 +08:00
Justin Lin
252eb53be4 performance improved 2021-04-17 22:13:28 +08:00
Justin Lin
49f66cded2 performance improved 2021-04-17 22:00:24 +08:00
Justin Lin
5b76beed2f clean use 2021-04-17 21:14:54 +08:00
Justin Lin
cf9c312106 change default value 2021-04-17 18:39:45 +08:00
Justin Lin
3a328e99e8 update 2021-04-17 18:16:22 +08:00
Justin Lin
996cd35daa update demo 2021-04-17 18:11:11 +08:00
Justin Lin
dba9fd8895 add "VORONOI_CELLS" 2021-04-17 18:08:36 +08:00
Justin Lin
99f260b372 refactor 2021-04-17 18:07:05 +08:00
Justin Lin
5ba4a37089 refactor 2021-04-17 18:04:04 +08:00
Justin Lin
bbc0705602 rename 2021-04-17 17:57:58 +08:00
Justin Lin
9609e8f25f refactor 2021-04-17 17:49:06 +08:00
Justin Lin
1129f7aaba update note 2021-04-17 16:53:09 +08:00
Justin Lin
bc2421a9d9 discard 2021-04-17 16:52:36 +08:00
Justin Lin
fdc09bc8be format 2021-04-16 20:29:03 +08:00
Justin Lin
e47a8bb405 add tri_delaunay2voronoi 2021-04-16 18:29:37 +08:00
Justin Lin
abad26feae format 2021-04-16 18:28:16 +08:00
Justin Lin
1f7555fcea update comments 2021-04-16 18:17:13 +08:00
Justin Lin
fc64bd31c7 update ret 2021-04-16 14:24:11 +08:00
Justin Lin
b171250548 re-implement tri_delaunay 2021-04-16 14:18:36 +08:00
Justin Lin
18287b88ba update doc 2021-04-16 07:49:48 +08:00
Justin Lin
ce78bd20b9 update README 2021-04-15 21:15:10 +08:00
Justin Lin
710d068e1f update README 2021-04-10 21:25:29 +08:00
Justin Lin
6d235c0f0c update README 2021-04-10 21:20:01 +08:00
Justin Lin
7ea045bf11 update README 2021-04-10 21:18:46 +08:00
Justin Lin
1650d7a27b update README 2021-04-10 21:07:27 +08:00
Justin Lin
b10b23cc7e update README 2021-04-10 18:51:13 +08:00
Justin Lin
cfc528faf4 update doc 2021-04-10 16:41:50 +08:00
Justin Lin
9462d7c009 update doc 2021-04-10 16:33:07 +08:00
Justin Lin
85d155e7cb update doc 2021-04-10 16:30:04 +08:00
Justin Lin
c2081de452 update doc 2021-04-10 16:16:59 +08:00
Justin Lin
f4e4d366d3 fix typo 2021-04-09 11:36:08 +08:00
Justin Lin
a57b6d51be fix typo 2021-04-09 11:30:40 +08:00
Justin Lin
63259fac0d update doc 2021-04-08 11:28:38 +08:00
Justin Lin
48ad3d67ac update README 2021-04-06 15:03:32 +08:00
Justin Lin
cf7cfeb839 add function signatures 2021-04-06 14:56:58 +08:00
Justin Lin
ea8a5d87ed return pow 2 of radius 2021-04-02 16:08:51 +08:00
648 changed files with 14766 additions and 6145 deletions

View File

@@ -1,7 +1,7 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="84" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="84" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h47v20H0z"/><path fill="#007ec6" d="M47 0h37v20H47z"/><path fill="url(#b)" d="M0 0h84v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="23.5" y="15" fill="#010101" fill-opacity=".3">license</text><text x="23.5" y="14">license</text><text x="64.5" y="15" fill="#010101" fill-opacity=".3">LGPL</text><text x="64.5" y="14">LGPL</text></g></svg>

Before

Width:  |  Height:  |  Size: 793 B

537
README.md
View File

@@ -1,32 +1,28 @@
# dotSCAD 3.0
# dotSCAD 3.2.1
> **Reduce the burden of mathematics/algorithm when playing OpenSCAD.**
![dotSCAD](featured_img/RandomCityTaiwan.JPG)
[![license/LGPL](LICENSE.svg)](https://github.com/JustinSDK/lib-openscad/blob/master/LICENSE)
![dotSCAD](featured_img/Owls.JPG)
## Introduction
**This version Breaks Backward Compatibility and requires OpenSCAD 2021.01 or later!! Please see [Release Notes](RELEASE.md). You can still download v2.5 or older versions from [Releases](https://github.com/JustinSDK/dotSCAD/tags).**
Some of my [3D models](https://github.com/JustinSDK/dotSCAD#examples) require complex mathematics/algorithm. I extract them into dotSCAD. Hope it helps when you're playing OpenSCAD.
The idea of the name dotSCAD comes from the filename extension ".scad" of OpenSCAD.
## Get Started
## Getting started
OpenSCAD uses three library locations, the installation library, built-in library, and user defined libraries. It's convenient to set `OPENSCADPATH`. Check [Setting OPENSCADPATH](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries#Setting_OPENSCADPATH) in [OpenSCAD User Manual/Libraries](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries) for details.
OpenSCAD uses three library locations, the installation library, built-in library, and user defined libraries. Check [Setting OPENSCADPATH](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries#Setting_OPENSCADPATH) in [OpenSCAD User Manual/Libraries](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries) for details.
**I set `OPENSCADPATH` to the `src` folder of dotSCAD so all examples here start searching modules or functions from `src`.**
**I set `OPENSCADPATH` to the `src` folder of dotSCAD so all examples here start searching modules/functions from `src`.**
Every module or function is located in the file which has the same name as the module or the function. For example, if you want to use the `line2d` module to draw a line, `use <line2d.scad>;` first.
Every public module/function has the same name as the .scad file. Here's an example using the `line2d` module:
use <line2d.scad>;
line2d(p1 = [0, 0], p2 = [5, 0], width = 1);
Some module files are organized in a directory. For example, px_circle.scad exists in `pixel` directory. You have to prefix the directory name when including `px_circle`.
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>;
@@ -41,232 +37,339 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
[![examples](examples/images/gallery.JPG)](examples#dogfooding-examples)
## Documentation
# API Reference
### 2D Module
- [arc](https://openhome.cc/eGossip/OpenSCAD/lib3x-arc.html)
- [hexagons](https://openhome.cc/eGossip/OpenSCAD/lib3x-hexagons.html)
- [hull_polyline2d](https://openhome.cc/eGossip/OpenSCAD/lib3x-hull_polyline2d.html)
- [line2d](https://openhome.cc/eGossip/OpenSCAD/lib3x-line2d.html)
- [multi_line_text](https://openhome.cc/eGossip/OpenSCAD/lib3x-multi_line_text.html)
- [pie](https://openhome.cc/eGossip/OpenSCAD/lib3x-pie.html)
- [polyline2d](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyline2d.html)
- [polygon_hull](https://openhome.cc/eGossip/OpenSCAD/lib3x-polygon_hull.html)
- [rounded_square](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_square.html)
## 2D Module
### 3D Module
- [crystal_ball](https://openhome.cc/eGossip/OpenSCAD/lib3x-crystal_ball.html)
- [function_grapher](https://openhome.cc/eGossip/OpenSCAD/lib3x-function_grapher.html)
- [hull_polyline3d](https://openhome.cc/eGossip/OpenSCAD/lib3x-hull_polyline3d.html)
- [line3d](https://openhome.cc/eGossip/OpenSCAD/lib3x-line3d.html)
- [loft](https://openhome.cc/eGossip/OpenSCAD/lib3x-loft.html)
- [polyhedron_hull](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedron_hull.html)
- [polyline3d](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyline3d.html)
- [rounded_cube](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_cube.html)
- [rounded_cylinder](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_cylinder.html)
- [starburst](https://openhome.cc/eGossip/OpenSCAD/lib3x-starburst.html)
- [sweep](https://openhome.cc/eGossip/OpenSCAD/lib3x-sweep.html)
Signature | Description
--|--
[**arc**(radius, angle[, width, width_mode"])](https://openhome.cc/eGossip/OpenSCAD/lib3x-arc.html) | create an arc.
[**hexagons**(radius, spacing, levels)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hexagons.html) | create hexagons in a hexagon.
[**line2d**(p1, p2[, width, p1Style, p2Style])](https://openhome.cc/eGossip/OpenSCAD/lib3x-line2d.html) | create a line from two points.
[**multi_line_text**(lines[, line_spacing, size, font, ...])](https://openhome.cc/eGossip/OpenSCAD/lib3x-multi_line_text.html) | create multi-line text from a list of strings.
[**pie**(radius, angle)](https://openhome.cc/eGossip/OpenSCAD/lib3x-pie.html) | create polyline2de a pie (circular sector).
[**polyline2d**(points[, width, startingStyle, endingStyle, ...])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyline2d.html) | create a polyline from a list of `[x, y]` coordinates.
[**polygon_hull**(points)](https://openhome.cc/eGossip/OpenSCAD/lib3x-polygon_hull.html) | create a convex polygon by hulling a list of points. It avoids using hull and small 2D primitives to create the polygon.
[**rounded_square**(size, corner_r[, center])](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_square.html) | create a rounded square in the first quadrant.
### Transformation
- [along_with](https://openhome.cc/eGossip/OpenSCAD/lib3x-along_with.html)
- [bend](https://openhome.cc/eGossip/OpenSCAD/lib3x-bend.html)
- [hollow_out](https://openhome.cc/eGossip/OpenSCAD/lib3x-hollow_out.html)
- [shear](https://openhome.cc/eGossip/OpenSCAD/lib3x-shear.html)
## 3D Module
### 2D Function
- [bijection_offset](https://openhome.cc/eGossip/OpenSCAD/lib3x-bijection_offset.html)
- [contours](https://openhome.cc/eGossip/OpenSCAD/lib3x-contours.html)
- [in_shape](https://openhome.cc/eGossip/OpenSCAD/lib3x-in_shape.html)
- [trim_shape](https://openhome.cc/eGossip/OpenSCAD/lib3x-trim_shape.html)
Signature | Description
--|--
[**crystal_ball**(radius[, theta, phi, thickness])](https://openhome.cc/eGossip/OpenSCAD/lib3x-crystal_ball.html) | create a crystal ball based on [spherical coordinates (r, θ, φ) used in mathematics](https://en.wikipedia.org/wiki/Spherical_coordinate_system).
[**line3d**(p1, p2[, diameter, p1Style, p2Style])](https://openhome.cc/eGossip/OpenSCAD/lib3x-line3d.html) | create a 3D line from two points.
[**loft**(sections[, slices])](https://openhome.cc/eGossip/OpenSCAD/lib3x-loft.html) | develop a smooth skin between crosssections with different geometries.
[**polyhedron_hull**(points)](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedron_hull.html) | create a convex polyhedron by hulling a list of points. It avoids using `hull` and small 3D primitives to create the polyhedron.
[**polyline3d**(points, diameter[, startingStyle, endingStyle])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyline3d.html) | create a polyline from a list of `[x, y, z]`.
[**rounded_cube**(size, corner_r[, center])](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_cube.html) | create a cube in the first octant.
[**rounded_cylinder**(radius, h, round_r[, convexity, center])](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_cylinder.html) | create a rounded cylinder.
[**sweep**(sections[, triangles])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sweep.html) | develop a smooth skin from crosssections with the same number of sides.
### 2D/3D Function
- [angle_between](https://openhome.cc/eGossip/OpenSCAD/lib3x-angle_between.html)
- [bezier_surface](https://openhome.cc/eGossip/OpenSCAD/lib3x-bezier_surface.html)
- [bezier_smooth](https://openhome.cc/eGossip/OpenSCAD/lib3x-bezier_smooth.html)
- [cross_sections](https://openhome.cc/eGossip/OpenSCAD/lib3x-cross_sections.html)
- [in_polyline](https://openhome.cc/eGossip/OpenSCAD/lib3x-in_polyline.html)
- [lines_intersection](https://openhome.cc/eGossip/OpenSCAD/lib3x-lines_intersection.html)
- [paths2sections](https://openhome.cc/eGossip/OpenSCAD/lib3x-paths2sections.html)
- [path_scaling_sections](https://openhome.cc/eGossip/OpenSCAD/lib3x-path_scaling_sections.html)
- [midpt_smooth](https://openhome.cc/eGossip/OpenSCAD/lib3x-midpt_smooth.html)
## Transformation
### Path
- [arc_path](https://openhome.cc/eGossip/OpenSCAD/lib3x-arc_path.html)
- [archimedean_spiral](https://openhome.cc/eGossip/OpenSCAD/lib3x-archimedean_spiral.html)
- [bauer_spiral](https://openhome.cc/eGossip/OpenSCAD/lib3x-bauer_spiral.html)
- [bezier_curve](https://openhome.cc/eGossip/OpenSCAD/lib3x-bezier_curve.html)
- [bspline_curve](https://openhome.cc/eGossip/OpenSCAD/lib3x-bspline_curve.html)
- [curve](https://openhome.cc/eGossip/OpenSCAD/lib3x-curve.html)
- [fibonacci_lattice](https://openhome.cc/eGossip/OpenSCAD/lib3x-fibonacci_lattice.html)
- [golden_spiral](https://openhome.cc/eGossip/OpenSCAD/lib3x-golden_spiral.html)
- [helix](https://openhome.cc/eGossip/OpenSCAD/lib3x-helix.html)
- [sphere_spiral](https://openhome.cc/eGossip/OpenSCAD/lib3x-sphere_spiral.html)
- [torus_knot](https://openhome.cc/eGossip/OpenSCAD/lib3x-torus_knot.html)
Signature | Description
--|--
[**along_with**(points, angles[, twist, scale, method])](https://openhome.cc/eGossip/OpenSCAD/lib3x-along_with.html) | put children along the given path. If there's only one child, put the child for each point.
[**bend**(size, angle[, frags])](https://openhome.cc/eGossip/OpenSCAD/lib3x-bend.html) | bend a 3D object.
[**hollow_out**(shell_thickness) ](https://openhome.cc/eGossip/OpenSCAD/lib3x-hollow_out.html)| hollow out a 2D object.
[**shear**([sx, sy, sz])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shear.html) | shear all child elements along the X-axis, Y-axis, or Z-axis.
[**select**(i)](https://openhome.cc/eGossip/OpenSCAD/lib3x-select.html) | select module objects.
[**polyline_join**(points)](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyline_join.html) | place a join on each point. Hull each pair of joins and union all convex hulls.
### Extrusion
- [bend_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-bend_extrude.html)
- [box_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-box_extrude.html)
- [ellipse_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-ellipse_extrude.html)
- [rounded_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_extrude.html)
- [stereographic_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-stereographic_extrude.html)
## 2D Function
### 2D Shape
- [shape_arc](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_arc.html)
- [shape_circle](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_circle.html)
- [shape_cyclicpolygon](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_cyclicpolygon.html)
- [shape_ellipse](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_ellipse.html)
- [shape_liquid_splitting](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_liquid_splitting.html)
- [shape_path_extend](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_path_extend.html)
- [shape_pentagram](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_pentagram.html)
- [shape_pie](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_pie.html)
- [shape_square](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_square.html)
- [shape_starburst](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_starburst.html)
- [shape_superformula](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_superformula.html)
- [shape_taiwan](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_taiwan.html)
- [shape_trapezium](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_trapezium.html)
Signature | Description
--|--
[**bijection_offset**(pts, d[, epsilon])](https://openhome.cc/eGossip/OpenSCAD/lib3x-bijection_offset.html) | move 2D outlines outward or inward by a given amount. Each point of the offsetted shape is paired with exactly one point of the original shape.
[**contours**(points, threshold)](https://openhome.cc/eGossip/OpenSCAD/lib3x-contours.html) | compute contour polygons by applying [marching squares](https://en.wikipedia.org/wiki/Marching_squares) to a rectangular list of numeric values.
[**in_shape**(shapt_pts, pt[, include_edge, epsilon])](https://openhome.cc/eGossip/OpenSCAD/lib3x-in_shape.html) | check whether a point is inside a shape.
[**trim_shape**(shape_pts, from, to[, epsilon])](https://openhome.cc/eGossip/OpenSCAD/lib3x-trim_shape.html) | trim a tangled-edge shape to a non-tangled shape.
### 2D Shape Extrusion
- [archimedean_spiral_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-archimedean_spiral_extrude.html)
- [golden_spiral_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-golden_spiral_extrude.html)
- [helix_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-helix_extrude.html)
- [path_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-path_extrude.html)
- [ring_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-ring_extrude.html)
- [sphere_spiral_extrude](https://openhome.cc/eGossip/OpenSCAD/lib3x-sphere_spiral_extrude.html)
## 2D/3D Function
### Util
- list
- [util/bsearch](https://openhome.cc/eGossip/OpenSCAD/lib3x-bsearch.html)
- [util/has](https://openhome.cc/eGossip/OpenSCAD/lib3x-has.html)
- [util/find_index](https://openhome.cc/eGossip/OpenSCAD/lib3x-find_index.html)
- [util/dedup](https://openhome.cc/eGossip/OpenSCAD/lib3x-dedup.html)
- [util/flat](https://openhome.cc/eGossip/OpenSCAD/lib3x-flat.html)
- [util/reverse](https://openhome.cc/eGossip/OpenSCAD/lib3x-reverse.html)
- [util/slice](https://openhome.cc/eGossip/OpenSCAD/lib3x-slice.html)
- [util/sort](https://openhome.cc/eGossip/OpenSCAD/lib3x-sort.html)
- [util/sum](https://openhome.cc/eGossip/OpenSCAD/lib3x-sum.html)
- [util/swap](https://openhome.cc/eGossip/OpenSCAD/lib3x-swap.html)
- [util/zip](https://openhome.cc/eGossip/OpenSCAD/lib3x-zip.html)
- [util/every](https://openhome.cc/eGossip/OpenSCAD/lib3x-every.html)
- [util/some](https://openhome.cc/eGossip/OpenSCAD/lib3x-some.html)
- random
- [util/choose](https://openhome.cc/eGossip/OpenSCAD/lib3x-choose.html)
- [util/rand](https://openhome.cc/eGossip/OpenSCAD/lib3x-rand.html)
- [util/shuffle](https://openhome.cc/eGossip/OpenSCAD/lib3x-shuffle.html)
- string
- [util/parse_number](https://openhome.cc/eGossip/OpenSCAD/lib3x-parse_number.html)
- [util/split_str](https://openhome.cc/eGossip/OpenSCAD/lib3x-split_str.html)
- [util/sub_str](https://openhome.cc/eGossip/OpenSCAD/lib3x-sub_str.html)
- math
- [util/degrees](https://openhome.cc/eGossip/OpenSCAD/lib3x-degrees.html)
- [util/radians](https://openhome.cc/eGossip/OpenSCAD/lib3x-radians.html)
- [util/polar_coordinate](https://openhome.cc/eGossip/OpenSCAD/lib3x-polar_coordinate.html)
- [util/spherical_coordinate](https://openhome.cc/eGossip/OpenSCAD/lib3x-spherical_coordinate.html)
- [util/lerp](https://openhome.cc/eGossip/OpenSCAD/lib3x-lerp.html)
- [util/fibseq](https://openhome.cc/eGossip/OpenSCAD/lib3x-fibseq.html)
- set
- [util/set/hashset](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset.html)
- [util/set/hashset_add](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_add.html)
- [util/set/hashset_has](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_has.html)
- [util/set/hashset_del](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_del.html)
- [util/set/hashset_len](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_len.html)
- [util/set/hashset_elems](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_elems.html)
- map
- [util/map/hashmap](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap.html)
- [util/map/hashmap_put](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_put.html)
- [util/map/hashmap_get](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_get.html)
- [util/map/hashmap_del](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_del.html)
- [util/map/hashmap_len](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_len.html)
- [util/map/hashmap_keys](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_keys.html)
- [util/map/hashmap_values](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_values.html)
- [util/map/hashmap_entries](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_entries.html)
Signature | Description
--|--
[**angle_between**(vt1, vt2)](https://openhome.cc/eGossip/OpenSCAD/lib3x-angle_between.html) | return the angle between two vectors.
[**bezier_smooth**(path_pts, round_d[, t_step, closed, angle_threshold])](https://openhome.cc/eGossip/OpenSCAD/lib3x-bezier_smooth.html) | use bezier curves to smooth a path.
[**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.
### Matrix
- [matrix/m_determinant](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_determinant.html)
- [matrix/m_mirror](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_mirror.html)
- [matrix/m_rotation](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_rotation.html)
- [matrix/m_scaling](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_scaling.html)
- [matrix/m_shearing](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_shearing.html)
- [matrix/m_translation](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_translation.html)
## Path
### Point Transformation
- [ptf/ptf_bend](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_bend.html)
- [ptf/ptf_circle](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_circle.html)
- [ptf/ptf_ring](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_ring.html)
- [ptf/ptf_rotate](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_rotate.html)
- [ptf/ptf_sphere](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_sphere.html)
- [ptf/ptf_torus](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_torus.html)
- [ptf/ptf_x_twist](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_x_twist.html)
- [ptf/ptf_y_twist](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_y_twist.html)
Signature | Description
--|--
[**arc_path**(radius, angle)](https://openhome.cc/eGossip/OpenSCAD/lib3x-arc_path.html) | create an arc path.
[**archimedean_spiral**(arm_distance, init_angle, point_distance, num_of_points[, rt_dir])](https://openhome.cc/eGossip/OpenSCAD/lib3x-archimedean_spiral.html) | get all points and angles on the path of an archimedean spiral.
[**bauer_spiral**(n, radius = 1[, rt_dir])](https://openhome.cc/eGossip/OpenSCAD/lib3x-bauer_spiral.html) | create visually even spacing of n points on the surface of the sphere. Successive points will all be approximately the same distance apart.
[**bezier_curve**(t_step, points)](https://openhome.cc/eGossip/OpenSCAD/lib3x-bezier_curve.html) | given a set of control points, this function returns points of the Bézier path.
[**bspline_curve**(t_step, degree, points, knots, weights)](https://openhome.cc/eGossip/OpenSCAD/lib3x-bspline_curve.html) | B-spline interpolation using [de Boor's algorithm](https://en.wikipedia.org/wiki/De_Boor%27s_algorithm).
[**curve**(t_step, points[, tightness])](https://openhome.cc/eGossip/OpenSCAD/lib3x-curve.html) | create a curved path. An implementation of [Centripetal Catmull-Rom spline](https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline).
[**fibonacci_lattice**(n, radius = 1[, dir])](https://openhome.cc/eGossip/OpenSCAD/lib3x-fibonacci_lattice.html) | create visually even spacing of n points on the surface of the sphere. Nearest-neighbor points will all be approximately the same distance apart.
[**golden_spiral**(from, to, point_distance[, rt_dir)]](https://openhome.cc/eGossip/OpenSCAD/lib3x-golden_spiral.html) | get all points and angles on the path of a golden spiral based on Fibonacci numbers. The distance between two points is almost constant.
[**helix**(radius, levels, level_dist[, vt_dir, rt_dir])](https://openhome.cc/eGossip/OpenSCAD/lib3x-helix.html) | get all points on the path of a spiral around a cylinder.
[**sphere_spiral**(radius, za_step[, z_circles, begin_angle, end_angle, ...]) ](https://openhome.cc/eGossip/OpenSCAD/lib3x-sphere_spiral.html)| create all points and angles on the path of a spiral around a sphere. It returns a vector of `[[x, y, z], [ax, ay, az]]`.
[**torus_knot**(p, q, phi_step)](https://openhome.cc/eGossip/OpenSCAD/lib3x-torus_knot.html) | generate a path of [The (p,q)-torus knot](https://en.wikipedia.org/wiki/Torus_knot).
## Extrusion
Signature | Description
--|--
[**bend_extrude**(size, thickness, angle[, frags])](https://openhome.cc/eGossip/OpenSCAD/lib3x-bend_extrude.html) | extrude and bend a 2D shape.
[**box_extrude**(height, shell_thickness, bottom_thickness[, offset_mode, chamfer, ...])](https://openhome.cc/eGossip/OpenSCAD/lib3x-box_extrude.html) | create a box (container) from a 2D object.
[**ellipse_extrude**(semi_minor_axis, height[, center, convexity, twist, slices])](https://openhome.cc/eGossip/OpenSCAD/lib3x-ellipse_extrude.html) | extrude a 2D object along the path of an ellipse from 0 to 180 degrees.
[**rounded_extrude**(size, round_r[, angle, twist, convexity])](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_extrude.html) | extrude a 2D object roundly from 0 to 180 degrees.
[**stereographic_extrude**(shadow_side_leng)](https://openhome.cc/eGossip/OpenSCAD/lib3x-stereographic_extrude.html) | take a 2D polygon as input and extend it onto a sphere.
## 2D Shape
Signature | Description
--|--
[**shape_arc**(radius, angle, width[, width_mode])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_arc.html) | return points on the path of an arc shape.
[**shape_circle**(radius, n)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_circle.html) | return points on the path of a circle.
[**shape_cyclicpolygon**(sides, circle_r, corner_r)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_cyclicpolygon.html) | return points on the path of a regular cyclic polygon.
[**shape_ellipse**(axes)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_ellipse.html) | return points on the path of an ellipse.
[**shape_liquid_splitting**(radius, centre_dist[, tangent_angle, t_step])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_liquid_splitting.html) | return shape points of two splitting liquid shapes, kind of how cells divide.
[**shape_path_extend**(stroke_pts, path_pts[, scale, closed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_path_extend.html) | extend a 2D stroke along a path to create a 2D shape.
[**shape_pentagram**(r)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_pentagram.html) | return shape points of a pentagram.
[**shape_pie**(radius, angle)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_pie.html) | return shape points of a pie (circular sector) shape.
[**shape_square**(size[, corner_r])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_square.html) | return shape points of a rounded square or rectangle.
[**shape_star**([outer_radius, inner_radius, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_star.html) | create a 2D star.
[**shape_superformula**(phi_step, m1, m2, n1, [n2, n3, a, b])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_superformula.html) | return shape points of [Superformula](https://en.wikipedia.org/wiki/Superformula).
[**shape_taiwan**(h[, distance])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_taiwan.html) | return shape points of [Taiwan](https://www.google.com.tw/maps?q=taiwan&um=1&ie=UTF-8&sa=X&ved=0ahUKEwjai9XrqurTAhVIopQKHbEHClwQ_AUICygC).
[**shape_trapezium**(length, h[, corner_r])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_trapezium.html) | return shape points of an isosceles trapezoid.
## 2D Shape Extrusion
Signature | Description
--|--
[**archimedean_spiral_extrude**(shape_pts, arm_distance, init_angle, point_distance, num_of_points, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-archimedean_spiral_extrude.html) | extrude a 2D shape along the path of an archimedean spiral.
[**golden_spiral_extrude**(shape_pts, from, to, point_distance, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-golden_spiral_extrude.html) | extrude a 2D shape along the path of a golden spiral.
[**helix_extrude**(shape_pts, radius, levels, level_dist, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-helix_extrude.html) | extrude a 2D shape along a helix path.
[**path_extrude**(shape_pts, path_pts, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-path_extrude.html) | extrude a 2D shape along a path.
[**ring_extrude**(shape_pts, radius[, angle = 360])](https://openhome.cc/eGossip/OpenSCAD/lib3x-ring_extrude.html) | rotational extrusion spins a 2D shape around the Z-axis.
[**sphere_spiral_extrude**(shape_pts, radius, za_step, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sphere_spiral_extrude.html) | extrude a 2D shape along the path of a sphere spiral.
## Util
### util/list
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/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/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/random
Signature | Description
--|--
[**util/choose**(choices, seed)](https://openhome.cc/eGossip/OpenSCAD/lib3x-choose.html) | choose an element from the given list.
[**util/rand**([min_value, max_value, seed_value])](https://openhome.cc/eGossip/OpenSCAD/lib3x-rand.html) | generate a pseudo random number.
[**util/shuffle**(lt[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shuffle.html) | randomizes the order of the elements.
### util/string
Signature | Description
--|--
[**util/parse_number**(t)](https://openhome.cc/eGossip/OpenSCAD/lib3x-parse_number.html) | parse the string argument as an number.
[**util/split_str**(t, delimiter)](https://openhome.cc/eGossip/OpenSCAD/lib3x-split_str.html) | split the given string around matches of the given delimiting character.
[**util/sub_str**(t, begin, end)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sub_str.html) | return the part of the string from `begin` to `end`, or to the `end` of the string (`end` not included).
### util/math
Signature | Description
--|--
[**util/degrees**(radians)](https://openhome.cc/eGossip/OpenSCAD/lib3x-degrees.html) | convert a radian measurement to the corresponding value in degrees.
[**util/radians**(degrees)](https://openhome.cc/eGossip/OpenSCAD/lib3x-radians.html) | convert a degree measurement to the corresponding value in radians.
[**util/polar_coordinate**(point)](https://openhome.cc/eGossip/OpenSCAD/lib3x-polar_coordinate.html) | convert from Cartesian to Polar coordinates.
[**util/spherical_coordinate**(point)](https://openhome.cc/eGossip/OpenSCAD/lib3x-spherical_coordinate.html) | convert from Cartesian to Spherical coordinates (used in mathematics).
[**util/lerp**(v1, v2, amt)](https://openhome.cc/eGossip/OpenSCAD/lib3x-lerp.html) | linear interpolate the vector v1 to v2.
[**util/fibseq**(from, to)](https://openhome.cc/eGossip/OpenSCAD/lib3x-fibseq.html) | generate a Fibonacci sequence.
### util/set
Signature | Description
--|--
[**util/set/hashset**(lt, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset.html) | model the mathematical set, backed by a hash table.
[**util/set/hashset_add**(set, elem, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_add.html) | add an element to a `hashset`.
[**util/set/hashset_has**(set, elem, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_has.html) | return `true` if a `hashset` contains the specified element.
[**util/set/hashset_del**(set, elem, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_del.html) | del an element from a `hashset`.
[**util/set/hashset_len**(set)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_len.html) | return the length of the elements in a `hashset`.
[**util/set/hashset_elems**(set)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashset_elems.html) | returns a list containing all elements in a `hashset`. No guarantees to the order.
### util/map
Signature | Description
--|--
[**util/map/hashmap**(kv_lt, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap.html) | map keys to values.
[**util/map/hashmap_put**(map, key, value, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_put.html) | put a key/value pair to a `hashmap`.
[**util/map/hashmap_get**(map, key, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_get.html) | get the value of the specified key from a `hashmap`.
[**util/map/hashmap_del**(map, key, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_del.html) | delete the mapping for the specified key from a `hashmap` if present.
[**util/map/hashmap_len**(map)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_len.html) | return the length of a `hashmap`.
[**util/map/hashmap_keys**(map)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_keys.html) | return a list containing all keys in a `hashmap`.
[**util/map/hashmap_values**(map)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_values.html) | return a list containing all values in a `hashmap`.
[**util/map/hashmap_entries**(map)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap_entries.html) | return a list containing all `[key, value]`s in a `hashmap`.
## Matrix
Signature | Description
--|--
[**matrix/m_determinant**(m)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_determinant.html) | calculate a determinant of a square matrix.
[**matrix/m_mirror**(v)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_mirror.html) | generate a transformation matrix which can pass into `multmatrix` to mirror the child element on a plane through the origin.
[**matrix/m_rotation**(a, v)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_rotation.html) | Generate a transformation matrix which can pass into `multmatrix` to rotate the child element about the axis of the coordinate system or around an arbitrary axis.
[**matrix/m_scaling**(s)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_scaling.html) | generate a transformation matrix which can pass into `multmatrix` to scale its child elements using the specified vector.
[**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.
## Point Transformation
Signature | Description
--|--
[**ptf/ptf_bend**(size, point, radius, angle)](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_bend.html) | transform a point inside a rectangle to a point of an arc.
[**ptf/ptf_circle**(size, point)](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_circle.html) | transform a point inside a rectangle to a point inside a circle.
[**ptf/ptf_ring**(size, point, radius[, angle, twist])](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_ring.html) | transform a point inside a rectangle to a point of a ring.
[**ptf/ptf_rotate**(point, a, v)](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_rotate.html) | rotate a point a degrees around the axis of the coordinate system or an arbitrary axis.
[**ptf/ptf_sphere**(size, point, radius[, angle])](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_sphere.html) | transform a point inside a rectangle to a point of a sphere.
[**ptf/ptf_torus**(size, point, radius[, angle, twist])](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_torus.html) | transform a point inside a rectangle to a point of a torus.
[**ptf/ptf_x_twist**(size, point, angle)](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_x_twist.html) | twist a point along the x-axis.
[**ptf/ptf_y_twist**(size, point, angle)](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_y_twist.html) | twist a point along the y-axis.
## Triangle
Signature | Description
--|--
[**triangle/tri_circumcenter**(shape_pts)](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_circumcenter.html) | return the circumcenter of a triangle.
[**triangle/tri_incenter**(shape_pts)](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_incenter.html) | return the incenter of a triangle.
[**triangle/tri_ear_clipping**(shape_pts[, ret, ...])](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_ear_clipping.html) | triangulation by [ear clipping](https://en.wikipedia.org/wiki/Polygon_triangulation#Ear_clipping_method).
[**triangle/tri_delaunay**(points[, ret])](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_delaunay.html) | Join a set of points to make a [Delaunay triangulation](https://en.wikipedia.org/wiki/Delaunay_triangulation).
[**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.
----
### Turtle
- [turtle/footprints2](https://openhome.cc/eGossip/OpenSCAD/lib3x-footprints2.html)
- [turtle/footprints3](https://openhome.cc/eGossip/OpenSCAD/lib3x-footprints3.html)
- [turtle/lsystem2](https://openhome.cc/eGossip/OpenSCAD/lib3x-lsystem2.html)
- [turtle/lsystem3](https://openhome.cc/eGossip/OpenSCAD/lib3x-lsystem3.html)
- [turtle/t2d](https://openhome.cc/eGossip/OpenSCAD/lib3x-t2d.html)
- [turtle/t3d](https://openhome.cc/eGossip/OpenSCAD/lib3x-t3d.html)
## Turtle
### Voxel
- [voxel/vx_ascii](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_ascii.html)
- [voxel/vx_bezier](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_bezier.html)
- [voxel/vx_contour](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_contour.html)
- [voxel/vx_circle](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_circle.html)
- [voxel/vx_curve](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_curve.html)
- [voxel/vx_cylinder](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_cylinder.html)
- [voxel/vx_difference](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_difference.html)
- [voxel/vx_from](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_from.html)
- [voxel/vx_gray](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_gray.html)
- [voxel/vx_intersection](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_intersection.html)
- [voxel/vx_line](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_line.html)
- [voxel/vx_polygon](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_polygon.html)
- [voxel/vx_polyline](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_polyline.html)
- [voxel/vx_sphere](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_sphere.html)
- [voxel/vx_union](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_union.html)
Signature | Description
--|--
[**turtle/footprints2**(cmds[, start])](https://openhome.cc/eGossip/OpenSCAD/lib3x-footprints2.html) | drive a turtle with `["forward", length]` or `["turn", angle]`. This function is intended to use a turtle to imitate freehand drawing.
[**turtle/footprints3**(cmds[, start])](https://openhome.cc/eGossip/OpenSCAD/lib3x-footprints3.html) | a 3D verion of `footprint2`.
[**turtle/lsystem2**(axiom, rules, n, angle[, leng, heading, ...])](https://openhome.cc/eGossip/OpenSCAD/lib3x-lsystem2.html) | 2D implementation of [L-system](https://en.wikipedia.org/wiki/L-system).
[**turtle/lsystem3**(axiom, rules, n, angle[, leng, heading, ...])](https://openhome.cc/eGossip/OpenSCAD/lib3x-lsystem3.html) | 3D implementation of [L-system](https://en.wikipedia.org/wiki/L-system).
[**turtle/t2d**(t, cmd, point, angle, leng)](https://openhome.cc/eGossip/OpenSCAD/lib3x-t2d.html) | an implementation of Turtle Graphics.
[**turtle/t3d**(t, cmd, point, unit_vectors, leng, angle)](https://openhome.cc/eGossip/OpenSCAD/lib3x-t3d.html) | a 3D version of `t2d`.
### Part
- [part/connector_peg](https://openhome.cc/eGossip/OpenSCAD/lib3x-connector_peg.html)
- [part/cone](https://openhome.cc/eGossip/OpenSCAD/lib3x-cone.html)
- [part/joint_T](https://openhome.cc/eGossip/OpenSCAD/lib3x-joint_T.html)
## Voxel
### Surface
- [surface/sf_bend](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_bend.html)
- [surface/sf_ring](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_ring.html)
- [surface/sf_solidify](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_solidify.html)
- [surface/sf_sphere](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_sphere.html)
- [surface/sf_square](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_square.html)
- [surface/sf_torus](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_torus.html)
Signature | Description
--|--
[**voxel/vx_ascii**(char[, center, invert])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_ascii.html) | generate 8x8 voxel points of printable ASCII characters (codes 32dec to 126dec).
[**voxel/vx_bezier**(p1, p2, p3, p4)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_bezier.html) | return voxel-by-voxel points of Bézier Curve.
[**voxel/vx_circle**(radius[, filled])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_circle.html) | return points that can be used to draw a voxel-style circle.
[**voxel/vx_contour**(points[, sorted])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_contour.html) | return the contour which encircles the area.
[**voxel/vx_curve**(points[, tightness])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_curve.html) | the curve is drawn only from the 2nd control point to the second-last control point.
[**voxel/vx_cylinder**(r, h[, filled, thickness])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_cylinder.html) | return points that can be used to draw a voxel-style cylinder.
[**voxel/vx_difference**(points1, points2)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_difference.html) | create a difference of two lists of points.
[**voxel/vx_from**(binaries[, center, invert])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_from.html) | given a list of 0s and 1s that represent a black-and-white image. This function translates them into voxel points.
[**voxel/vx_gray**(levels[, center, invert, normalize])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_gray.html) | given a list of numbers (0 ~ 255) that represent a gray image. This function translates them into a list of `[x, y, level]`s.
[**voxel/vx_intersection**(points1, points2)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_intersection.html) | create an intersection of two lists of points.
[**voxel/vx_line**(p1, p2)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_line.html) | given two points. it returns points that can be used to draw a voxel-style line.
[**voxel/vx_polygon**(points[, filled])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_polygon.html) | return points that can be used to draw a voxel-style polygon.
[**voxel/vx_polyline**(points)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_polyline.html) | return points that can be used to draw a voxel-style polyline.
[**voxel/vx_sphere**(radius[, filled, thickness])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_sphere.html) | return points that can be used to draw a voxel-style sphere.
[**voxel/vx_union**(points1, points2)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_union.html) | create a union of two lists of points.
### Noise
- [noise/nz_cell](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_cell.html)
- [noise/nz_perlin1](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin1.html)
- [noise/nz_perlin1s](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin1s.html)
- [noise/nz_perlin2](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin2.html)
- [noise/nz_perlin2s](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin2s.html)
- [noise/nz_perlin3](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin3.html)
- [noise/nz_perlin3s](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin3s.html)
- [noise/nz_worley2](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_worley2.html)
- [noise/nz_worley2s](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_worley2s.html)
- [noise/nz_worley3](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_worley3.html)
- [noise/nz_worley3s](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_worley3s.html)
## Part
### Voronoi
Signature | Description
--|--
[**part/cone**(radius[, length, spacing, angle, void, ends])](https://openhome.cc/eGossip/OpenSCAD/lib3x-cone.html) | create a cone for rotatable models.
[**part/connector_peg**(radius, height[, spacing, void, ends])](https://openhome.cc/eGossip/OpenSCAD/lib3x-connector_peg.html) | create a connector peg.
[**part/joint_T**(shaft_r, shaft_h, t_leng, thickness,[ spacing, center])](https://openhome.cc/eGossip/OpenSCAD/lib3x-joint_T.html) | create a joint_T for rotatable models.
- [voronoi/vrn2_cells_from](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn2_cells_from.html)
- [voronoi/vrn2_cells_space](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn2_cells_space.html)
- [voronoi/vrn2_from](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn2_from.html)
- [voronoi/vrn2_space](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn2_space.html)
- [voronoi/vrn3_from](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn3_from.html)
- [voronoi/vrn3_space](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn3_space.html)
## Surface
### Maze
Signature | Description
--|--
[**surface/sf_bend**(levels, radius, thickness, depth[, angle, invert])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_bend.html) | bend a photo.
[**surface/sf_ring**(levels, radius, thickness, depth[, angle, twist, invert])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_ring.html) | turn a photo into a ring.
[**surface/sf_solidify**(surface1, surface2[, slicing])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_solidify.html) | solidify two square surfaces.
[**surface/sf_sphere**(levels, radius, thickness, depth[, angle, invert)]](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_sphere.html) | map a photo onto a sphere.
[**surface/sf_square**(levels, thickness, depth[, x_twist, y_twist, invert])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_square.html) | turn a photo into a twistable square.
[**surface/sf_torus**(levels, radius, thickness, depth[, angle, twist, invert])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_torus.html) | turn a photo to a torus.
[**surface/sf_curve**(levels, curve_path, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_curve.html) | curve a photo.
[**surface/sf_splines**(ctrl_pts, row_spline, column_spline)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_splines.html) | generalized-spline surface.
[**surface/sf_thicken**(points, thickness, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_thicken.html) | thicken a surface.
[**surface/sf_solidifyT**(points1, points2, triangles)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_solidifyT.html) | solidify two surfaces with triangular mesh.
[**surface/sf_thickenT**(points, thickness, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_thickenT.html) | thicken a surface with triangular mesh.
## Noise
Signature | Description
--|--
[**noise/nz_cell**(points, p[, dist])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_cell.html) | an implementation of [Worley noise](https://en.wikipedia.org/wiki/Worley_noise).
[**noise/nz_perlin1**(x[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin1.html) | return the 1D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) value at the x coordinate.
[**noise/nz_perlin1s**(xs[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin1s.html) | return 1D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) values at x coordinates.
[**noise/nz_perlin2**(x, y[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin2.html) | return the 2D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) value at the (x, y) coordinate.
[**noise/nz_perlin2s**(points[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin2s.html) | return 2D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) values at (x, y) coordinates.
[**noise/nz_perlin3**(x, y, z[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin3.html) | return the 3D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) value at the (x, y, z) coordinate.
[**noise/nz_perlin3s**(points[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_perlin3s.html) | return 3D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) values at (x, y, z) coordinates.
[**noise/nz_worley2**(x, y[, seed, grid_w, dist])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_worley2.html) | return the 2D [Worley noise](https://en.wikipedia.org/wiki/Worley_noise) value at the (x, y) coordinate.
[**noise/nz_worley2s**(points[, seed, grid_w, dist])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_worley2s.html) | return 2D [Worley noise](https://en.wikipedia.org/wiki/Worley_noise) values at (x, y) coordinates.
[**noise/nz_worley3**(x, y, z[, seed, grid_w, dist])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_worley3.html) | return the 3D [Worley noise](https://en.wikipedia.org/wiki/Worley_noise) value at the (x, y, z) coordinate.
[**noise/nz_worley3s**(points[, seed, grid_w, dist])](https://openhome.cc/eGossip/OpenSCAD/lib3x-nz_worley3s.html) | return 3D [Worley noise](https://en.wikipedia.org/wiki/Worley_noise) values at (x, y, z) coordinates.
## Voronoi
Signature | Description
--|--
[**voronoi/vrn2_cells_from**(points)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn2_cells_from.html) | create cell shapes of [Voronoi](https://en.wikipedia.org/wiki/Voronoi_diagram) from a list of points.
[**voronoi/vrn2_cells_space**(size, grid_w[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn2_cells_space.html) | create cell shapes of [Voronoi](https://en.wikipedia.org/wiki/Voronoi_diagram) in the first quadrant.
[**voronoi/vrn2_from**(points[, spacing, ...])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn2_from.html) | create a [Voronoi](https://en.wikipedia.org/wiki/Voronoi_diagram) from a list of points.
[**voronoi/vrn2_space**(size, grid_w[, seed, spacing, ...])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn2_space.html) | create a [Voronoi](https://en.wikipedia.org/wiki/Voronoi_diagram) in the first quadrant.
[**voronoi/vrn3_from**(points[, spacing])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn3_from.html) | create a 3D version of [Voronoi](https://en.wikipedia.org/wiki/Voronoi_diagram).
[**voronoi/vrn3_space**(size, grid_w[, seed, spacing])](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn3_space.html) | create a [Voronoi](https://en.wikipedia.org/wiki/Voronoi_diagram) in the first octant.
## Maze
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_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_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.
## Polyhedra
Signature | Description
--|--
[**polyhedra/star**([outerRadius, innerRadius, height, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_star.html) | create a 3D star.
[**polyhedra/polar_zonohedra**(n[, theta])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_polar_zonohedra.html) | create a [polar zonohedra](https://mathworld.wolfram.com/PolarZonohedron.html).
[**polyhedra/tetrahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_tetrahedron.html) | create a tetrahedron.
[**polyhedra/hexahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_hexahedron.html) | create a hexahedron.
[**polyhedra/octahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_octahedron.html) | create a octahedron.
[**polyhedra/dodecahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_dodecahedron.html) | create a dodecahedron.
[**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.
----
- [maze/mz_square_cells](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_cells.html)
- [maze/mz_square_get](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_get.html)
- [maze/mz_square_walls](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_walls.html)
- [maze/mz_hex_walls](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hex_walls.html)
- [maze/mz_square_initialize](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_initialize.html)
- [maze/mz_hamiltonian](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hamiltonian.html)
- [maze/mz_theta_cells](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta_cells.html)
- [maze/mz_theta_get](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta_get.html)

View File

@@ -1,5 +1,99 @@
> Version numbers are based on [Semantic Versioning](https://semver.org/).
# v3.2.1
Maintenance release: bug fixes & performance improvements.
# v3.2
## Deprecated:
Name | Description
--|--
**paths2sections** | use **rails2sections** instead.
**hull_polyline2d**, **hull_polyline3d** | use **polyline_join** instead.
**shape_starburst**, **shape_pentagram** | use **shape_star** instead.
**starburst** | use **polyhedra/star** instead.
## New parameters:
- `angle_between` adds `ccw`.
## New modules/functions:
### Matrix
## 2D/3D Function
Signature | Description
--|--
[**rails2sections**(rails)](https://openhome.cc/eGossip/OpenSCAD/lib3x-rails2sections.html) | create sections along rails.
## Transformation
Signature | Description
--|--
[**select**(i)](https://openhome.cc/eGossip/OpenSCAD/lib3x-select.html) | select module objects.
[**polyline_join**(points)](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyline_join.html) | place a join on each point. Hull each pair of joins and union all convex hulls.
## 2D Shape
Signature | Description
--|--
[**shape_star**([outer_radius, inner_radius, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_star.html) | create a 2D star.
## Polyhedra
Signature | Description
--|--
[**polyhedra/star**([outerRadius, innerRadius, height, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_star.html) | create a 3D star.
[**polyhedra/polar_zonohedra**(n[, theta])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_polar_zonohedra.html) | create a [polar zonohedra](https://mathworld.wolfram.com/PolarZonohedron.html).
[**polyhedra/tetrahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_tetrahedron.html) | create a tetrahedron.
[**polyhedra/hexahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_hexahedron.html) | create a hexahedron.
[**polyhedra/octahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_octahedron.html) | create a octahedron.
[**polyhedra/dodecahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_dodecahedron.html) | create a dodecahedron.
[**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.
# v3.1
## Deprecated:
Name | Description
--|--
**bezier_surface** | use **surface/sf_splines** instead.
**function_grapher** | use **surface/sf_thicken** instead.
## New modules/functions:
### Matrix
Signature | Description
--|--
[**maxtrix/m_transpose**(m)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_transpose.html) | transpose a matrix.
### Surface
Signature | Description
--|--
[**surface/sf_curve**(levels, curve_path, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_curve.html) | curve a photo.
[**surface/sf_splines**(ctrl_pts, row_spline, column_spline)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_splines.html) | generalized-spline surface.
[**surface/sf_thicken**(points, thickness, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_thicken.html) | thicken a surface.
[**surface/sf_solidifyT**(points1, points2, triangles)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_solidifyT.html) | solidify two surfaces with triangular mesh.
[**surface/sf_thickenT**(points, thickness, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_thickenT.html) | thicken a surface with triangular mesh.
### Triangle
Signature | Description
--|--
[**triangle/tri_circumcenter**(shape_pts)](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_circumcenter.html) | return the circumcenter of a triangle.
[**triangle/tri_incenter**(shape_pts)](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_incenter.html) | return the incenter of a triangle.
[**triangle/tri_ear_clipping**(shape_pts, ret = "TRI_INDICES", ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_ear_clipping.html) | triangulation by [ear clipping](https://en.wikipedia.org/wiki/Polygon_triangulation#Ear_clipping_method).
[**triangle/tri_delaunay**(points, ret = "TRI_INDICES")](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_delaunay.html) | Join a set of points to make a [Delaunay triangulation](https://en.wikipedia.org/wiki/Delaunay_triangulation).
[**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.
# v3.0
**It's a version that Breaks Backward Compatibility!!**

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -57,9 +57,9 @@ Puts children along the given path. If there's only one child, it will put the c
angles = [for(p_a = pts_angles) p_a[1]];
along_with(points, angles)
rotate([90, 0, 0])
linear_extrude(1, center = true)
text("A", valign = "center", halign = "center");
rotate([90, 0, 0])
linear_extrude(1, center = true)
text("A", valign = "center", halign = "center");
![along_with](images/lib3x-along_with-3.JPG)
@@ -69,20 +69,20 @@ Puts children along the given path. If there's only one child, it will put the c
module scales() {
module one_scale() {
rotate([0, 60, 0])
linear_extrude(1, center = true)
scale([2, 1])
circle(1.25, $fn = 24);
linear_extrude(1, center = true)
scale([2, 1])
circle(1.25, $fn = 24);
}
for(a = [0:30:330]) {
rotate(a)
translate([5, 0, 0])
one_scale();
rotate(a + 15)
translate([5, 0, 1.75])
one_scale();
}
translate([5, 0, 0])
one_scale();
rotate(a + 15)
translate([5, 0, 1.75])
one_scale();
}
}
t_step = 0.01;

View File

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

View File

@@ -47,22 +47,22 @@ An `init_angle` less than 180 degrees is not recommended because the function us
}
![archimedean_spiral](images/lib3x-archimedean_spiral-2.JPG)
include <archimedean_spiral.scad>;
t = "3.141592653589793238462643383279502884197169399375105820974944592307816406286";
points = archimedean_spiral(
use <archimedean_spiral.scad>;
t = "3.141592653589793238462643383279502884197169399375105820974944592307816406286";
points_angles = archimedean_spiral(
arm_distance = 15,
init_angle = 450,
point_distance = 12,
num_of_points = len(t)
);
for(i = [0: len(points) - 1]) {
translate(points[i][0])
rotate(points[i][1] + 90)
text(t[i], valign = "center", halign = "center");
for(i = [0: len(points_angles) - 1]) {
translate(points_angles[i][0])
rotate(points_angles[i][1] + 90)
text(t[i], valign = "center", halign = "center");
}
![archimedean_spiral](images/lib3x-archimedean_spiral-3.JPG)

View File

@@ -15,7 +15,7 @@ Creates visually even spacing of n points on the surface of the sphere. Successi
## Examples
use <bauer_spiral.scad>;
use <hull_polyline3d.scad>;
use <polyline_join.scad>;
n = 200;
radius = 20;
@@ -26,7 +26,8 @@ Creates visually even spacing of n points on the surface of the sphere. Successi
sphere(1, $fn = 24);
}
hull_polyline3d(pts, 1);
polyline_join(pts)
sphere(.5);
![bauer_spiral](images/lib3x-bauer_spiral-1.JPG)

View File

@@ -34,7 +34,8 @@ Once you have the size of the containing cube, you can use it as the `size` argu
*cube(size = [x, y, z]);
bend(size = [x, y, z], angle = 270)
linear_extrude(z) text("A");
linear_extrude(z)
text("A");
![bend](images/lib3x-bend-2.JPG)
@@ -47,8 +48,8 @@ The arc shape is smoother if the `frags` value is larger.
z = 1;
bend(size = [x, y, z], angle = 270, frags = 360)
linear_extrude(z)
text("A");
linear_extrude(z)
text("A");
![bend](images/lib3x-bend-3.JPG)

View File

@@ -1,21 +1,21 @@
# bezier_curve
Given a set of control points, the `bezier_curve` function returns points of the Bézier path. Combined with the `polyline`, `polyline3d` or `hull_polyline3d` module defined in my library, you can create a Bézier curve.
Given a set of control points, the `bezier_curve` function returns points of the Bézier path.
## Parameters
- `t_step` : The distance between two points of the Bézier path.
- `t_step` : 0 ~ 1. Control the distance between two points of the Bézier path.
- `points` : A list of `[x, y]` or `[x, y, z]` control points.
## Examples
If you have four control points and combine with the `hull_polyline3d` module:
If you have four control points:
use <hull_polyline3d.scad>;
use <polyline_join.scad>;
use <bezier_curve.scad>;
t_step = 0.05;
width = 2;
radius = 2;
p0 = [0, 0, 0];
p1 = [40, 60, 35];
@@ -26,6 +26,7 @@ If you have four control points and combine with the `hull_polyline3d` module:
[p0, p1, p2, p3]
);
hull_polyline3d(points, width);
polyline_join(points)
sphere(radius);
![bezier_curve](images/lib3x-bezier_curve-1.JPG)

View File

@@ -12,7 +12,7 @@ Given a path, the `bezier_smooth` function uses bazier curves to smooth all corn
## Examples
use <hull_polyline3d.scad>;
use <polyline_join.scad>;
use <bezier_smooth.scad>;
width = 2;
@@ -25,15 +25,15 @@ Given a path, the `bezier_smooth` function uses bazier curves to smooth all corn
[-10, -10, 50]
];
hull_polyline3d(
path_pts, width
);
polyline_join(path_pts)
sphere(width / 2);
smoothed_path_pts = bezier_smooth(path_pts, round_d);
color("red") translate([30, 0, 0]) hull_polyline3d(
smoothed_path_pts, width
);
color("red")
translate([30, 0, 0])
polyline_join(smoothed_path_pts)
sphere(width / 2);
![bezier_smooth](images/lib3x-bezier_smooth-1.JPG)
@@ -51,6 +51,7 @@ Given a path, the `bezier_smooth` function uses bazier curves to smooth all corn
smoothed_path_pts = bezier_smooth(path_pts, round_d, closed = true);
translate([50, 0, 0]) polygon(smoothed_path_pts);
translate([50, 0, 0])
polygon(smoothed_path_pts);
![bezier_smooth](images/lib3x-bezier_smooth-2.JPG)

View File

@@ -1,34 +0,0 @@
# bezier_surface
Given a set of control points, the `bezier_surface` function returns points of the Bézier surface. Combined with the `function_grapher` module defined in my library, you can create a Bézier surface.
## Parameters
- `t_step` : The distance between two points of the Bézier path.
- `points` : A set of control points. See examples below.
## Examples
If you have 16 control points and combine with the `function_grapher` module:
use <bezier_surface.scad>;
use <function_grapher.scad>;
t_step = 0.05;
thickness = 0.5;
ctrl_pts = [
[[0, 0, 20], [60, 0, -35], [90, 0, 60], [200, 0, 5]],
[[0, 50, 30], [100, 60, -25], [120, 50, 120], [200, 50, 5]],
[[0, 100, 0], [60, 120, 35], [90, 100, 60], [200, 100, 45]],
[[0, 150, 0], [60, 150, -35], [90, 180, 60], [200, 150, 45]]
];
g = bezier_surface(t_step, ctrl_pts);
function_grapher(g, thickness);
![bezier_surface](images/lib3x-bezier_surface-1.JPG)
The following figure shows controll points and bazier curves around the surface.
![bezier_surface](images/lib3x-bezier_surface-2.JPG)

View File

@@ -22,11 +22,11 @@ Move 2D outlines outward or inward by a given amount. Each point of the offsette
[-15, 0]
];
color("red") polygon(bijection_offset(shape, 3));
color("red") polygon(bijection_offset(shape, 3));
color("orange") polygon(bijection_offset(shape, 2));
color("yellow") polygon(bijection_offset(shape, 1));
color("green") polygon(shape);
color("blue") polygon(bijection_offset(shape, -1));
color("green") polygon(shape);
color("blue") polygon(bijection_offset(shape, -1));
color("indigo") polygon(bijection_offset(shape, -2));
color("purple") polygon(bijection_offset(shape, -3));
@@ -43,7 +43,6 @@ Move 2D outlines outward or inward by a given amount. Each point of the offsette
[-5, 0]
];
offsetted = bijection_offset(shape, 1);
offsetted2 = bijection_offset(shape, 2);
offsetted3 = bijection_offset(shape, 3);

View File

@@ -1,6 +1,6 @@
# bspline_curve
[B-spline](https://en.wikipedia.org/wiki/B-spline) interpolation using [de Boor's algorithm](https://en.wikipedia.org/wiki/De_Boor%27s_algorithm). This function returns points of the B-spline path. Combined with the `polyline`, `polyline3d` or `hull_polyline3d` module, you can create a B-spline curve.
[B-spline](https://en.wikipedia.org/wiki/B-spline) interpolation using [de Boor's algorithm](https://en.wikipedia.org/wiki/De_Boor%27s_algorithm). This function returns points of the B-spline path.
**Since:** 2.1
@@ -49,7 +49,8 @@
// a non-uniform B-spline curve
knots = [0, 1/8, 1/4, 1/2, 3/4, 4/5, 1];
color("red") for(p = points) {
color("red")
for(p = points) {
translate(p)
sphere(0.5);
}
@@ -73,7 +74,8 @@
// For a clamped B-spline curve, the first `degree + 1` and the last `degree + 1` knots must be identical.
knots = [0, 0, 0, 1, 2, 2, 2];
color("red") for(p = points) {
color("red")
for(p = points) {
translate(p)
sphere(0.5);
}

View File

@@ -21,9 +21,9 @@ Sometimes you need all points on the path of a circle. Here's the function. Its
step_angle = 360 / leng;
for(i = [0:leng - 1]) {
translate(points[i])
rotate([90, 0, 90 + i * step_angle])
linear_extrude(1, center = true)
text("A", valign = "center", halign = "center");
rotate([90, 0, 90 + i * step_angle])
linear_extrude(1, center = true)
text("A", valign = "center", halign = "center");
}
![circle_path](images/lib3x-circle_path-1.JPG)

View File

@@ -11,8 +11,8 @@ Computes contour polygons by applying [marching squares](https://en.wikipedia.or
## Examples
use <hull_polyline2d.scad>;
use <function_grapher.scad>;
use <polyline_join.scad>;
use <surface/sf_thicken.scad>;
use <contours.scad>;
min_value = 1;
@@ -23,20 +23,21 @@ Computes contour polygons by applying [marching squares](https://en.wikipedia.or
points = [
for(y = [min_value:resolution:max_value])
[
for(x = [min_value:resolution:max_value])
[x, y, f(x, y)]
]
[
for(x = [min_value:resolution:max_value])
[x, y, f(x, y)]
]
];
function_grapher(points, 1);
sf_thicken(points, 1);
translate([max_value, 0, 0])
for(z = [-30:5:30]) {
translate([0, 0, z])
linear_extrude(1)
for(isoline = contours(points, z)) {
hull_polyline2d(isoline, width = 1);
polyline_join(isoline)
circle(.5);
}
}

View File

@@ -6,7 +6,7 @@ Draws a curved line from control points. The curve is drawn only from the 2nd co
## Parameters
- `t_step` : The distance between two points of the generated curve.
- `t_step` : 0 ~ 1. Control the distance between two points of the generated curve.
- `points` : A list of `[x, y]` or `[x, y, z]` control points.
- `tightness` : You can view it as the curve tigntness if you provide a value between 0.0 and 1.0. The default value is 0.0. The value 1.0 connects all the points with straight lines. The value greater than 1.0 or less than 0.0 is also acceptable because it defines how to generate a bezier curve every four control points.
@@ -17,7 +17,7 @@ Draws a curved line from control points. The curve is drawn only from the 2nd co
## Examples
use <curve.scad>;
use <hull_polyline3d.scad>;
use <polyline_join.scad>;
pts = [
[28, 2, 1],
@@ -32,12 +32,14 @@ Draws a curved line from control points. The curve is drawn only from the 2nd co
tightness = 0;
points = curve(t_step, pts, tightness);
hull_polyline3d(points, 1);
polyline_join(points)
sphere(.5);
#for(pt = pts) {
translate(pt)
sphere(1);
}
#hull_polyline3d(pts, .1);
#polyline_join(pts)
sphere(.05);
![curve](images/lib3x-curve-3.JPG)

View File

@@ -34,7 +34,9 @@ Extrudes a 2D object along the path of an ellipse from 0 to 180 degrees. The sem
ellipse_extrude(semi_minor_axis)
text("♥", size = 40, valign = "center", halign = "center");
mirror([0, 0, 1]) ellipse_extrude(semi_minor_axis)
mirror([0, 0, 1])
ellipse_extrude(semi_minor_axis)
text("♥", size = 40, valign = "center", halign = "center");
![ellipse_extrude](images/lib3x-ellipse_extrude-3.JPG)

View File

@@ -31,7 +31,7 @@ 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 <hull_polyline3d.scad>;
use <polyline_join.scad>;
n = 200;
radius = 20;
@@ -49,7 +49,8 @@ Creates visually even spacing of n points on the surface of the sphere. Nearest-
];
for(spiral = spirals) {
hull_polyline3d(spiral, 1);
polyline_join(spiral)
sphere(.5);
}
![fibonacci_lattice](images/lib3x-fibonacci_lattice-2.JPG)

View File

@@ -16,26 +16,21 @@ returns a new list with all sub-list elements concatenated into it recursively u
vt = [[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]];
assert(
flat([1, 2, [3, 4]]) ==
[1, 2, 3, 4]
flat([1, 2, [3, 4]]) == [1, 2, 3, 4]
);
assert(
flat([[1, 2], [3, 4]]) ==
[1, 2, 3, 4]
flat([[1, 2], [3, 4]]) == [1, 2, 3, 4]
);
assert(
flat([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]]) ==
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
flat([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]]) == [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
);
assert(
flat([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]], 2) ==
[[1, 2], [3, 4], [5, 6], [7, 8]]
flat([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]], 2) == [[1, 2], [3, 4], [5, 6], [7, 8]]
);
assert(
flat([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]], 3) ==
[1, 2, 3, 4, 5, 6, 7, 8]
flat([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]], 3) == [1, 2, 3, 4, 5, 6, 7, 8]
);

View File

@@ -11,7 +11,7 @@ Drive a turtle with `["forward", length]` or `["turn", angle]`. This function is
## Examples
use <polyline2d.scad>;
use <polyline_join.scad>;
use <turtle/footprints2.scad>;
function arc_cmds(radius, angle, steps) =
@@ -20,35 +20,33 @@ Drive a turtle with `["forward", length]` or `["turn", angle]`. This function is
ta = fa / 2,
leng = sin(ta) * radius * 2
)
concat(
[["turn", ta]],
[
[
["turn", ta],
each [
for(i = [0:steps - 2])
each [["forward", leng], ["turn", fa]]
],
[["forward", leng], ["turn", ta]]
);
["forward", leng],
["turn", ta]
];
poly = footprints2(
concat(
[
["forward", 10],
["turn", 90],
["forward", 10]
],
arc_cmds(5, 180, 12),
[
["turn", -90],
["forward", 10],
["turn", 90],
["forward", 10],
["turn", 90],
["forward", 10]
]
)
[
["forward", 10],
["turn", 90],
["forward", 10],
each arc_cmds(5, 180, 12),
["turn", -90],
["forward", 10],
["turn", 90],
["forward", 10],
["turn", 90],
["forward", 10]
]
);
polyline2d(poly, width = 1);
polyline_join(poly)
circle(.5);
![footprints2](images/lib3x-footprints2-1.JPG)

View File

@@ -11,7 +11,7 @@ A 3D verion of [footprint2](https://openhome.cc/eGossip/OpenSCAD/lib3x-footprint
## Examples
use <hull_polyline3d.scad>;
use <polyline_join.scad>;
use <turtle/footprints3.scad>;
function xy_arc_cmds(radius, angle, steps) =
@@ -20,36 +20,32 @@ A 3D verion of [footprint2](https://openhome.cc/eGossip/OpenSCAD/lib3x-footprint
ta = fa / 2,
leng = sin(ta) * radius * 2
)
concat(
[["turn", ta]],
[
[
["turn", ta],
each [
for(i = [0:steps - 2])
each [["forward", leng], ["turn", fa]]
],
[["forward", leng], ["turn", ta]]
);
["forward", leng],
["turn", ta]
];
poly = footprints3(
concat(
[
["forward", 10],
["turn", 90],
["forward", 10]
],
xy_arc_cmds(5, 180, 12),
[
["pitch", 90],
["forward", 10],
["roll", 90]
],
xy_arc_cmds(5, 180, 12),
[
["forward", 10]
]
)
[
["forward", 10],
["turn", 90],
["forward", 10],
each xy_arc_cmds(5, 180, 12),
["pitch", 90],
["forward", 10],
["roll", 90],
each xy_arc_cmds(5, 180, 12),
["forward", 10]
]
);
hull_polyline3d(poly, thickness = 1);
polyline_join(poly)
sphere(.5);
![footprints3](images/lib3x-footprints3-1.JPG)

View File

@@ -1,78 +0,0 @@
# function_grapher
Given a list of points `[x, y, f(x, y)]` where `f(x, y)` is a mathematics function, the `function_grapher` module can create the graph of `f(x, y)`.
## Parameters
- `points` : A list of points `[x, y, f(x, y)]`. See examples below.
- `thickness` : The face or line thickness. Default to 1.
- `style` : The style of the graph. It accepts `"FACES"`, `"LINES"`, `"HULL_FACES"` and `"HULL_LINES"`. The default value is `"FACES"` which simply takes `f(x, y) - thickness` for each point to build a bottom. It may cause thickness problems when slopes is high. The `"HULL_FACES"` value can solve the problem but is slow. When assigning `"LINES"`, it uses lines to connect points. The `"HULL_LINES"` is very very slow; however, the model might look smoother if you have a small `$fn`.
- `$fa`, `$fs`, `$fn` : Used by the `circle` or `sphere` module internally. It affects the speed of rending. For example, a large `$fn` may be very slow when rending. Check [the circle module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_the_2D_Subsystem#circle) or [the sphere module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#sphere) for more details.
## Examples
use <function_grapher.scad>;
points = [
[[0, 0, 1], [1, 0, 2], [2, 0, 2], [3, 0, 3]],
[[0, 1, 1], [1, 1, 4], [2, 1, 0], [3, 1, 3]],
[[0, 2, 1], [1, 2, 3], [2, 2, 1], [3, 2, 3]],
[[0, 3, 1], [1, 3, 3], [2, 3, 1], [3, 3, 3]]
];
thickness = 0.5;
function_grapher(points, thickness);
![function_grapher](images/lib3x-function_grapher-1.JPG)
use <function_grapher.scad>;
function f(x, y) =
30 * (
cos(sqrt(pow(x, 2) + pow(y, 2))) +
cos(3 * sqrt(pow(x, 2) + pow(y, 2)))
);
thickness = 2;
min_value = -200;
max_value = 200;
resolution = 10;
points = [
for(y = [min_value:resolution:max_value])
[
for(x = [min_value:resolution:max_value])
[x, y, f(x, y)]
]
];
function_grapher(points, thickness);
![function_grapher](images/lib3x-function_grapher-2.JPG)
use <function_grapher.scad>;
function f(x, y) =
30 * (
cos(sqrt(pow(x, 2) + pow(y, 2))) +
cos(3 * sqrt(pow(x, 2) + pow(y, 2)))
);
thickness = 2;
min_value = -200;
max_value = 200;
resolution = 10;
style = "LINES";
points = [
for(y = [min_value:resolution:max_value])
[
for(x = [min_value:resolution:max_value])
[x, y, f(x, y)]
]
];
function_grapher(points, thickness, style);
![function_grapher](images/lib3x-function_grapher-3.JPG)

View File

@@ -38,9 +38,9 @@ It returns a vector of `[[x, y], angle]`.
for(pt_angle = pts_angles) {
translate(pt_angle[0])
rotate([90, 0, pt_angle[1]])
linear_extrude(1, center = true)
text("A", valign = "center", halign = "center");
rotate([90, 0, pt_angle[1]])
linear_extrude(1, center = true)
text("A", valign = "center", halign = "center");
}
![golden_spiral](images/lib3x-golden_spiral-2.JPG)

View File

@@ -39,9 +39,9 @@ This function maps keys to values. You can use the following to process the retu
m3 = hashmap_del(m2, "k1");
assert(hashmap_get(m3, "k1") == undef);
echo(hashmap_keys(m3)); // a list contains "k2", "k2", "k3"
echo(hashmap_values(m3)); // a list contains 20, 30, 40
echo(hashmap_entries(m3)); // a list contains ["k2", 20], ["k3", 30], ["k4", 40]
assert(hashmap_keys(m3) == ["k2", "k3", "k4"]);
assert(hashmap_values(m3) == [20, 30, 40]);
assert(hashmap_entries(m3) == [["k2", 20], ["k3", 30], ["k4", 40]]);
Want to simulate class-based OO in OpenSCAD? Here's my experiment.
@@ -54,7 +54,7 @@ Want to simulate class-based OO in OpenSCAD? Here's my experiment.
function clz_list(data) = function(name) _(name,
methods([
["get", function(i) data[i]],
["append", function(n) clz_list(concat(data, [n]))]
["append", function(n) clz_list([each data, n])]
])
);

View File

@@ -7,7 +7,7 @@ This function deletes the mapping for the specified key from a [util/map/hashmap
## Parameters
- `map` : The original map.
- `key` : Adds the specified element to the specified set
- `key` : The specified key.
- `eq` : A equality function. If it's ignored, use `==` to compare elements.
- `hash` : A hash function. If it's ignored, convert each element to a string and hash it.

View File

@@ -1,13 +1,13 @@
# hashmap_get
This function gets the value of the specified key from a [util/map/hashmap](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap.html).
This function gets the value of the specified key from a [util/map/hashmap](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap.html). If the key doesn't exist, return `undef`.
**Since:** 3.0
## Parameters
- `map` : The original map.
- `key` : Adds the specified element to the specified set
- `key` : The specified key.
- `eq` : A equality function. If it's ignored, use `==` to compare elements.
- `hash` : A hash function. If it's ignored, convert each element to a string and hash it.

View File

@@ -1,6 +1,6 @@
# hashmap_len
This function puts a key/value to a [util/map/hashmap](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap.html). It returns a new map containing the key/value.
Returns the length of a [util/map/hashmap](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap.html).
**Since:** 3.0

View File

@@ -1,12 +1,16 @@
# hashmap_put
This function returns the length of a [util/map/hashmap](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap.html).
Puts a key/value pair to a [util/map/hashmap](https://openhome.cc/eGossip/OpenSCAD/lib3x-hashmap.html).
**Since:** 3.0
## Parameters
- `map` : The original map.
- `key` : The specified key.
- `value` : The specified value.
- `eq` : A equality function. If it's ignored, use `==` to compare elements.
- `hash` : A hash function. If it's ignored, convert each element to a string and hash it.
## Examples

View File

@@ -35,4 +35,4 @@ This function models the mathematical set, backed by a hash table. You can use t
s3 = hashset_del(s2, 2);
assert(!hashset_has(s3, 2));
echo(hashset_elems(s3)); // a list contains 1, 3, 4, 5, 9
assert(hashset_elems(s3) == [1, 3, 4, 5, 9]);

View File

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

View File

@@ -14,7 +14,7 @@ Gets all points on the path of a spiral around a cylinder. Its `$fa`, `$fs` and
## Examples
use <helix.scad>;
use <hull_polyline3d.scad>;
use <polyline_join.scad>;
$fn = 12;
@@ -27,15 +27,17 @@ Gets all points on the path of a spiral around a cylinder. Its `$fa`, `$fs` and
);
for(p = points) {
translate(p) sphere(5);
translate(p)
sphere(5);
}
hull_polyline3d(points, 2);
polyline_join(points)
sphere(1);
![helix](images/lib3x-helix-1.JPG)
use <helix.scad>;
use <hull_polyline3d.scad>;
use <polyline_join.scad>;
$fn = 12;
@@ -47,7 +49,8 @@ Gets all points on the path of a spiral around a cylinder. Its `$fa`, `$fs` and
rt_dir = "CLK"
);
hull_polyline3d(points, 2);
polyline_join(points)
sphere(1);
%cylinder(h = 100, r1 = 40, r2 = 20);

View File

@@ -10,7 +10,10 @@ Hollows out a 2D object.
use <hollow_out.scad>;
hollow_out(shell_thickness = 1) circle(r = 3, $fn = 48);
hollow_out(shell_thickness = 1) square([10, 5]);
hollow_out(shell_thickness = 1)
circle(r = 3, $fn = 48);
hollow_out(shell_thickness = 1)
square([10, 5]);
![hollow_out](images/lib3x-hollow_out-1.JPG)

View File

@@ -1,22 +0,0 @@
# hull_polyline2d
Creates a 2D polyline from a list of `[x, y]` coordinates. As the name says, it uses the built-in hull operation for each pair of points (created by the `circle` module). It's slow. However, it can be used to create metallic effects for a small `$fn`, large `$fa` or `$fs`.
## Parameters
- `points` : The list of `[x, y]` points of the polyline. The points are indexed from 0 to n-1.
- `width` : The line width. Default to 1.
- `$fa`, `$fs`, `$fn` : Check [the circle module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_the_2D_Subsystem#circle) for more details.
## Examples
use <hull_polyline2d.scad>;
$fn = 4;
hull_polyline2d(
points = [[1, 2], [-5, -4], [-5, 3], [5, 5]],
width = 1
);
![hull_polyline3d](images/lib3x-hull_polyline2d-1.JPG)

View File

@@ -1,45 +0,0 @@
# hull_polyline3d
Creates a 3D polyline from a list of `[x, y, z]` coordinates. As the name says, it uses the built-in hull operation for each pair of points (created by the `sphere` module). It's slow. However, it can be used to create metallic effects for a small `$fn`, large `$fa` or `$fs`.
## Parameters
- `points` : The list of `[x, y, z]` points of the polyline. The points are indexed from 0 to n-1.
- `diameter` : The line diameter. Default to 1.
- `$fa`, `$fs`, `$fn` : Check [the sphere module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#sphere) for more details.
## Examples
use <hull_polyline3d.scad>;
hull_polyline3d(
points = [
[1, 2, 3],
[4, -5, -6],
[-1, -3, -5],
[0, 0, 0]
],
diameter = 1,
$fn = 3
);
![polyline3d](images/lib3x-hull_polyline3d-1.JPG)
use <hull_polyline3d.scad>;
r = 50;
points = [
for(a = [0:180])
[
r * cos(-90 + a) * cos(a),
r * cos(-90 + a) * sin(a),
r * sin(-90 + a)
]
];
for(i = [0:7]) {
rotate(45 * i)
hull_polyline3d(points, 2, $fn = 3);
}
![polyline3d](images/lib3x-hull_polyline3d-2.JPG)

View File

@@ -1,6 +1,6 @@
# in_polyline
Checks wether a point is on a line.
Checks whether a point is on a line.
**Since:** 1.3
@@ -20,10 +20,10 @@ Checks wether a point is on a line.
[10, 10]
];
echo(in_polyline(pts, [-2, -3])); // false
echo(in_polyline(pts, [5, 0])); // true
echo(in_polyline(pts, [10, 5])); // true
echo(in_polyline(pts, [10, 15])); // false
assert(!in_polyline(pts, [-2, -3]));
assert(in_polyline(pts, [5, 0]));
assert(in_polyline(pts, [10, 5]));
assert(!in_polyline(pts, [10, 15]));
----
@@ -35,7 +35,7 @@ Checks wether a point is on a line.
[20, 10, 10]
];
echo(in_polyline(pts, [10, 0, 10])); // true
echo(in_polyline(pts, [15, 0, 10])); // true
echo(in_polyline(pts, [15, 1, 10])); // false
echo(in_polyline(pts, [20, 11, 10])); // false
assert(in_polyline(pts, [10, 0, 10]));
assert(in_polyline(pts, [15, 0, 10]));
assert(!in_polyline(pts, [15, 1, 10]));
assert(!in_polyline(pts, [20, 11, 10]));

View File

@@ -1,6 +1,6 @@
# in_shape
Checks wether a point is inside a shape.
Checks whether a point is inside a shape.
**Since:** 1.3

View File

@@ -6,8 +6,8 @@ Linear interpolate the vector v1 to v2.
## Parameters
- `v1` : Minimum value of random number range. Default to 0.
- `v2` : Maximum value of random number range. Default to 1.
- `v1` : The vector v1.
- `v2` : The vector v2.
- `amt` : The amount of interpolation. Some value between 0.0 and 1.0.
## Examples

View File

@@ -11,7 +11,7 @@ When having uniform cross sections, you can use [sweep](https://openhome.cc/eGos
## Examples
use <shape_starburst.scad>;
use <shape_star.scad>;
use <shape_circle.scad>;
use <ptf/ptf_rotate.scad>;
use <loft.scad>;
@@ -19,7 +19,7 @@ When having uniform cross sections, you can use [sweep](https://openhome.cc/eGos
sects = [
for(i = 10; i >= 4; i = i - 1)
[
for(p = shape_starburst(15, 12, i % 2 == 1 ? i : i - 1)) ptf_rotate([p[0], p[1], 5 * (i - 4)], i * 10)
for(p = shape_star(15, 12, i % 2 == 1 ? i : i - 1)) ptf_rotate([p.x, p.y, 5 * (i - 4)], i * 10)
]
];
loft(sects, slices = 3);
@@ -28,16 +28,16 @@ When having uniform cross sections, you can use [sweep](https://openhome.cc/eGos
difference() {
loft(
[
[for(p = shape_circle(10, $fn = 3)) [p[0], p[1], 15]],
[for(p = shape_circle(15, $fn = 24)) [p[0], p[1], 0]]
[for(p = shape_circle(10, $fn = 3)) [p.x, p.y, 15]],
[for(p = shape_circle(15, $fn = 24)) [p.x, p.y, 0]]
],
slices = 4
);
loft(
[
[for(p = shape_circle(8, $fn = 3)) [p[0], p[1], 15.1]],
[for(p = shape_circle(13, $fn = 24)) [p[0], p[1], -0.1]]
[for(p = shape_circle(8, $fn = 3)) [p.x, p.y, 15.1]],
[for(p = shape_circle(13, $fn = 24)) [p.x, p.y, -0.1]]
],
slices = 4
);

View File

@@ -33,14 +33,11 @@
[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 <hull_polyline3d.scad>;
use <polyline_join.scad>;
for(line = hilbert_curve()) {
hull_polyline3d(
[line[0], line[1]],
thickness = 0.5,
$fn = 4
);
polyline_join([line[0], line[1]])
sphere(.25, $fn = 4);
}
function hilbert_curve(n = 3, angle = 90, leng = 1, heading = 0, start = [0, 0, 0]) =
@@ -60,14 +57,11 @@
// a stochastic L-system
use <turtle/lsystem3.scad>;
use <hull_polyline3d.scad>;
use <polyline_join.scad>;
for(line = vine()) {
hull_polyline3d(
[line[0], line[1]],
thickness = 0.5,
$fn = 4
);
polyline_join([line[0], line[1]])
sphere(.25, $fn = 4);
}
function vine(n = 3, angle = 18, leng = 1, heading = 0, start = [0, 0, 0]) =

View File

@@ -1,7 +1,5 @@
# m_mirror
The dir changed since 2.0.
Generate a 4x4 transformation matrix which can pass into `multmatrix` to mirror the child element on a plane through the origin.
**Since:** 1.1
@@ -18,8 +16,8 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to mirror
cube([3, 2, 1]);
multmatrix(m_mirror([1, 1, 0]))
rotate([0, 0, 10])
cube([3, 2, 1]);
rotate([0, 0, 10])
cube([3, 2, 1]);
![m_mirror](images/lib3x-m_mirror-1.JPG)

View File

@@ -1,7 +1,5 @@
# m_rotation
The dir changed since 2.0.
Generate a 4x4 transformation matrix which can pass into `multmatrix` to rotate the child element about the axis of the coordinate system or around an arbitrary axis.
**Since:** 1.1
@@ -21,8 +19,8 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to rotate
hull() {
sphere(1);
multmatrix(m_rotation(a))
translate(point)
sphere(1);
translate(point)
sphere(1);
}
![m_rotation](images/lib3x-m_rotation-1.JPG)
@@ -34,14 +32,14 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to rotate
hull() {
sphere(1);
translate(v)
sphere(1);
sphere(1);
}
p = [10, 10, 0];
for(i = [0:20:340]) {
multmatrix(m_rotation(a = i, v = v))
translate(p)
sphere(1);
translate(p)
sphere(1);
}
![m_rotation](images/lib3x-m_rotation-2.JPG)

View File

@@ -1,7 +1,5 @@
# m_scaling
The dir changed since 2.0.
Generate a 4x4 transformation matrix which can pass into `multmatrix` to scale its child elements using the specified vector.
**Since:** 1.1
@@ -16,8 +14,8 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to scale i
cube(10);
translate([15, 0, 0])
multmatrix(m_scaling([0.5, 1, 2]))
cube(10);
multmatrix(m_scaling([0.5, 1, 2]))
cube(10);
![m_scaling](images/lib3x-m_scaling-1.JPG)

View File

@@ -1,7 +1,5 @@
# m_shearing
The dir changed since 2.0.
Generate a 4x4 transformation matrix which can pass into `multmatrix` to shear all child elements along the X-axis, Y-axis, or Z-axis in 3D.
**Since:** 1.1
@@ -20,10 +18,12 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to shear a
multmatrix(m_shearing(sx = [1, 0]))
cube(1);
translate([2, 0, 0]) multmatrix(m_shearing(sx = [0, 1]))
translate([2, 0, 0])
multmatrix(m_shearing(sx = [0, 1]))
cube(1);
translate([4, 0, 0]) multmatrix(m_shearing(sx = [1, 1]))
translate([4, 0, 0])
multmatrix(m_shearing(sx = [1, 1]))
cube(1);
}
@@ -31,10 +31,12 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to shear a
multmatrix(m_shearing(sy = [1, 0]))
cube(1);
translate([2, 0, 0]) multmatrix(m_shearing(sy = [0, 1]))
translate([2, 0, 0])
multmatrix(m_shearing(sy = [0, 1]))
cube(1);
translate([4, 0, 0]) multmatrix(m_shearing(sy = [1, 1]))
translate([4, 0, 0])
multmatrix(m_shearing(sy = [1, 1]))
cube(1);
}
@@ -42,10 +44,12 @@ Generate a 4x4 transformation matrix which can pass into `multmatrix` to shear a
multmatrix(m_shearing(sz = [1, 0]))
cube(1);
translate([2, 0, 0]) multmatrix(m_shearing(sz = [0, 1]))
translate([2, 0, 0])
multmatrix(m_shearing(sz = [0, 1]))
cube(1);
translate([4, 0, 0]) multmatrix(m_shearing(sz = [1, 1]))
translate([4, 0, 0])
multmatrix(m_shearing(sz = [1, 1]))
cube(1);
}

View File

@@ -1,7 +1,5 @@
# m_translation
The dir changed since 2.0.
Generate a 4x4 transformation matrix which can pass into `multmatrix` to translates (moves) its child elements along the specified vector.
**Since:** 1.1

30
docs/lib3x-m_transpose.md Normal file
View File

@@ -0,0 +1,30 @@
# m_transpose
It transposes a matrix.
**Since:** 3.1
## Parameters
- `m` : A matrix.
## Examples
use <matrix/m_transpose.scad>;
original_m = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
];
traget = [
[1, 5, 9],
[2, 6, 10],
[3, 7, 11],
[4, 8, 12]
];
transposed = m_transpose(original_m);
assert(transposed == traget);

View File

@@ -12,14 +12,19 @@ Given a 2D path, this function constructs a mid-point smoothed version by joinin
## Examples
use <hull_polyline2d.scad>;
use <polyline_join.scad>;
use <shape_taiwan.scad>;
use <midpt_smooth.scad>;
taiwan = shape_taiwan(50);
smoothed = midpt_smooth(taiwan, 20, true);
translate([0, 0, 0]) hull_polyline2d(taiwan, .25);
#translate([10, 0, 0]) hull_polyline2d(smoothed, .25);
translate([0, 0, 0])
polyline_join(taiwan)
circle(.125);
#translate([10, 0, 0])
polyline_join(smoothed)
circle(.125);
![midpt_smooth](images/lib3x-midpt_smooth-1.JPG)

View File

@@ -14,13 +14,14 @@ Creates a hamiltonian path from a maze. The path is the result of maze traversal
## Examples
use <maze/mz_hamiltonian.scad>;
use <hull_polyline2d.scad>;
use <polyline_join.scad>;
rows = 5;
columns = 10;
path = mz_hamiltonian(rows, columns, [0, 0]);
hull_polyline2d(path, .5);
polyline_join(path)
circle(.25);
![mz_hamiltonian](images/lib3x-mz_hamiltonian-1.JPG)

View File

@@ -17,7 +17,7 @@ It's a helper for creating wall data from maze cells. You can transform wall poi
use <maze/mz_square_cells.scad>;
use <maze/mz_hex_walls.scad>;
use <hull_polyline2d.scad>;
use <polyline_join.scad>;
rows = 10;
columns = 12;
@@ -28,7 +28,8 @@ It's a helper for creating wall data from maze cells. You can transform wall poi
walls = mz_hex_walls(cells, rows, columns, cell_width);
for(wall = walls) {
hull_polyline2d(wall, wall_thickness, $fn = 24);
polyline_join(wall)
circle(wall_thickness, $fn = 24);
}
![mz_hex_walls](images/lib3x-mz_hex_walls-1.JPG)

View File

@@ -41,11 +41,9 @@ The cell data is seperated from views. You can use cell data to construct [diffe
cells = mz_square_cells(rows, columns);
for(cell = cells) {
x = cell[0];
y = cell[1];
type = cell[2];
translate([x, y] * cell_width) {
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);
}
@@ -56,8 +54,8 @@ The cell data is seperated from views. You can use cell data to construct [diffe
}
}
line2d([0, 0], [cell_width * rows, 0], wall_thickness);
line2d([0, 0], [0, cell_width * columns], wall_thickness);
line2d([0, 0], [cell_width * columns, 0], wall_thickness);
line2d([0, 0], [0, cell_width * rows], wall_thickness);
![mz_square_cells](images/lib3x-mz_square_cells-1.JPG)

View File

@@ -25,7 +25,7 @@ It's a helper for getting data from a square-maze cell.
for(cell = cells) {
x = mz_square_get(cell, "x");
y = mz_square_get(cell, "y");
type = mz_square_get(cell, "t");;
type = mz_square_get(cell, "t");
translate([x, y] * cell_width) {
if(type == "TOP_WALL" || type == "TOP_RIGHT_WALL") {
@@ -38,7 +38,7 @@ It's a helper for getting data from a square-maze cell.
}
}
line2d([0, 0], [cell_width * rows, 0], wall_thickness);
line2d([0, 0], [0, cell_width * columns], wall_thickness);
line2d([0, 0], [cell_width * columns, 0], wall_thickness);
line2d([0, 0], [0, cell_width * rows], wall_thickness);
![mz_square_get](images/lib3x-mz_square_get-1.JPG)

View File

@@ -68,12 +68,10 @@ It's a helper for initializing cell data of a maze.
// Mask
mask_width = cell_width + wall_thickness;
translate([-wall_thickness / 2, -wall_thickness / 2])
for(i = [0:rows - 1]) {
for(j = [0:columns - 1]) {
if(mask[i][j] == 0) {
translate([cell_width * j, cell_width * (rows - i - 1)])
square(mask_width);
}
for(i = [0:rows - 1], j = [0:columns - 1]) {
if(mask[i][j] == 0) {
translate([cell_width * j, cell_width * (rows - i - 1)])
square(mask_width);
}
}

View File

@@ -25,7 +25,7 @@ The value of `type` is the wall type of the cell. It can be `0`, `1`, `2` or `3`
## Examples
use <maze/mz_theta_cells.scad>;
use <hull_polyline2d.scad>;
use <polyline_join.scad>;
rows = 8;
beginning_number = 8;
@@ -42,29 +42,29 @@ The value of `type` is the wall type of the cell. It can be `0`, `1`, `2` or `3`
maze = mz_theta_cells(rows, beginning_number);
// draw cell walls
for(rows = maze) {
for(cell = rows) {
ri = cell[0];
ci = cell[1];
type = cell[2];
thetaStep = 360 / len(maze[ri]);
innerR = (ri + 1) * cell_width;
outerR = (ri + 2) * cell_width;
theta1 = thetaStep * ci;
theta2 = thetaStep * (ci + 1);
innerVt1 = vt_from_angle(theta1, innerR);
innerVt2 = vt_from_angle(theta2, innerR);
outerVt2 = vt_from_angle(theta2, outerR);
if(type == INWARD_WALL || type == INWARD_CCW_WALL) {
hull_polyline2d([innerVt1, innerVt2], width = wall_thickness);
}
for(rows = maze, cell = rows) {
ri = cell[0];
ci = cell[1];
type = cell[2];
thetaStep = 360 / len(maze[ri]);
innerR = (ri + 1) * cell_width;
outerR = (ri + 2) * cell_width;
theta1 = thetaStep * ci;
theta2 = thetaStep * (ci + 1);
innerVt1 = vt_from_angle(theta1, innerR);
innerVt2 = vt_from_angle(theta2, innerR);
outerVt2 = vt_from_angle(theta2, outerR);
if(type == INWARD_WALL || type == INWARD_CCW_WALL) {
polyline_join([innerVt1, innerVt2])
circle(wall_thickness / 2);
}
if(type == CCW_WALL || type == INWARD_CCW_WALL) {
hull_polyline2d([innerVt2, outerVt2], width = wall_thickness);
}
}
if(type == CCW_WALL || type == INWARD_CCW_WALL) {
polyline_join([innerVt2, outerVt2])
circle(wall_thickness / 2);
}
}
// outmost walls
@@ -73,7 +73,8 @@ The value of `type` is the wall type of the cell. It can be `0`, `1`, `2` or `3`
for(theta = [0:thetaStep:360 - thetaStep]) {
vt1 = vt_from_angle(theta, r);
vt2 = vt_from_angle(theta + thetaStep, r);
hull_polyline2d([vt1, vt2], width = wall_thickness);
polyline_join([vt1, vt2])
circle(wall_thickness / 2);
}
![mz_theta_cells](images/lib3x-mz_theta_cells-3.JPG)

View File

@@ -13,7 +13,7 @@ It's a helper for getting data from a theta-maze cell.
use <maze/mz_theta_cells.scad>;
use <maze/mz_theta_get.scad>;
use <hull_polyline2d.scad>;
use <polyline_join.scad>;
rows = 8;
beginning_number = 8;
@@ -23,29 +23,29 @@ It's a helper for getting data from a theta-maze cell.
function vt_from_angle(theta, r) = [r * cos(theta), r * sin(theta)];
maze = mz_theta_cells(rows, beginning_number);
for(rows = maze) {
for(cell = rows) {
ri = mz_theta_get(cell, "r");
ci = mz_theta_get(cell, "c");
type = mz_theta_get(cell, "t");
thetaStep = 360 / len(maze[ri]);
innerR = (ri + 1) * cell_width;
outerR = (ri + 2) * cell_width;
theta1 = thetaStep * ci;
theta2 = thetaStep * (ci + 1);
innerVt1 = vt_from_angle(theta1, innerR);
innerVt2 = vt_from_angle(theta2, innerR);
outerVt2 = vt_from_angle(theta2, outerR);
if(type == "INWARD_WALL" || type == "INWARD_CCW_WALL") {
hull_polyline2d([innerVt1, innerVt2], width = wall_thickness);
}
for(rows = maze, cell = rows) {
ri = mz_theta_get(cell, "r");
ci = mz_theta_get(cell, "c");
type = mz_theta_get(cell, "t");
thetaStep = 360 / len(maze[ri]);
innerR = (ri + 1) * cell_width;
outerR = (ri + 2) * cell_width;
theta1 = thetaStep * ci;
theta2 = thetaStep * (ci + 1);
innerVt1 = vt_from_angle(theta1, innerR);
innerVt2 = vt_from_angle(theta2, innerR);
outerVt2 = vt_from_angle(theta2, outerR);
if(type == "INWARD_WALL" || type == "INWARD_CCW_WALL") {
polyline_join([innerVt1, innerVt2])
circle(wall_thickness / 2);
}
if(type == "CCW_WALL" || type == "INWARD_CCW_WALL") {
hull_polyline2d([innerVt2, outerVt2], width = wall_thickness);
}
}
if(type == "CCW_WALL" || type == "INWARD_CCW_WALL") {
polyline_join([innerVt2, outerVt2])
circle(wall_thickness / 2);
}
}
thetaStep = 360 / len(maze[rows - 1]);
@@ -53,7 +53,8 @@ It's a helper for getting data from a theta-maze cell.
for(theta = [0:thetaStep:360 - thetaStep]) {
vt1 = vt_from_angle(theta, r);
vt2 = vt_from_angle(theta + thetaStep, r);
hull_polyline2d([vt1, vt2], width = wall_thickness);
polyline_join([vt1, vt2])
circle(wall_thickness / 2);
}
![mz_theta_get](images/lib3x-mz_theta_get-1.JPG)

View File

@@ -26,9 +26,8 @@ It's an implementation of [Worley noise](https://en.wikipedia.org/wiki/Worley_no
feature_points = [for(pt_angle = pts_angles) pt_angle[0] + half_size];
noised = [
for(y = [0:size[1] - 1])
for(x = [0:size[0] - 1])
[x, y, nz_cell(feature_points, [x, y])]
for(y = [0:size.y - 1], x = [0:size.x - 1])
[x, y, nz_cell(feature_points, [x, y])]
];
max_dist = max([for(n = noised) n[2]]);

View File

@@ -11,13 +11,12 @@ Returns the 1D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) value
## Examples
use <hull_polyline2d.scad>;
use <polyline_join.scad>;
use <util/rand.scad>;
use <noise/nz_perlin1.scad>;
seed = rand();
hull_polyline2d(
[for(x = [0:.1:10]) [x, nz_perlin1(x, seed)]], width = .1
);
seed = rand(0, 255);
polyline_join([for(x = [0:.1:10]) [x, nz_perlin1(x, seed)]])
circle(.05);
![nz_perlin1](images/lib3x-nz_perlin1-1.JPG)

View File

@@ -11,13 +11,14 @@ Returns 1D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) values at
## Examples
use <hull_polyline2d.scad>;
use <polyline_join.scad>;
use <noise/nz_perlin1s.scad>;
xs = [for(x = [0:.1:10]) x];
ys = nz_perlin1s(xs);
points = [for(i = [0:len(xs) - 1]) [xs[i], ys[i]]];
hull_polyline2d(points, width = .1);
polyline_join(points)
circle(.05);
![nz_perlin1s](images/lib3x-nz_perlin1s-1.JPG)

View File

@@ -13,8 +13,8 @@ Returns the 2D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) value
## Examples
use <util/rand.scad>;
use <hull_polyline2d.scad>;
use <function_grapher.scad>;
use <polyline_join.scad>;
use <surface/sf_thicken.scad>;
use <noise/nz_perlin2.scad>;
use <contours.scad>;
@@ -27,11 +27,12 @@ Returns the 2D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) value
]
];
function_grapher(points, 1);
sf_thicken(points, .1);
translate([11, 0])
for(isoline = contours(points, 0)) {
hull_polyline2d(isoline, width = .1);
}
polyline_join(isoline)
circle(.05);
}
![nz_perlin2](images/lib3x-nz_perlin2-1.JPG)

View File

@@ -12,10 +12,7 @@ Returns 2D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) values at
## Examples
use <util/rand.scad>;
use <hull_polyline2d.scad>;
use <function_grapher.scad>;
use <noise/nz_perlin2s.scad>;
use <contours.scad>;
seed = rand(0, 255);

View File

@@ -18,15 +18,13 @@ Returns the 3D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) value
seed = rand(0, 255);
noised = [
for(z = [0:.2:5])
for(y = [0:.2:5])
for(x = [0:.2:5])
[x, y, z, nz_perlin3(x, y, z, seed)]
for(z = [0:.2:5], y = [0:.2:5], x = [0:.2:5])
[x, y, z, nz_perlin3(x, y, z, seed)]
];
for(nz = noised) {
if(nz[3] > 0.2) {
translate([nz[0], nz[1], nz[2]])
translate([nz.x, nz.y, nz.z])
cube(.2);
}
}

View File

@@ -27,11 +27,11 @@ Returns 3D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) values at
points_with_h = [
for(ri = [0:len(points) - 1])
let(ns = nz_perlin2s(points[ri], seed))
[
for(ci = [0:len(ns) - 1])
[points[ri][ci][0], points[ri][ci][1], ns[ci] + 1]
]
let(ns = nz_perlin2s(points[ri], seed))
[
for(ci = [0:len(ns) - 1])
[points[ri][ci][0], points[ri][ci][1], ns[ci] + 1]
]
];
h_scale = 1.5;
@@ -39,7 +39,7 @@ Returns 3D [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) values at
for(i = [0:len(row) - 1]) {
p = row[i];
pts = [
for(z = [0:.2:p[2] * h_scale]) [p[0], p[1], z]
for(z = [0:.2:p[2] * h_scale]) [p.x, p.y, z]
];
noise = nz_perlin3s(pts, seed);
for(j = [0:len(pts) - 1]) {

View File

@@ -27,12 +27,11 @@ It divides the space into grids. The nucleus of each cell is randomly placed in
seed = 51;
points = [
for(y = [0:size[1] - 1])
for(x = [0:size[0] - 1])
[x, y]
for(y = [0:size.y - 1], x = [0:size.x - 1])
[x, y]
];
cells = [for(p = points) nz_worley2(p[0], p[1], seed, grid_w, dist)];
cells = [for(p = points) nz_worley2(p.x, p.y, seed, grid_w, dist)];
max_dist = max([for(c = cells) c[2]]);
for(i = [0:len(cells) - 1]) {
@@ -43,7 +42,7 @@ It divides the space into grids. The nucleus of each cell is randomly placed in
square(1);
}
cells_pts = dedup([for(c = cells) [c[0], c[1]]]);
cells_pts = dedup([for(c = cells) [c.x, c.y]]);
for(p = cells_pts) {
translate(p)
linear_extrude(max_dist)

View File

@@ -25,9 +25,8 @@ It divides the space into grids. The nucleus of each cell is randomly placed in
seed = 51;
points = [
for(y = [0:size[1] - 1])
for(x = [0:size[0] - 1])
[x, y]
for(y = [0:size.y - 1], x = [0:size.x - 1])
[x, y]
];
cells = nz_worley2s(points, seed, grid_w, dist);

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