Compare commits
1323 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
bb33edfd75 | ||
|
8bfcdc39a9 | ||
|
5e60756a27 | ||
|
2ea9bcdffc | ||
|
f26629cb4c | ||
|
ea60a5628a | ||
|
c1d1997714 | ||
|
78a23c0a12 | ||
|
17d6364865 | ||
|
fbb4024168 | ||
|
fcdcf0b2b4 | ||
|
e75fd110d7 | ||
|
49461b3ce1 | ||
|
86028431bf | ||
|
c30e83d318 | ||
|
bd628815bd | ||
|
7a6ea23903 | ||
|
ebfc46fd26 | ||
|
469fdcc6f7 | ||
|
5578c169b0 | ||
|
b90b83ebc5 | ||
|
daaff1322f | ||
|
84c83769db | ||
|
bb59ba0939 | ||
|
3c70c23afa | ||
|
683074dc54 | ||
|
9d2f6eaac2 | ||
|
4c46ac11fc | ||
|
fb73eced66 | ||
|
7a890293fb | ||
|
7eff4d759e | ||
|
d78bed91e7 | ||
|
f875bacaf8 | ||
|
bc424ed7b3 | ||
|
ca7a0e7ef1 | ||
|
264d83cdf1 | ||
|
7af26906d0 | ||
|
ee0ffbabd3 | ||
|
ce257f859b | ||
|
4bdd3ca089 | ||
|
18281f72fc | ||
|
18d3757079 | ||
|
2d5a38194a | ||
|
02895d6529 | ||
|
29594b8688 | ||
|
d0ea27a76c | ||
|
ea8fc1da2b | ||
|
d29ab4eb8a | ||
|
824168a006 | ||
|
87ec19fb7a | ||
|
2602a90388 | ||
|
95b679d82a | ||
|
6e08ec5fdb | ||
|
6a98237517 | ||
|
4a9d935059 | ||
|
f587ffecd0 | ||
|
7689ac9c55 | ||
|
b832cbec2e | ||
|
174eb609d5 | ||
|
40dfebe040 | ||
|
795c7c0a87 | ||
|
a403ca060e | ||
|
995b531faf | ||
|
ce915abd33 | ||
|
631e78d642 | ||
|
2cf3ac6781 | ||
|
04e089613a | ||
|
232a2a56bf | ||
|
8fbf812bca | ||
|
582fc09262 | ||
|
3a4e6b2a19 | ||
|
bd64388362 | ||
|
a3933b945e | ||
|
9ef35e42bd | ||
|
ef07707cdb | ||
|
b33e725523 | ||
|
0c29e2b108 | ||
|
6b6f0d832a | ||
|
f35d04e0e6 | ||
|
1e1587c600 | ||
|
390bef0061 | ||
|
86d5da1e23 | ||
|
b83d9440c0 | ||
|
30b906a1c3 | ||
|
047c175a19 | ||
|
77f9750091 | ||
|
5b8e62a559 | ||
|
5b725bd6bb | ||
|
abd5683698 | ||
|
49a68a9f84 | ||
|
505e514075 | ||
|
11f9a5b58a | ||
|
3b1c12247c | ||
|
f732686823 | ||
|
15c1cd605f | ||
|
709c92714e | ||
|
ed75179dfe | ||
|
cb1ee004ce | ||
|
6d0eb7de03 | ||
|
a51a8f2bd4 | ||
|
e6e52f7ab8 | ||
|
4e2edcef5b | ||
|
756fde7c0f | ||
|
f278d7430a | ||
|
86e30155c8 | ||
|
97860fdf67 | ||
|
c93d1ae897 | ||
|
0a5d64d999 | ||
|
8eba081532 | ||
|
bcee313c0e | ||
|
4b7133252f | ||
|
7a6712d1b1 | ||
|
32995370d0 | ||
|
65b434878d | ||
|
22b14f7923 | ||
|
e4f3522143 | ||
|
d1f595dbf1 | ||
|
28278e814a | ||
|
fbe58944e8 | ||
|
dd63a9574e | ||
|
0c1e2049e2 | ||
|
7f3da91174 | ||
|
c63d5c0d47 | ||
|
160d2e67ac | ||
|
a6e74ca978 | ||
|
e39a7311f3 | ||
|
f2f7438257 | ||
|
e436e09923 | ||
|
10b99289c6 | ||
|
2fab2309fe | ||
|
0d19380f74 | ||
|
b384817b98 | ||
|
e66aeccd33 | ||
|
6df0170d81 | ||
|
c551e96352 | ||
|
b0c521f8c1 | ||
|
0e8b676c09 | ||
|
183b3b74b6 | ||
|
964e6b5020 | ||
|
c71143c113 | ||
|
5772dcbc55 | ||
|
243c3eb659 | ||
|
623878b75e | ||
|
b613b87536 | ||
|
90b4c830be | ||
|
f1fd2797a4 | ||
|
938507d02d | ||
|
2651a23524 | ||
|
ad4b54984b | ||
|
31e7ca6275 | ||
|
6a30eb0e76 | ||
|
464fcc5f8f | ||
|
669e7c4b1d | ||
|
ac4288d5f4 | ||
|
a169468da6 | ||
|
91b56e3a5a | ||
|
273f83bd27 | ||
|
45050f31cd | ||
|
fd666676d6 | ||
|
5330981a19 | ||
|
6bfe94ce1c | ||
|
9333145a6d | ||
|
0fc6e05d8f | ||
|
98ae52b828 | ||
|
dae4ee49cc | ||
|
5cde164bb5 | ||
|
7356046aa7 | ||
|
8ce4b435c6 | ||
|
1ee48d6f13 | ||
|
cdd5452618 | ||
|
95f69374e4 | ||
|
832174831f | ||
|
cf5d70c1ef | ||
|
0c4c338046 | ||
|
cdb403ae8e | ||
|
3046b8eacd | ||
|
8371943c25 | ||
|
e0b32b96b7 | ||
|
1b3ff91046 | ||
|
c3025ea51c | ||
|
e4661c74eb | ||
|
5cd9b7e7a0 | ||
|
89790d50ae | ||
|
6affac09a7 | ||
|
b80ea25688 | ||
|
8c3a7d7f7a | ||
|
e2ec67b67d | ||
|
8c88932588 | ||
|
c7ea5b384b | ||
|
a46e75c672 | ||
|
fb001c8752 | ||
|
0c534e6133 | ||
|
4d611bb0b5 | ||
|
f1d5d6e472 | ||
|
12e6ad672d | ||
|
e71ee91b90 | ||
|
27701333c7 | ||
|
238c2ede27 | ||
|
1fb449fdf6 | ||
|
bce7487a96 | ||
|
27536f28f6 | ||
|
9ce272b434 | ||
|
1c04072738 | ||
|
9996fe9fad | ||
|
b8ccb792af | ||
|
d9bbdce328 | ||
|
cc8522dd05 | ||
|
5a39846101 | ||
|
795ac56f50 | ||
|
6fa4fe0ea9 | ||
|
d5dd12ffcd | ||
|
bcc10201b3 | ||
|
a3b8fc41b5 | ||
|
e5d38e2d6f | ||
|
c2ce9d8b8a | ||
|
6f00785d6c | ||
|
be53dd21c1 | ||
|
1006fa6624 | ||
|
766d01801e | ||
|
6c1a1502dd | ||
|
6d83e02312 | ||
|
d0ec3a2b37 | ||
|
6338019c29 | ||
|
c051817624 | ||
|
12898673a8 | ||
|
0d685a7280 | ||
|
cb171262e7 | ||
|
5a63fe41f7 | ||
|
7c22b6ceca | ||
|
fb84664183 | ||
|
db1ff5822d | ||
|
6d7276b48a | ||
|
a45434fa6e | ||
|
4d9319d8ca | ||
|
c678589c15 | ||
|
cf32517302 | ||
|
ee9b198036 | ||
|
63aab80116 | ||
|
22dfa7da2d | ||
|
fcf97a77e1 | ||
|
762c8b6859 | ||
|
9e74b763e6 | ||
|
e2bf9f36b0 | ||
|
9b2bf9e19b | ||
|
d330331494 | ||
|
bcaf7fe67c | ||
|
3519f834e6 | ||
|
eb1cdc29a0 | ||
|
e336cc14e4 | ||
|
56b0a371b3 | ||
|
87f3fcb105 | ||
|
0fd3841ecc | ||
|
eb901f5bba | ||
|
3f504c0034 | ||
|
cbb8268456 | ||
|
91b4b19ef3 | ||
|
df4b2c702d | ||
|
7d25a25a69 | ||
|
04a78738e9 | ||
|
c14b970bee | ||
|
d978128f8f | ||
|
db376e5290 | ||
|
ef361c5d22 | ||
|
663c43f70e | ||
|
038429ede7 | ||
|
7b301bdc74 | ||
|
b4c5c16451 | ||
|
b2e9775e7f | ||
|
705aa35e3e | ||
|
4fad71c352 | ||
|
f2e437fdd4 | ||
|
8250c9ff32 | ||
|
a88edea05a | ||
|
e5daf6d060 | ||
|
999e0196c0 | ||
|
e3fd9908d3 | ||
|
fc5965267f | ||
|
dce855611c | ||
|
de97253d92 | ||
|
cf61ba06c2 | ||
|
412672b00c | ||
|
b891640014 | ||
|
997857b596 | ||
|
8a9011422a | ||
|
969595b4c8 | ||
|
68db8eeb6c | ||
|
e932cdaa0f | ||
|
a4c0d0be65 | ||
|
dbb10e1a1b | ||
|
f3b7a8f101 | ||
|
0b7bce54c3 | ||
|
3f40ae40dc | ||
|
f0652c39f7 | ||
|
eecfa85018 | ||
|
05c55ff1bb | ||
|
6549c22938 | ||
|
1428dc8307 | ||
|
07170ed1f0 | ||
|
bd34a907c2 | ||
|
cd84c11213 | ||
|
01e8bce16b | ||
|
822891f53e | ||
|
61a0ccc069 | ||
|
74411f32c3 | ||
|
b37508dd94 | ||
|
fca63e677f | ||
|
8fb260b595 | ||
|
0fae2d5dce | ||
|
8bcdb263d3 | ||
|
c513d0753c | ||
|
6b353cb7a5 | ||
|
916f833107 | ||
|
871bee3d50 | ||
|
ac262336fb | ||
|
62ef13a8bd | ||
|
7bf7c17b36 | ||
|
98a5a64293 | ||
|
03287724ff | ||
|
015c2ba7ce | ||
|
7f2e67b1b5 | ||
|
5f3802951f | ||
|
2ffb27095e | ||
|
c5ac23200b | ||
|
6106f1fc56 | ||
|
358aea023a | ||
|
a2d9e02eea | ||
|
07c661b025 | ||
|
593715cf23 | ||
|
c4b4a00909 | ||
|
42fa6df7cc | ||
|
193f38d531 | ||
|
590d8ab7c3 | ||
|
8c483f6c8b | ||
|
c142e8b6e8 | ||
|
e55a4a6108 | ||
|
5da7a66fac | ||
|
582d7642eb | ||
|
748719d639 | ||
|
ba4c8e36a4 | ||
|
c7c59f58b5 | ||
|
0ae64dcf6a | ||
|
3fd7fd60d9 | ||
|
88801575e8 | ||
|
e863770245 | ||
|
108e2cc0ea | ||
|
420738c25b | ||
|
b08afa8798 | ||
|
65a19f5f42 | ||
|
e714fb0bc3 | ||
|
a4bb82698a | ||
|
cb03a1437b | ||
|
659988abe2 | ||
|
252bc5738e | ||
|
f306c22306 | ||
|
e25fbf6690 | ||
|
7bdb470285 | ||
|
2f274c299b | ||
|
0414c440a3 | ||
|
1ef1b46a93 | ||
|
4e406b19cf | ||
|
6e4efe2e9f | ||
|
50a658c20a | ||
|
86865c6861 | ||
|
bc6288f5d2 | ||
|
61fef89bfd | ||
|
ccf77872ed | ||
|
a53c15bafe | ||
|
b739142514 | ||
|
bd69e673b1 | ||
|
794730402b | ||
|
d92586e839 | ||
|
444fde9cc0 | ||
|
3ea9715bc4 | ||
|
2ba17bacf7 | ||
|
4276c31b97 | ||
|
7792030765 | ||
|
5e289d6442 | ||
|
b7bc803849 | ||
|
c97b5a9ed0 | ||
|
1a27de190f | ||
|
bf13db43eb | ||
|
060e695a1a | ||
|
ec3ed59e6f | ||
|
8f4370be7a | ||
|
af6903992b | ||
|
19b4434c83 | ||
|
29105549ae | ||
|
f8a5752dd2 | ||
|
6046591497 | ||
|
37974e6255 | ||
|
327c15865b | ||
|
060b0b421c | ||
|
c69f63e5d3 | ||
|
6024d22d45 | ||
|
de00c9d2aa | ||
|
a341c1f855 | ||
|
1c2fe403cb | ||
|
7ff012f360 | ||
|
8d324469f8 | ||
|
cf01d9626a | ||
|
f791eccf25 | ||
|
99ee4e4e74 | ||
|
19b2526483 | ||
|
2c7db9d85c | ||
|
fd4785bbaa | ||
|
3481ca7b22 | ||
|
c547ab4ec6 | ||
|
2d38e55630 | ||
|
9aa6bbb5ca | ||
|
920b09ed07 | ||
|
5ccfbf4bbb | ||
|
7f4c25b9e3 | ||
|
e16a869a3f | ||
|
d2d3c1e707 | ||
|
63110174f4 | ||
|
c9213aaead | ||
|
b68d053332 | ||
|
bff5b022a7 | ||
|
2f9afc38c4 | ||
|
22c71d8946 | ||
|
671aac9d55 | ||
|
65b375995a | ||
|
e4709ab049 | ||
|
77f74c36ec | ||
|
309098dfcc | ||
|
4fe19bf552 | ||
|
05443666c3 | ||
|
4510f43cc0 | ||
|
ae8e72a7f4 | ||
|
1ea86206bb | ||
|
aff15eae5e | ||
|
d06455082e | ||
|
b621da6e42 | ||
|
87596567a1 | ||
|
7be7badbe0 | ||
|
c4d9674a0e | ||
|
4f43260f44 | ||
|
68827f41cf | ||
|
a8dd6c1af8 | ||
|
712ca010a1 | ||
|
bd0ee73350 | ||
|
1cfd8d5b11 | ||
|
5b6ec4271d | ||
|
4d0c83ddc8 | ||
|
79f8495090 | ||
|
a67873d22c | ||
|
274d70a85b | ||
|
cb6cb51405 | ||
|
b6f23978ce | ||
|
f84f7d77f9 | ||
|
9401aeb510 | ||
|
74b1715e97 | ||
|
a5887d3daa | ||
|
d5fa8807e0 | ||
|
65280744b3 | ||
|
526f6dac97 | ||
|
1f0513b7ff | ||
|
fd18bdd959 | ||
|
61a1d3d2b1 | ||
|
7c998619b1 | ||
|
1e2d5f5d39 | ||
|
68f73a808a | ||
|
ca6394bb19 | ||
|
fa65d0687b | ||
|
ac0e57f91b | ||
|
68e7b5d517 | ||
|
8342deaa56 | ||
|
639737a207 | ||
|
2ffef05abb | ||
|
96432c8525 | ||
|
a0e465a635 | ||
|
4031fee5bb | ||
|
f62079f334 | ||
|
ed1027f9de | ||
|
493645bc7e | ||
|
3dc5a9fea2 | ||
|
892aa245da | ||
|
62849b5374 | ||
|
31fa1869c2 | ||
|
5e1f247679 | ||
|
9fabbecd7c | ||
|
884e42478d | ||
|
93704a6fd9 | ||
|
c31804a29d | ||
|
7bcf5d8f27 | ||
|
92190fbb21 | ||
|
eb96b767d4 | ||
|
a9591e8df5 | ||
|
d7872a467a | ||
|
202e9dd17e | ||
|
598f75dba8 | ||
|
b982fdf331 | ||
|
261168ee7e | ||
|
6f880aa794 | ||
|
d3e1cfea97 | ||
|
3e2d95e387 | ||
|
0524d5bc11 | ||
|
97a7f38969 | ||
|
dc6d5f8065 | ||
|
1628c56f0d | ||
|
b16da34c86 | ||
|
4875aeeb98 | ||
|
869e645bbd | ||
|
ada3588fb4 | ||
|
64515eec03 | ||
|
a56f451b26 | ||
|
276405c478 | ||
|
5ddc184e8b | ||
|
d69e08c506 | ||
|
449e7b520b | ||
|
a8f9499093 | ||
|
8a0ea31c78 | ||
|
9ea8812d0f | ||
|
17969d9a7a | ||
|
1da331441a | ||
|
07343e9e37 | ||
|
6c78b0e090 | ||
|
2c7442a76a | ||
|
8dff911ab0 | ||
|
b024c6084f | ||
|
3ba4b3fdec | ||
|
d432557fb2 | ||
|
39864c5e1a | ||
|
c70d99213d | ||
|
2227f8b95e | ||
|
802bc6f8eb | ||
|
b20cd082f1 | ||
|
3ee549e89e | ||
|
89a6cc2137 | ||
|
5d26af0f31 | ||
|
178e3372c6 | ||
|
fd34e9d5b9 | ||
|
3ad74ff561 | ||
|
4fb59ebcdb | ||
|
8cd1638a61 | ||
|
9599d5434c | ||
|
ed4d8efb55 | ||
|
89b5602026 | ||
|
a6a2b9d3f5 | ||
|
4c3dca538d | ||
|
35cf05dd42 | ||
|
bde84c004c | ||
|
38ee4a9c66 | ||
|
695e161724 | ||
|
5205a31bf2 | ||
|
ad5c2a984a | ||
|
9bb9dd4260 | ||
|
8e042ae635 | ||
|
64df730e47 | ||
|
eccf2e2bd9 | ||
|
17c9118494 | ||
|
1838104e4b | ||
|
67745a8edf | ||
|
00a0bf9749 | ||
|
42f4c7eafd | ||
|
6250cce455 | ||
|
2b58eb7528 | ||
|
d6b2e40d8d | ||
|
f2e81bf3c3 | ||
|
2400ad550b | ||
|
e3c5d035aa | ||
|
963bcab381 | ||
|
4215efe4fa | ||
|
7039e9e379 | ||
|
a6cdb1c2c8 | ||
|
220db1a3a4 | ||
|
5e8a053e0d | ||
|
83242cb5fd | ||
|
3f6211d8a6 | ||
|
9b3eee5993 | ||
|
06f144d38b | ||
|
7b3f27358b | ||
|
6548996334 | ||
|
21a822e989 | ||
|
4f09162c28 | ||
|
db0d381ceb | ||
|
903caed63c | ||
|
2a29844a3f | ||
|
8a8e55d54f | ||
|
ad760d1f4a | ||
|
71f2156d3e | ||
|
233ae4b50a | ||
|
a63bbb47fd | ||
|
9141a4db4b | ||
|
949a48a74f | ||
|
fe079986dc | ||
|
7c6268c54c | ||
|
dfdfda681d | ||
|
55c61ffb74 | ||
|
b6d86a4faf | ||
|
29fc7ca2ad | ||
|
402cbb268d | ||
|
c59025b432 | ||
|
f5e24e2239 | ||
|
a99456225f | ||
|
12a7c918f1 | ||
|
7af202f5e5 | ||
|
410c4153f4 | ||
|
18e0ecceae | ||
|
267f5ce301 | ||
|
fd404de056 | ||
|
544c6e6d46 | ||
|
73067c7557 | ||
|
98280924c1 | ||
|
a72185fdf8 | ||
|
71f5735439 | ||
|
cb4eb6f5df | ||
|
672db85bf5 | ||
|
d5381e0047 | ||
|
dc62e32b67 | ||
|
3bb2111e2f | ||
|
d0474ed757 | ||
|
adf07c5da8 | ||
|
0b23e5666a | ||
|
f5c4320d5e | ||
|
eeaa9b3b2f | ||
|
029ddc4150 | ||
|
c810e30003 | ||
|
1225d4bf47 | ||
|
aec1ec38d1 | ||
|
b9e77be7e7 | ||
|
0468ecae77 | ||
|
57ec3f46ef | ||
|
84301af250 | ||
|
617139d720 | ||
|
3d7c2c6f85 | ||
|
21d5638e94 | ||
|
25b61d8ded | ||
|
6d4f7661ec | ||
|
c981127471 | ||
|
7c40e28e64 | ||
|
38ce75b708 | ||
|
d2a936a5a3 | ||
|
c3425143c3 | ||
|
556fd1ed28 | ||
|
7421fa97c4 | ||
|
d90b0c20fc | ||
|
438e9cfd93 | ||
|
f76fd33054 | ||
|
820cf7de83 | ||
|
a3b9e42098 | ||
|
b3289dd55b | ||
|
659654f533 | ||
|
770adea91f | ||
|
dcacb8a267 | ||
|
047731d7d6 | ||
|
8ce96f9128 | ||
|
fb4a626707 | ||
|
336648434c | ||
|
b8e52677b3 | ||
|
4e0078f25c | ||
|
356966b8f6 | ||
|
bb9c630e20 | ||
|
98f9d8ea57 | ||
|
197c542c5e | ||
|
e900aefcce | ||
|
2a461a62b0 | ||
|
2601d8425c | ||
|
a0d07ea78f | ||
|
3a4b1224e6 | ||
|
48315257b1 | ||
|
62e129614f | ||
|
1fb61fc3ec | ||
|
7889c5608f | ||
|
d16d419463 | ||
|
d4c4a78d98 | ||
|
fafd073840 | ||
|
f8f91df05a | ||
|
896e0bbd2e | ||
|
d4fc1279dd | ||
|
8715bcc927 | ||
|
3a5cd29732 | ||
|
d5d809c70d | ||
|
aa082712df | ||
|
da03b782ed | ||
|
280332fb8f | ||
|
aa0c8e1cd7 | ||
|
0af33f4008 | ||
|
a65a8e60cb | ||
|
950e929edb | ||
|
032db93442 | ||
|
0e3a4d4ccd | ||
|
379b0c3614 | ||
|
76afd424e3 | ||
|
1188fe9bcc | ||
|
8e5255fdc9 | ||
|
9f189e1124 | ||
|
22ec55cfac | ||
|
ba5b184d16 | ||
|
3e1044787f | ||
|
96c9cfc0c4 | ||
|
af87c89ecc | ||
|
1c893c3fc7 | ||
|
0430baeaa9 | ||
|
cd2b3bf379 | ||
|
91dff32e23 | ||
|
da2ba88798 | ||
|
aa60b6f570 | ||
|
c1d191dc97 | ||
|
9f3ecd0b3c | ||
|
15478290e1 | ||
|
4c68946b3f | ||
|
a1a306995f | ||
|
53ac475bbf | ||
|
5f329649b6 | ||
|
1072876ac7 | ||
|
a5408736e5 | ||
|
f34bfe1d90 | ||
|
3f7478710f | ||
|
5595170b09 | ||
|
fdf879dbae | ||
|
a4e8194938 | ||
|
193ff6f531 | ||
|
6fac123aee | ||
|
d2f961494b | ||
|
cadbdc826d | ||
|
73c3e2d54c | ||
|
6292c8989a | ||
|
438e7752ac | ||
|
6247979899 | ||
|
bebf3bfc53 | ||
|
00680fe1fc | ||
|
3f8fc98145 | ||
|
8326dcc38f | ||
|
5d39610f11 | ||
|
19f5f66697 | ||
|
535d64a562 | ||
|
66c0b70417 | ||
|
6a9da8be00 | ||
|
5dd6d0abd5 | ||
|
f38d7a784b | ||
|
cded66d2c4 | ||
|
6229ab6d8c | ||
|
d2a9b4be93 | ||
|
d38c3b91fc | ||
|
62da7cebdc | ||
|
07ee15da1c | ||
|
d609292ad2 | ||
|
cf1d5deaa9 | ||
|
71815a2cdc | ||
|
7e66869bca | ||
|
a9b40f133b | ||
|
a0d4d732a7 | ||
|
7c613930d5 | ||
|
b939634f8b | ||
|
f3b3029d01 | ||
|
fdc8e2f29a | ||
|
d9bc2e29ea | ||
|
b67f4bf200 | ||
|
5825205a4f | ||
|
5b85e635d2 | ||
|
cb0a4bed9f | ||
|
7926667772 | ||
|
bb4700ba66 | ||
|
11b39945df | ||
|
03563afb6f | ||
|
6f13757cbc | ||
|
27190008bf | ||
|
6f9660a67d | ||
|
f0bc7e5dc2 | ||
|
8c57db2e06 | ||
|
05abb19126 | ||
|
ad064532e5 | ||
|
0ed3e296ea | ||
|
8158938c13 | ||
|
af521dd53f | ||
|
8b77eba322 | ||
|
bc96e0ebd5 | ||
|
679b0d0fc2 | ||
|
39c1c1a9db | ||
|
f97366ccdf | ||
|
3d24874d6d | ||
|
7d1cbb9460 | ||
|
2cd56758eb | ||
|
120b7ea2c7 | ||
|
e9dd4418d1 | ||
|
5c547351db | ||
|
7744b4e79c | ||
|
18991671f8 | ||
|
2a7c38915b | ||
|
a7ab17c149 | ||
|
1d1479b531 | ||
|
1184258336 | ||
|
da5cd8a250 | ||
|
3e110a045b | ||
|
637dcf0840 | ||
|
4a5c576630 | ||
|
4b24c81eeb | ||
|
06a785bfb1 | ||
|
22fdb8c2e5 | ||
|
045acaa3ac | ||
|
d7a6bb35ac | ||
|
43d338eaaf | ||
|
1723ba3abe | ||
|
2dc729d860 | ||
|
68b13fc330 | ||
|
f9274fa745 | ||
|
3dc36af58b | ||
|
c8efde6258 | ||
|
deb875b147 | ||
|
9a1ac9a363 | ||
|
0280293192 | ||
|
aa70a75fa2 | ||
|
6459cc582e | ||
|
a93739474b | ||
|
cb0e361671 | ||
|
f5e403bbf0 | ||
|
65116cbc78 | ||
|
ac9368e74d | ||
|
61ca95d3a1 | ||
|
b5063e12bf | ||
|
3357bd4e84 | ||
|
2e135ef9ae | ||
|
9585c3a75a | ||
|
3eed784234 | ||
|
d2ad4ff388 | ||
|
7cfc2f21dd | ||
|
d6f7219eb6 | ||
|
8b90e319b3 | ||
|
1a99069057 | ||
|
b89a800022 | ||
|
951ed2daf2 | ||
|
e048056057 | ||
|
2f7aea6147 | ||
|
57914a8245 | ||
|
987bc3be5b | ||
|
3cb77f3a7a | ||
|
ed01eebf16 | ||
|
6df459370e | ||
|
14b15a2b1c | ||
|
4eb10d2b73 | ||
|
b9d3cc8530 | ||
|
d2b61f1c60 | ||
|
ccb16cc4f7 | ||
|
95edbbee76 | ||
|
79f9a76087 | ||
|
e5aff6782d | ||
|
52b5a26006 | ||
|
da4342441f | ||
|
c76766f5b4 | ||
|
8a528e2e2b | ||
|
37b4855793 | ||
|
d60b35dd0d | ||
|
78f6acdabf | ||
|
84e5fb4c7b | ||
|
b07b1b1f3d | ||
|
a38fd21f43 | ||
|
32f44ec9c1 | ||
|
ffbb7c5db4 | ||
|
21c00b52d3 | ||
|
88a970b2ba | ||
|
fbca4bd868 | ||
|
5f400c124d | ||
|
2b3fc8f80e | ||
|
62f6c4caa5 | ||
|
0ce5d6e1da | ||
|
63ddbd3104 | ||
|
2b2d4dbefa | ||
|
642242b204 | ||
|
920509c3f1 | ||
|
5b04d11ac8 | ||
|
fa63d1eec6 | ||
|
9def71f194 | ||
|
58f26d8e0f | ||
|
20242f5d51 | ||
|
84c5ea2d91 | ||
|
2f3bf9c309 | ||
|
8f6c8f340a | ||
|
e36fd9bd46 | ||
|
2687844621 | ||
|
7ab33ba03c | ||
|
738ca61cab | ||
|
dd76edf17f | ||
|
ff89443ff2 | ||
|
adf3ea365f | ||
|
762d16b2a4 | ||
|
118e1191dd | ||
|
90006a6b20 | ||
|
d9a93b401e | ||
|
dbc918cfe1 | ||
|
0a41e6bcc1 | ||
|
5b37c7ad86 | ||
|
dff52fd168 | ||
|
fef3a55965 | ||
|
0ca2eb4e93 | ||
|
ff8f754dcc | ||
|
f16de19a00 | ||
|
fe71af113f | ||
|
ec276b274f | ||
|
a8e903ccb7 | ||
|
b89c2d90d3 | ||
|
2771e2cd31 | ||
|
ccbcac6a10 | ||
|
d9c890d8c3 | ||
|
18ecbcee93 | ||
|
dff91873b3 | ||
|
c7897c47c0 | ||
|
26592f72cd | ||
|
b0f8f5c4f4 | ||
|
96ec1e0c26 | ||
|
8475049fad | ||
|
1d7d45e3ed | ||
|
17fcdbb92e | ||
|
14ad6b4090 | ||
|
769023f639 | ||
|
fc7c8ae32f | ||
|
716f48c450 | ||
|
943d7bffca | ||
|
cb7c28d01a | ||
|
e04381bdea | ||
|
9a143a9f72 | ||
|
8f76446bd8 | ||
|
c9370160a7 | ||
|
57f800f1fc | ||
|
8dc6336f2f | ||
|
042feb4951 | ||
|
fd9eb1fe4d | ||
|
7d407d8cda | ||
|
97e6e5755e | ||
|
70cdccd280 | ||
|
69bfe3fdfa | ||
|
74aadcb514 | ||
|
81ba7db6cc | ||
|
0ac32c05b8 | ||
|
00861bc751 | ||
|
ca6c2ba7ee | ||
|
acdf107222 | ||
|
97f2fd8d62 | ||
|
0835f77aaa | ||
|
b8d61e7578 | ||
|
0409c35375 | ||
|
dd632d5845 | ||
|
9320125b42 | ||
|
7113cce683 | ||
|
86d0c65108 | ||
|
2cfc99a08c | ||
|
6e0c0cfc78 | ||
|
a9938bfcfd | ||
|
b3aaecd32c | ||
|
84eeaf913a | ||
|
1ec50f7b85 | ||
|
3569617313 | ||
|
eca8947822 | ||
|
773dc87be9 | ||
|
530faeec35 | ||
|
48e986ce14 | ||
|
f3216c2062 | ||
|
2942651117 | ||
|
8d78ec4253 | ||
|
39fc86e67e | ||
|
09125eb667 | ||
|
9ba754162a | ||
|
b2e58ac763 | ||
|
c917ffee41 | ||
|
5270d6c606 | ||
|
cd4dda3b39 | ||
|
cc15a7df8b | ||
|
a299949c42 | ||
|
47bdb4b31d | ||
|
0fb6f4b9a1 | ||
|
9facafaf61 | ||
|
cd16a74d08 | ||
|
496a151005 | ||
|
2e12d6b79a | ||
|
d5221e1289 | ||
|
382d1c60b8 | ||
|
d3d0517376 | ||
|
43a71ead1d | ||
|
e5f17508da | ||
|
3ff2961a6d | ||
|
819a76d81c | ||
|
efdd6c1078 | ||
|
4029ab4641 | ||
|
14ca2c48ae | ||
|
f8c89b1dab | ||
|
2e92394513 | ||
|
bd7d16d6e5 | ||
|
6d212c8722 | ||
|
1d946647eb | ||
|
c5a99c3223 | ||
|
39e363d59c | ||
|
9478d1ec60 | ||
|
134ca1b364 | ||
|
e7c38fa876 | ||
|
bd8f755a6c | ||
|
91d5c40336 | ||
|
5c8c0b8139 | ||
|
324693a38f | ||
|
14a6348771 | ||
|
7d9cb94f22 | ||
|
90a29ceecd | ||
|
e7bfb3c951 | ||
|
59eb3a1dc2 | ||
|
e49c40e0f0 | ||
|
d822688eaf | ||
|
d25b73dbda | ||
|
22dce8fee2 | ||
|
abd287b29e | ||
|
a82827e389 | ||
|
c6a661e074 | ||
|
0490da4b91 | ||
|
364488970b | ||
|
4eda143bbb | ||
|
2a87a2221f | ||
|
39cbc9a069 | ||
|
55e64dcb53 | ||
|
154436382c | ||
|
90c6db16d5 | ||
|
0ec9f0e0e5 | ||
|
218830d252 | ||
|
84f3636bf0 | ||
|
d9dd44db29 | ||
|
9577f68d13 | ||
|
7a8c152607 | ||
|
345603551b | ||
|
610c9588bd | ||
|
7b1095d130 | ||
|
884892a3f1 | ||
|
2600504dd5 | ||
|
f27250d285 | ||
|
5016231000 | ||
|
402aa95289 | ||
|
50d11142d5 | ||
|
031438a4df | ||
|
9063d9da05 | ||
|
3fbee973a9 | ||
|
3b5af34041 | ||
|
824aefefd9 | ||
|
4cdeb5b4a6 | ||
|
9271c79a3a | ||
|
3b2b07ae25 | ||
|
214b0a2640 | ||
|
29da8be872 | ||
|
10930e8b1c | ||
|
756ed377c3 | ||
|
300f72a959 | ||
|
faf53b3846 | ||
|
2376e429d1 | ||
|
b0817f2339 | ||
|
0304233cdc | ||
|
4176cb476e | ||
|
3901e4f1ea | ||
|
9022cb731d | ||
|
b76a2f9c32 | ||
|
bb2f10043f | ||
|
5b65cc16a7 | ||
|
8cdfe435ee | ||
|
1cddbc3453 | ||
|
50621b0306 | ||
|
8dad1bd4b6 | ||
|
c6b0c30fd8 | ||
|
a6d0c85dbe | ||
|
87deb39a4b | ||
|
bfa0fd2b11 | ||
|
2bd663d46b | ||
|
5c1c6a7463 | ||
|
ca92286690 | ||
|
cbff19c33e | ||
|
43b22a0f4c | ||
|
6bda39ecef | ||
|
37c3a647a5 | ||
|
59ae93ba5f | ||
|
6d6f62c77f | ||
|
a8ae7c18e4 | ||
|
9c3c92ab13 | ||
|
f1116dc8cf | ||
|
5a44454547 | ||
|
57d46eda8d | ||
|
4a19b445ab | ||
|
675f80159e | ||
|
1132451009 | ||
|
c78fb13731 | ||
|
a53c202c48 | ||
|
ccbd81b88e | ||
|
a14c5676d4 | ||
|
e9440e55d6 | ||
|
8f1d6a6e1a | ||
|
95dc133d0d | ||
|
dbdf8a757d | ||
|
d6affc1ff5 | ||
|
f7e81a78e3 | ||
|
63a5e53572 | ||
|
006572c5bf | ||
|
3678b8b6d7 | ||
|
89eb57652b | ||
|
0a24f4fc67 | ||
|
6e8277c91d | ||
|
9071ac3788 | ||
|
f1b1239950 | ||
|
71b6203d9c | ||
|
fa0e77ebaf | ||
|
6e38061655 | ||
|
ac2c420487 | ||
|
a29b851500 | ||
|
bc17a2df19 | ||
|
d701b537f0 | ||
|
4683ff5a46 | ||
|
06c1ef94bc | ||
|
e2958b6ae1 | ||
|
a2971ec1d0 | ||
|
1634403e28 | ||
|
57da4b39ad | ||
|
5374999967 | ||
|
60f3698200 | ||
|
83b1843f3f | ||
|
b2d2940ef1 | ||
|
3c0c524186 | ||
|
4eef2c6dde | ||
|
af9cfb16e4 | ||
|
9340f73f1a | ||
|
66d02d02e2 | ||
|
44165275e7 | ||
|
dcda61390c | ||
|
58a7a20c53 | ||
|
d0bc8c0f7f | ||
|
26fcdbe8e3 | ||
|
704ed1e725 | ||
|
702aab846e | ||
|
fbc07cec80 | ||
|
b1b61fddbf | ||
|
89096ad329 | ||
|
e5b1a6cf93 | ||
|
523ce3cb33 | ||
|
ea36c97ac7 | ||
|
5e7b5f1691 | ||
|
8fb3d5b579 | ||
|
cafa0ebd06 | ||
|
a2fee75749 | ||
|
0725d945de | ||
|
41ebc07fd0 | ||
|
c59fdc5f1d | ||
|
23ed306148 | ||
|
657c10a9cc | ||
|
8da1912fff | ||
|
fd375dd50f | ||
|
69e2a79488 | ||
|
e5af7b3027 | ||
|
9c532acce4 | ||
|
1d085c35d0 | ||
|
09d898c035 | ||
|
12e6af2492 | ||
|
f3a5ce76e3 | ||
|
8ca4e12b22 | ||
|
e021750d7b | ||
|
43fa3fb5fd | ||
|
853da1f9e2 | ||
|
346cea1db8 | ||
|
c6ca52aba8 | ||
|
5863a5c3f6 | ||
|
43d614ba7c | ||
|
fb0672480f | ||
|
3d1a4cbb33 | ||
|
0494ef7f32 | ||
|
9850227fe4 | ||
|
4f22f8489a | ||
|
210844c9f8 | ||
|
e9095eaff5 | ||
|
950c7a5937 | ||
|
9cbac21f17 | ||
|
30f83865f1 | ||
|
b6d86ab4ba | ||
|
2355820034 | ||
|
679e3aae62 | ||
|
21754293c8 | ||
|
d4a865080c | ||
|
b79131f9bc | ||
|
7aad397860 | ||
|
b209c40d99 | ||
|
d8122150a1 | ||
|
e507f71619 | ||
|
966f6f6850 | ||
|
d35fe91246 | ||
|
2f9509c249 | ||
|
0810d86314 | ||
|
52e43aa03c | ||
|
d875d41e4c | ||
|
82ec74eee1 | ||
|
3390b0587d | ||
|
433040f363 | ||
|
8cc0eeebc3 | ||
|
803906e8cd | ||
|
03f4939fe1 | ||
|
066e5fc55d | ||
|
aeb9dec141 | ||
|
bfa3d6b8ff | ||
|
4fb0f9ac7b | ||
|
e5eeb77292 | ||
|
2e5b245167 | ||
|
a37c6030e9 | ||
|
13ca93e9db | ||
|
749079767d | ||
|
d8a444099f | ||
|
0dc5544e2e | ||
|
ac41769faa | ||
|
bcbc4e09a5 | ||
|
888460d2e3 | ||
|
c5be2d398a | ||
|
798676e2eb | ||
|
ad6b0ae4f1 | ||
|
9829c5c201 | ||
|
fd6fbbc92f | ||
|
6aaab429fb | ||
|
d00f51edcb | ||
|
0c1e85e5db | ||
|
ed3b8c1422 | ||
|
7574f0aa3d | ||
|
62c4e1c656 | ||
|
af88ee6e86 | ||
|
30d60d643f | ||
|
0d63029c4c | ||
|
c58e019b69 | ||
|
249cced4c7 | ||
|
2a4bd4c006 | ||
|
569a0091c3 | ||
|
beaf6fb776 | ||
|
9f8614397b | ||
|
0c3c0286e9 | ||
|
026cd9391e | ||
|
58a293f6c8 | ||
|
0e6d98fd1e | ||
|
7d8bfc6099 | ||
|
2844a30d91 | ||
|
9b0c825f92 | ||
|
428af98b5d | ||
|
505e384343 | ||
|
9fe43dc7b2 | ||
|
9955169c75 | ||
|
d350362c47 | ||
|
26a0d7a62e | ||
|
091f071cb5 | ||
|
401c6baca4 | ||
|
bbe59b9dbb | ||
|
02fd718ca7 | ||
|
a00945ae1f | ||
|
a599842933 | ||
|
da08e75e73 | ||
|
a129aa547c | ||
|
eceb3fa282 | ||
|
a16a8373d3 | ||
|
4a516bf64d | ||
|
43285d49b1 | ||
|
3d081ed0c3 | ||
|
9ad1835322 | ||
|
05737e0512 | ||
|
8b65a1cb5c | ||
|
179701330f | ||
|
50f87275e0 | ||
|
f8037bf484 | ||
|
3f3d799870 | ||
|
3bb5553698 | ||
|
ad826cfb77 | ||
|
fabfd1a9ce | ||
|
ecd8311921 | ||
|
2939d03879 | ||
|
2d3315f9ad | ||
|
7c8dec3671 | ||
|
6bed665368 | ||
|
5a5ee9cc0c | ||
|
3784469c59 | ||
|
1544546cdd | ||
|
7bd7326794 | ||
|
0a117e0c09 | ||
|
3b48de2c47 | ||
|
0295b0ded0 | ||
|
4bddf3ca33 | ||
|
a8472c0831 | ||
|
a56cf44b4c | ||
|
a213a797a0 | ||
|
4cd74cb0bf | ||
|
b722d178e7 | ||
|
bf8cb44595 | ||
|
6e3d3e0a4b | ||
|
352ca21300 | ||
|
5399224ff0 | ||
|
574e4b695a | ||
|
2e1959f3ef | ||
|
8829123ade | ||
|
1812e732bb | ||
|
021716cf80 | ||
|
3f499ca32d | ||
|
a11eae4aaa | ||
|
61f7988820 | ||
|
7d47d56bdd | ||
|
1a6ce7ea0a | ||
|
9c487ec304 | ||
|
5d593ecbc3 | ||
|
9153c997eb | ||
|
904e15667d | ||
|
cdccc4723b | ||
|
88775366db | ||
|
0d188fa96c | ||
|
fd1b426d4f | ||
|
e1a5fcb928 | ||
|
d77581d717 | ||
|
81f5e05840 | ||
|
e312c03414 | ||
|
6c6093d46b | ||
|
61faa5ae06 | ||
|
ccfca4e246 | ||
|
f4fa300fac | ||
|
404a01b29b | ||
|
3cae424fb4 | ||
|
ad926d2def | ||
|
96f9d8c38a | ||
|
3c43ef8fc2 | ||
|
0d71103959 | ||
|
da07c95497 | ||
|
ccafbe8a3a | ||
|
bed658178e | ||
|
7b6e873b2a | ||
|
780ecc3c06 | ||
|
97f4cfa60d | ||
|
66bf0f89bf | ||
|
246fc3006c | ||
|
aa42d2cd4e | ||
|
4583305c76 | ||
|
f3473e8765 | ||
|
e855403d7a | ||
|
d3a51b280a | ||
|
9863b718a0 | ||
|
0551981b07 | ||
|
e6639cd01c | ||
|
8d39873360 |
2
LICENSE
@@ -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.
|
||||
|
||||
|
@@ -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 |
246
README.md
@@ -1,10 +1,8 @@
|
||||
# dotSCAD 3.1
|
||||
# dotSCAD 3.3
|
||||
|
||||
> **Reduce the burden of mathematics/algorithm when playing OpenSCAD.**
|
||||
|
||||

|
||||
|
||||
[](https://github.com/JustinSDK/lib-openscad/blob/master/LICENSE)
|
||||

|
||||
|
||||
## Introduction
|
||||
|
||||
@@ -12,7 +10,7 @@ Some of my [3D models](https://github.com/JustinSDK/dotSCAD#examples) require co
|
||||
|
||||
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. 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.
|
||||
|
||||
@@ -20,13 +18,13 @@ OpenSCAD uses three library locations, the installation library, built-in librar
|
||||
|
||||
Every public module/function has the same name as the .scad file. Here's an example using the `line2d` module:
|
||||
|
||||
use <line2d.scad>;
|
||||
use <line2d.scad>
|
||||
|
||||
line2d(p1 = [0, 0], p2 = [5, 0], width = 1);
|
||||
|
||||
The library uses directories to categorize some modules/functions. For example, vx_circle.scad exists in `voxel` directory. Prefix the directory name when using `vx_circle`.
|
||||
|
||||
use <voxel/vx_circle.scad>;
|
||||
use <voxel/vx_circle.scad>
|
||||
|
||||
points = vx_circle(radius = 10);
|
||||
for(pt = points) {
|
||||
@@ -39,111 +37,109 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
|
||||
|
||||
[](examples#dogfooding-examples)
|
||||
|
||||
# API Documentation
|
||||
# API Reference
|
||||
|
||||
## 2D Module
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**arc**(radius, angle, width = 1, width_mode = "LINE_CROSS")](https://openhome.cc/eGossip/OpenSCAD/lib3x-arc.html) | create an arc.
|
||||
[**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.
|
||||
[**hull_polyline2d**(points, width = 1)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hull_polyline2d.html) | create a 2D polyline from a list of `[x, y]`.
|
||||
[**line2d**(p1, p2, width = 1, p1Style = "CAP_SQUARE", p2Style = "CAP_SQUARE")](https://openhome.cc/eGossip/OpenSCAD/lib3x-line2d.html) | create a line from two points.
|
||||
[**multi_line_text**(lines, line_spacing = 15, size = 10, font = "Arial", ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-multi_line_text.html) | create multi-line text from a list of strings.
|
||||
[**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 = 1, startingStyle = "CAP_SQUARE", endingStyle = "CAP_SQUARE", ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyline2d.html) | create a polyline from a list of `[x, y]` coordinates.
|
||||
[**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 = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_square.html) | create a rounded square in the first quadrant.
|
||||
[**rounded_square**(size, corner_r[, center])](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_square.html) | create a rounded square in the first quadrant.
|
||||
|
||||
## 3D Module
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**crystal_ball**(radius, theta = 360, phi = 180, thickness = undef)](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).
|
||||
[**hull_polyline3d**(points, diameter = 1)](https://openhome.cc/eGossip/OpenSCAD/lib3x-hull_polyline3d.html) | create a 3D polyline from a list of `[x, y, z]`.
|
||||
[**line3d**(p1, p2, diameter = 1, p1Style = "CAP_CIRCLE", p2Style = "CAP_CIRCLE")](https://openhome.cc/eGossip/OpenSCAD/lib3x-line3d.html) | create a 3D line from two points.
|
||||
[**loft**(sections, slices = 1)](https://openhome.cc/eGossip/OpenSCAD/lib3x-loft.html) | develop a smooth skin between crosssections with different geometries.
|
||||
[**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 = "CAP_CIRCLE", endingStyle = "CAP_CIRCLE")](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyline3d.html) | create a polyline from a list of `[x, y, z]`.
|
||||
[**rounded_cube**(size, corner_r, center = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_cube.html) | create a cube in the first octant.
|
||||
[**rounded_cylinder**(radius, h, round_r, convexity = 2, center = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_cylinder.html) | create a rounded cylinder.
|
||||
[**starburst**(r1, r2, n, height)](https://openhome.cc/eGossip/OpenSCAD/lib3x-starburst.html) | a 3D version of [`shape_starburst`](https://openhome.cc/eGossip/OpenSCAD/lib3x-starburst.html).
|
||||
[**sweep**(sections, triangles = "SOLID")](https://openhome.cc/eGossip/OpenSCAD/lib3x-sweep.html) | develop a smooth skin from crosssections with the same umber of sides.
|
||||
[**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.
|
||||
|
||||
## Transformation
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**along_with**(points, angles, twist = 0, scale = 1.0, method = "AXIS_ANGLE")](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 = 24)](https://openhome.cc/eGossip/OpenSCAD/lib3x-bend.html) | bend a 3D object.
|
||||
[**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 = [0, 0], sy = [0, 0], sz = [0, 0])](https://openhome.cc/eGossip/OpenSCAD/lib3x-shear.html) | shear all child elements along the X-axis, Y-axis, or Z-axis.
|
||||
[**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.
|
||||
|
||||
## 2D Function
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**bijection_offset**(pts, d, epsilon = 0.0001)](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.
|
||||
[**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 = false, epsilon = 0.0001)](https://openhome.cc/eGossip/OpenSCAD/lib3x-in_shape.html) | check whether a point is inside a shape.
|
||||
[**trim_shape**(shape_pts, from, to, epsilon = 0.0001)](https://openhome.cc/eGossip/OpenSCAD/lib3x-trim_shape.html) | trim a tangled-edge shape to a non-tangled shape.
|
||||
[**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/3D Function
|
||||
|
||||
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 = 0.1, closed = false, angle_threshold = 0)](https://openhome.cc/eGossip/OpenSCAD/lib3x-bezier_smooth.html) | use bazier curves to smooth a path.
|
||||
[**cross_sections**(shape_pts, path_pts, angles, twist = 0, scale = 1.0)](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 = 0.0001)](https://openhome.cc/eGossip/OpenSCAD/lib3x-in_polyline.html) | check whether a point is on a line.
|
||||
[**lines_intersection**(line1, line2, ext = false, epsilon = 0.0001)](https://openhome.cc/eGossip/OpenSCAD/lib3x-lines_intersection.html) | find the intersection of two line segments. Return `[]` if lines don't intersect.
|
||||
[**paths2sections**(paths)](https://openhome.cc/eGossip/OpenSCAD/lib3x-paths2sections.html) | given a list of paths, this function returns all cross-sections described by those paths.
|
||||
[**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.
|
||||
[**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 = false)](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.
|
||||
[**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.
|
||||
|
||||
## Path
|
||||
|
||||
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 = "CT_CLK")](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 = "CT_CLK")](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.
|
||||
[**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 = 0)](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 = "CT_CLK")](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 = "CT_CLK")](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 = "SPI_DOWN", rt_dir = "CT_CLK")](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 = 1, begin_angle = 0, end_angle = 0, ...) ](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]]`.
|
||||
[**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 = 24)](https://openhome.cc/eGossip/OpenSCAD/lib3x-bend_extrude.html) | extrude and bend a 2D shape.
|
||||
[**box_extrude**(height, shell_thickness, bottom_thickness, offset_mode = "delta", chamfer = false, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-box_extrude.html) | create a box (container) from a 2D object.
|
||||
[**ellipse_extrude**(semi_minor_axis, height, center = false, convexity = 10, twist = 0, slices = 20)](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 = 90, twist = 0, convexity = 10)](https://openhome.cc/eGossip/OpenSCAD/lib3x-rounded_extrude.html) | extrude a 2D object roundly from 0 to 180 degrees.
|
||||
[**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 = "LINE_CROSS")](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_arc.html) | return points on the path of an arc shape.
|
||||
[**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 = 30, t_step = 0.1)](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 = 1.0, closed = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_path_extend.html) | extend a 2D stroke along a path to create a 2D shape.
|
||||
[**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 = 0)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_square.html) | return shape points of a rounded square or rectangle.
|
||||
[**shape_starburst**(r1, r2, n)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_starburst.html) | returns shape points of a star.
|
||||
[**shape_superformula**(phi_step, m1, m2, n1, n2 = 1, n3 = 1, a = 1, b = 1)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_superformula.html) | return shape points of [Superformula](https://en.wikipedia.org/wiki/Superformula).
|
||||
[**shape_taiwan**(h, distance = 0)](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 = 0)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shape_trapezium.html) | return shape points of an isosceles trapezoid.
|
||||
[**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
|
||||
|
||||
@@ -153,7 +149,7 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
|
||||
[**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.
|
||||
[**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
|
||||
@@ -162,27 +158,28 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**util/bsearch**(sorted, target)](https://openhome.cc/eGossip/OpenSCAD/lib3x-bsearch.html) | search a value in a list whose elements must be sorted by zyx.
|
||||
[**util/has**(lt, elem, sorted = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-has.html) | return `true` if `lt` contains elem.
|
||||
[**util/binary_search**(sorted, target[, lo, hi])](https://openhome.cc/eGossip/OpenSCAD/lib3x-binary_search.html) | search a value in a sorted list.
|
||||
[**util/contains**(lt, elem)](https://openhome.cc/eGossip/OpenSCAD/lib3x-contains.html) | return `true` if `lt` contains `elem`.
|
||||
[**util/find_index**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-find_index.html) | return the index of the first element that satisfies the testing function.
|
||||
[**util/dedup**(lt, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-dedup.html) | eliminate duplicate vectors.
|
||||
[**util/flat**(lt, depth = 1)](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/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", idx = 0)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sort.html) | sort a list.
|
||||
[**util/sorted**(lt[, cmp, key, reverse])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sorted.html) | sort a list.
|
||||
[**util/sum**(lt)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sum.html) | use `+` to sum up all elements in a list.
|
||||
[**util/swap**(lt, i, j)](https://openhome.cc/eGossip/OpenSCAD/lib3x-swap.html) | swap two elements in a list.
|
||||
[**util/zip**(lts, combine)](https://openhome.cc/eGossip/OpenSCAD/lib3x-zip.html) | make a list that aggregates elements from each of the lists.
|
||||
[**util/every**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-every.html) | test whether all elements in the list pass the test implemented by the provided function.
|
||||
[**util/some**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-some.html) | test whether at least one element in the list passes the test implemented by the provided function.
|
||||
[**util/count**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-count.html) | return the number of times `test` return `true` in the list.
|
||||
|
||||
### util/random
|
||||
|
||||
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 = 0, max_value = 1, seed_value = undef)](https://openhome.cc/eGossip/OpenSCAD/lib3x-rand.html) | generate a pseudo random number.
|
||||
[**util/shuffle**(lt, seed = undef)](https://openhome.cc/eGossip/OpenSCAD/lib3x-shuffle.html) | randomizes the order of the elements.
|
||||
[**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
|
||||
|
||||
@@ -235,9 +232,10 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
|
||||
[**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 = [0, 0], sy = [0, 0], sz = [0, 0])](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_shearing**([sx, sy, sz])](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_shearing.html) | generate a transformation matrix which can pass into `multmatrix` to shear all child elements along the X-axis, Y-axis, or Z-axis in 3D.
|
||||
[**matrix/m_translation**(v)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_translation.html) | generate a transformation matrix which can pass into multmatrix to translates (moves) its child elements along the specified vector.
|
||||
[**maxtrix/m_transpose**(m)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_transpose.html) | transpose a matrix.
|
||||
[**matrix/m_replace**(m, i, j, value)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_replace.html) | replace the aᵢⱼ element of a matrix.
|
||||
|
||||
## Point Transformation
|
||||
|
||||
@@ -245,10 +243,10 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
|
||||
--|--
|
||||
[**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 = 360, twist = 0)](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_ring.html) | transform a point inside a rectangle to a point of a ring.
|
||||
[**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 = [180, 360])](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 = [360, 360], twist = 0)](https://openhome.cc/eGossip/OpenSCAD/lib3x-ptf_torus.html) | transform a point inside a rectangle to a point of a torus.
|
||||
[**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.
|
||||
|
||||
@@ -258,11 +256,12 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
|
||||
--|--
|
||||
[**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_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.
|
||||
[**triangle/tri_subdivide**(shape_pts[, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_subdivide.html) | subdivide a triangle `n` times.
|
||||
|
||||
----
|
||||
|
||||
@@ -270,10 +269,10 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**turtle/footprints2**(cmds, start = [0, 0])](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 = [0, 0, 0])](https://openhome.cc/eGossip/OpenSCAD/lib3x-footprints3.html) | a 3D verion of `footprint2`.
|
||||
[**turtle/lsystem2**(axiom, rules, n, angle, leng = 1, heading = 0, ...)](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 = 1, heading = 0, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-lsystem3.html) | 3D implementation of [L-system](https://en.wikipedia.org/wiki/L-system).
|
||||
[**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`.
|
||||
|
||||
@@ -281,40 +280,40 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**voxel/vx_ascii**(char, center = false, invert = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_ascii.html) | generate 8x8 voxel points of printable ASCII characters (codes 32dec to 126dec).
|
||||
[**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 = false)](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 = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_contour.html) | return the contour which encircles the area.
|
||||
[**voxel/vx_curve**(points, tightness = 0)](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 = false, thickness = 1)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_cylinder.html) | return points that can be used to draw a voxel-style cylinder.
|
||||
[**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 = false, invert = false)](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 = false, invert = false, normalize = false)](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_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 = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_polygon.html) | return points that can be used to draw a voxel-style polygon.
|
||||
[**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 = false, thickness = 1)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vx_sphere.html) | return points that can be used to draw a voxel-style sphere.
|
||||
[**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.
|
||||
|
||||
## Part
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**part/cone**(radius, length = 0, spacing = 0.5, angle = 50, void = false, ends = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-cone.html) | create a cone for rotatable models.
|
||||
[**part/connector_peg**(radius, height, spacing = 0.5, void = false, ends = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-connector_peg.html) | create a connector peg.
|
||||
[**part/joint_T**(shaft_r, shaft_h, t_leng, thickness, spacing = 0.5, center = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-joint_T.html) | create a joint_T for rotatable models.
|
||||
[**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.
|
||||
|
||||
## Surface
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**surface/sf_bend**(levels, radius, thickness, depth, angle = 180, invert = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_bend.html) | bend a photo.
|
||||
[**surface/sf_ring**(levels, radius, thickness, depth, angle = 360, twist = 0, invert = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_ring.html) | turn a photo into a ring.
|
||||
[**surface/sf_solidify**(surface1, surface2, slicing = "SLASH")](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_solidify.html) | solidify two square surfaces.
|
||||
[**surface/sf_sphere**(levels, radius, thickness, depth, angle = [180, 360], invert = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_sphere.html) | map a photo onto a sphere.
|
||||
[**surface/sf_square**(levels, thickness, depth, x_twist = 0, y_twist = 0, invert = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_square.html) | turn a photo into a twistable square.
|
||||
[**surface/sf_torus**(levels, radius, thickness, depth, angle = [360, 360], twist = 0, invert = false)](https://openhome.cc/eGossip/OpenSCAD/lib3x-sf_torus.html) | turn a photo to a torus.
|
||||
[**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.
|
||||
@@ -325,38 +324,63 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**noise/nz_cell**(points, p, dist = "euclidean")](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 = undef)](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 = undef)](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 = undef)](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 = undef)](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 = undef)](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 = undef)](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 = undef, grid_w = 10, dist = "euclidean")](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 = undef, grid_w = 10, dist = "euclidean")](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 = undef, tile_w = 10, dist = "euclidean")](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 = undef, tile_w = 10, dist = "euclidean")](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.
|
||||
[**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 = undef)](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 = 1, ...)](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 = undef, spacing = 1, ...)](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 = 1)](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 = undef, spacing = 1)](https://openhome.cc/eGossip/OpenSCAD/lib3x-vrn3_space.html) | create a [Voronoi](https://en.wikipedia.org/wiki/Voronoi_diagram) in the first octant.
|
||||
[**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 = [0, 0], ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_cells.html) | return cell data of a square maze.
|
||||
[**maze/mz_square**([rows, columns, start, init_cells, x_wrapping, y_wrapping, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square.html) | return cell data of a square maze.
|
||||
[**maze/mz_square_get**(cell, query)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_get.html) | a helper for getting data from a square-maze cell.
|
||||
[**maze/mz_square_walls**(cells, rows, columns, cell_width, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_walls.html) | a helper for creating square wall data from maze cells.
|
||||
[**maze/mz_hex_walls**(cells, rows, columns, cell_radius, ...)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hex_walls.html) | a helper for creating hex wall data from maze cells.
|
||||
[**maze/mz_squarewalls**(cells, cell_width[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_squarewalls.html) | a helper for creating square wall data from maze cells.
|
||||
[**maze/mz_hexwalls**(cells, cell_radius[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hexwalls.html) | a helper for creating hex wall data from maze cells.
|
||||
[**maze/mz_square_initialize**(rows, columns, mask)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_initialize.html) | a helper for initializing cell data of a maze.
|
||||
[**maze/mz_hamiltonian**(rows, columns, start = [0, 0], seed = undef)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hamiltonian.html) | create a hamiltonian path from a maze.
|
||||
[**maze/mz_theta_cells**(rows, beginning_number, start = [0, 0], seed = undef)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta_cells.html) | return cell data of a theta maze.
|
||||
[**maze/mz_theta_get**(cell, query)](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta_get.html) | a helper for getting data from a theta-maze cell.
|
||||
[**maze/mz_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**(rings, beginning_number[, start, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta.html) | return cell data of a theta maze.
|
||||
[**maze/mz_tiles**(cells[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_tiles.html) | turn maze cells into tiles.
|
||||
|
||||
## Polyhedra
|
||||
|
||||
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.
|
||||
|
||||
## Point Picking
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**pp/pp_disk**(radius, value_count[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_disk.html) | generate random points over a disk.
|
||||
[**pp/pp_sphere**(radius, value_count[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_sphere.html) | pick random points on the surface of a sphere.
|
||||
[**pp/pp_poisson2**(size, r[, start, k, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_poisson2.html) | perform poisson sampling over a rectangle area.
|
||||
[**pp/pp_poisson3**(size, r[, start, k, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_poisson3.html) | perform poisson sampling over a cube space.
|
||||
|
||||
----
|
116
RELEASE.md
@@ -1,5 +1,121 @@
|
||||
> Version numbers are based on [Semantic Versioning](https://semver.org/).
|
||||
|
||||
# v3.3
|
||||
|
||||
## Deprecated
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
**rails2sections** | use [`maxtrix/m_transpose`](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_transpose.html) instead.
|
||||
**util/sort** | use [`util/sorted`](https://openhome.cc/eGossip/OpenSCAD/lib3x-sorted.html) instead.
|
||||
**util/has** | use [`util/contains`](https://openhome.cc/eGossip/OpenSCAD/lib3x-contains.html) instead.
|
||||
**util/bsearch** | use [`util/binary_search`](https://openhome.cc/eGossip/OpenSCAD/lib3x-binary_search.html) instead.
|
||||
**maze/mz_square_cells** | use [`maze/mz_square`](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square.html).
|
||||
**maze/mz_square_walls** | use [`maze/mz_squarewalls`](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_squarewalls.html) instead.
|
||||
**maze/mz_hex_walls** | use [`maze/mz_hexwalls`](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hexwalls.html) instead.
|
||||
**maze/mz_theta_cells** | use [`maze/mz_theta`](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta.html) instead.
|
||||
|
||||
|
||||
## Util
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**util/sorted**(lt[, cmp, key, reverse])](https://openhome.cc/eGossip/OpenSCAD/lib3x-sorted.html) | sort a list.
|
||||
[**util/contains**(lt, elem)](https://openhome.cc/eGossip/OpenSCAD/lib3x-contains.html) | return `true` if `lt` contains `elem`.
|
||||
[**util/binary_search**(sorted, target[, lo, hi])](https://openhome.cc/eGossip/OpenSCAD/lib3x-binary_search.html) | search a value in a sorted list.
|
||||
[**util/count**(lt, test)](https://openhome.cc/eGossip/OpenSCAD/lib3x-count.html) | return the number of times `test` return `true` in the list.
|
||||
|
||||
## Matrix
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**matrix/m_replace**(m, i, j, value)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_replace.html) | replace the aᵢⱼ element of a matrix.
|
||||
|
||||
## Triangle
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**triangle/tri_subdivide**(shape_pts[, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_subdivide.html) | subdivide a triangle `n` times.
|
||||
|
||||
## Point Picking
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**pp/pp_disk**(radius, value_count[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_disk.html) | generate random points over a disk.
|
||||
[**pp/pp_sphere**(radius, value_count[, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_sphere.html) | pick random points on the surface of a sphere.
|
||||
[**pp/pp_poisson2**(size, r[, start, k, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_poisson2.html) | perform poisson sampling over a rectangle area.
|
||||
[**pp/pp_poisson3**(size, r[, start, k, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-pp_poisson3.html) | perform poisson sampling over a cube space.
|
||||
|
||||
## Maze
|
||||
|
||||
Signature | Description
|
||||
--|--
|
||||
[**maze/mz_square**([rows, columns, start, init_cells, x_wrapping, y_wrapping, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square.html) | return cell data of a square maze.
|
||||
[**maze/mz_squarewalls**(cells, cell_width[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_squarewalls.html) | a helper for creating square wall data from maze cells.
|
||||
[**maze/mz_hexwalls**(cells, cell_radius[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hexwalls.html) | a helper for creating hex wall data from maze cells.
|
||||
[**maze/mz_theta**(rings, beginning_number[, start, seed])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_theta.html) | return cell data of a theta maze.
|
||||
[**maze/mz_tiles**(cells[, left_border, bottom_border])](https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_tiles.html) | turn maze cells into tiles.
|
||||
|
||||
|
||||
# v3.2.2
|
||||
|
||||
Maintenance release: bug fixes & performance improvements.
|
||||
|
||||
# v3.2.1
|
||||
|
||||
Maintenance release: bug fixes & performance improvements.
|
||||
|
||||
# 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:
|
||||
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 67 KiB |
BIN
docs/images/lib3x-mz_hexwalls-1.JPG
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
docs/images/lib3x-mz_square-1.JPG
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
docs/images/lib3x-mz_squarewalls-1.JPG
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
docs/images/lib3x-mz_theta-1.JPG
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
docs/images/lib3x-mz_theta-2.JPG
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
docs/images/lib3x-mz_theta-3.JPG
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
docs/images/lib3x-mz_tiles-1.JPG
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
docs/images/lib3x-mz_tiles-2.JPG
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
docs/images/lib3x-mz_tiles-3.JPG
Normal file
After Width: | Height: | Size: 132 KiB |
BIN
docs/images/lib3x-polyhedra_dodecahedron-1.JPG
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
docs/images/lib3x-polyhedra_hexahedron-1.JPG
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
docs/images/lib3x-polyhedra_icosahedron-1.JPG
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
docs/images/lib3x-polyhedra_octahedron-1.JPG
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
docs/images/lib3x-polyhedra_polar_zonohedra-1.JPG
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
docs/images/lib3x-polyhedra_star-1.JPG
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
docs/images/lib3x-polyhedra_superellipsoid-1.JPG
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
docs/images/lib3x-polyhedra_tetrahedron-1.JPG
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
docs/images/lib3x-polyline_join-1.JPG
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
docs/images/lib3x-polyline_join-2.JPG
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
docs/images/lib3x-pp_disk-1.JPG
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
docs/images/lib3x-pp_poisson2-1.JPG
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
docs/images/lib3x-pp_poisson3-1.JPG
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
docs/images/lib3x-pp_sphere-1.JPG
Normal file
After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
BIN
docs/images/lib3x-rails2sections-1.JPG
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
docs/images/lib3x-rails2sections-2.JPG
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
docs/images/lib3x-shape_star-1.JPG
Normal file
After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
BIN
docs/images/lib3x-tri_subdivide-1.JPG
Normal file
After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
@@ -1,6 +1,6 @@
|
||||
# along_with
|
||||
|
||||
Puts children along the given path. If there's only one child, it will put the child for each point.
|
||||
If you want to place objects precisely, their points and angles are required. When you have only points or you don't care their precise angles, `along_with` puts children along the given path. If there's only one child, it will put the child for each point.
|
||||
|
||||
## Parameters
|
||||
|
||||
@@ -12,8 +12,8 @@ Puts children along the given path. If there's only one child, it will put the c
|
||||
|
||||
## Examples
|
||||
|
||||
use <along_with.scad>;
|
||||
use <shape_circle.scad>;
|
||||
use <along_with.scad>
|
||||
use <shape_circle.scad>
|
||||
|
||||
$fn = 24;
|
||||
|
||||
@@ -24,8 +24,8 @@ Puts children along the given path. If there's only one child, it will put the c
|
||||
|
||||

|
||||
|
||||
use <along_with.scad>;
|
||||
use <shape_circle.scad>;
|
||||
use <along_with.scad>
|
||||
use <shape_circle.scad>
|
||||
|
||||
$fn = 24;
|
||||
|
||||
@@ -44,8 +44,8 @@ Puts children along the given path. If there's only one child, it will put the c
|
||||
|
||||

|
||||
|
||||
use <along_with.scad>;
|
||||
use <golden_spiral.scad>;
|
||||
use <along_with.scad>
|
||||
use <golden_spiral.scad>
|
||||
|
||||
pts_angles = golden_spiral(
|
||||
from = 5,
|
||||
@@ -57,32 +57,32 @@ 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");
|
||||
|
||||

|
||||
|
||||
use <bezier_curve.scad>;
|
||||
use <along_with.scad>;
|
||||
use <bezier_curve.scad>
|
||||
use <along_with.scad>
|
||||
|
||||
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;
|
||||
|
@@ -11,7 +11,7 @@ Returns the angle between two vectors.
|
||||
|
||||
## Examples
|
||||
|
||||
use <angle_between.scad>;
|
||||
use <angle_between.scad>
|
||||
|
||||
assert(angle_between([0, 1], [1, 0]) == 90);
|
||||
assert(angle_between([0, 1, 0], [1, 0, 0]) == 90);
|
||||
|
@@ -13,7 +13,7 @@ Creates an arc. You can pass a 2 element vector to define the central angle. Its
|
||||
|
||||
## Examples
|
||||
|
||||
use <arc.scad>;
|
||||
use <arc.scad>
|
||||
|
||||
$fn = 24;
|
||||
arc(radius = 20, angle = [45, 290], width = 2);
|
||||
@@ -21,7 +21,7 @@ Creates an arc. You can pass a 2 element vector to define the central angle. Its
|
||||
|
||||

|
||||
|
||||
use <arc.scad>;
|
||||
use <arc.scad>
|
||||
|
||||
$fn = 24;
|
||||
arc(radius = 20, angle = [45, 290], width = 2, width_mode = "LINE_OUTWARD");
|
||||
@@ -29,7 +29,7 @@ Creates an arc. You can pass a 2 element vector to define the central angle. Its
|
||||
|
||||

|
||||
|
||||
use <arc.scad>;
|
||||
use <arc.scad>
|
||||
|
||||
$fn = 24;
|
||||
arc(radius = 20, angle = [45, 290], width = 2, width_mode = "LINE_INWARD");
|
||||
|
@@ -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);
|
||||
|
||||

|
||||
|
||||
use <arc_path.scad>;
|
||||
use <hull_polyline2d.scad>;
|
||||
use <arc_path.scad>
|
||||
use <polyline_join.scad>
|
||||
|
||||
$fn = 24;
|
||||
points = arc_path(radius = 20, angle = 135);
|
||||
hull_polyline2d(points, width = 2);
|
||||
polyline_join(points)
|
||||
circle(1);
|
||||
|
||||

|
||||
|
||||
|
@@ -16,8 +16,8 @@ An `init_angle` less than 180 degrees is not recommended because the function us
|
||||
|
||||
## Examples
|
||||
|
||||
use <polyline2d.scad>;
|
||||
use <archimedean_spiral.scad>;
|
||||
use <polyline2d.scad>
|
||||
use <archimedean_spiral.scad>
|
||||
|
||||
points_angles = archimedean_spiral(
|
||||
arm_distance = 10,
|
||||
@@ -32,7 +32,7 @@ An `init_angle` less than 180 degrees is not recommended because the function us
|
||||
|
||||

|
||||
|
||||
use <archimedean_spiral.scad>;
|
||||
use <archimedean_spiral.scad>
|
||||
|
||||
points_angles = archimedean_spiral(
|
||||
arm_distance = 10,
|
||||
@@ -47,22 +47,22 @@ An `init_angle` less than 180 degrees is not recommended because the function us
|
||||
}
|
||||
|
||||

|
||||
|
||||
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");
|
||||
}
|
||||
|
||||

|
||||
|
@@ -14,7 +14,7 @@ When using this module, you should use points to represent the 2D shape. If your
|
||||
|
||||
## Examples
|
||||
|
||||
use <archimedean_spiral_extrude.scad>;
|
||||
use <archimedean_spiral_extrude.scad>
|
||||
|
||||
shape_pts = [
|
||||
[5, 0],
|
||||
|
@@ -14,8 +14,8 @@ Creates visually even spacing of n points on the surface of the sphere. Successi
|
||||
|
||||
## Examples
|
||||
|
||||
use <bauer_spiral.scad>;
|
||||
use <hull_polyline3d.scad>;
|
||||
use <bauer_spiral.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);
|
||||
|
||||

|
||||
|
||||
|
@@ -12,7 +12,7 @@ Bends a 3D object into an arc shape.
|
||||
|
||||
The containing cube of the target object should be laid down on the x-y plane. For example.
|
||||
|
||||
use <bend.scad>;
|
||||
use <bend.scad>
|
||||
|
||||
x = 9.25;
|
||||
y = 9.55;
|
||||
@@ -25,7 +25,7 @@ The containing cube of the target object should be laid down on the x-y plane. F
|
||||
|
||||
Once you have the size of the containing cube, you can use it as the `size` argument of the `bend` module.
|
||||
|
||||
use <bend.scad>;
|
||||
use <bend.scad>
|
||||
|
||||
x = 9.25;
|
||||
y = 9.55;
|
||||
@@ -34,21 +34,22 @@ 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");
|
||||
|
||||

|
||||
|
||||
The arc shape is smoother if the `frags` value is larger.
|
||||
|
||||
use <bend.scad>;
|
||||
use <bend.scad>
|
||||
|
||||
x = 9.25;
|
||||
y = 9.55;
|
||||
z = 1;
|
||||
|
||||
bend(size = [x, y, z], angle = 270, frags = 360)
|
||||
linear_extrude(z)
|
||||
text("A");
|
||||
linear_extrude(z)
|
||||
text("A");
|
||||
|
||||

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

|
||||
|
@@ -12,8 +12,8 @@ Given a path, the `bezier_smooth` function uses bazier curves to smooth all corn
|
||||
|
||||
## Examples
|
||||
|
||||
use <hull_polyline3d.scad>;
|
||||
use <bezier_smooth.scad>;
|
||||
use <polyline_join.scad>
|
||||
use <bezier_smooth.scad>
|
||||
|
||||
width = 2;
|
||||
round_d = 15;
|
||||
@@ -25,19 +25,19 @@ 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);
|
||||
|
||||

|
||||
|
||||
use <bezier_smooth.scad>;
|
||||
use <bezier_smooth.scad>
|
||||
|
||||
round_d = 10;
|
||||
|
||||
@@ -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);
|
||||
|
||||

|
@@ -12,7 +12,7 @@ Move 2D outlines outward or inward by a given amount. Each point of the offsette
|
||||
|
||||
## Examples
|
||||
|
||||
use <bijection_offset.scad>;
|
||||
use <bijection_offset.scad>
|
||||
|
||||
shape = [
|
||||
[15, 0],
|
||||
@@ -22,19 +22,19 @@ 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));
|
||||
|
||||

|
||||
|
||||
use <bijection_offset.scad>;
|
||||
use <path_extrude.scad>;
|
||||
use <bezier_curve.scad>;
|
||||
use <bijection_offset.scad>
|
||||
use <path_extrude.scad>
|
||||
use <bezier_curve.scad>
|
||||
|
||||
shape = [
|
||||
[5, 0],
|
||||
@@ -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);
|
||||
|
||||
|
28
docs/lib3x-binary_search.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# binary_search
|
||||
|
||||
A general-purpose function to search a value in a sorted list.
|
||||
|
||||
**Since:** 3.3
|
||||
|
||||
## Parameters
|
||||
|
||||
- `sorted` : The sorted list.
|
||||
- `target` : The target element or a function literal that returns a negative integer, zero, or a positive integer as the element is less than, equal to, or greater than the value you want to search.
|
||||
- `lo` : Default to 0. The lower bound to be searched.
|
||||
- `hi` : Default to the end of the list. The higher bound to be searched.
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/sorted.scad>
|
||||
use <util/binary_search.scad>
|
||||
|
||||
points = [[1, 1], [3, 4], [7, 2], [5, 2]];
|
||||
lt = sorted(points); // [[1, 1], [3, 4], [5, 2], [7, 2]]
|
||||
|
||||
assert(binary_search(lt, [7, 2]) == 3);
|
||||
|
||||
xIs5 = function(elem) elem[0] - 5;
|
||||
assert(binary_search(lt, xIs5) == 2);
|
||||
|
||||
yIs4 = function(elem) elem[1] - 4;
|
||||
assert(binary_search(lt, yIs4) == 1);
|
@@ -12,14 +12,14 @@ Creates a box (container) from a 2D object.
|
||||
|
||||
## Examples
|
||||
|
||||
use <box_extrude.scad>;
|
||||
use <box_extrude.scad>
|
||||
|
||||
box_extrude(height = 30, shell_thickness = 2)
|
||||
circle(r = 30);
|
||||
|
||||

|
||||
|
||||
use <box_extrude.scad>;
|
||||
use <box_extrude.scad>
|
||||
|
||||
box_extrude(height = 30, shell_thickness = 2)
|
||||
text("XD", size = 40, font = "Cooper Black");
|
||||
|
@@ -11,8 +11,8 @@ The `bsearch` function is a general-purpose function to search a value in a list
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/sort.scad>;
|
||||
use <util/bsearch.scad>;
|
||||
use <util/sort.scad>
|
||||
use <util/bsearch.scad>
|
||||
|
||||
points = [[1, 1], [3, 4], [7, 2], [5, 2]];
|
||||
sorted = sort(points, by = "vt"); // [[1, 1], [5, 2], [7, 2], [3, 4]]
|
||||
|
@@ -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
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
## Examples
|
||||
|
||||
use <bspline_curve.scad>;
|
||||
use <bspline_curve.scad>
|
||||
|
||||
points = [
|
||||
[-10, 0],
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||

|
||||
|
||||
use <bspline_curve.scad>;
|
||||
use <bspline_curve.scad>
|
||||
|
||||
points = [
|
||||
[-10, 0],
|
||||
@@ -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);
|
||||
}
|
||||
@@ -61,7 +62,7 @@
|
||||
|
||||

|
||||
|
||||
use <bspline_curve.scad>;
|
||||
use <bspline_curve.scad>
|
||||
|
||||
points = [
|
||||
[-10, 0],
|
||||
@@ -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);
|
||||
}
|
||||
|
@@ -11,6 +11,6 @@ Choose an element from the given list randomly.
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/choose.scad>;
|
||||
use <util/choose.scad>
|
||||
|
||||
echo(choose([1, 2, 3, 4]));
|
@@ -10,7 +10,7 @@ Sometimes you need all points on the path of a circle. Here's the function. Its
|
||||
|
||||
## Examples
|
||||
|
||||
use <circle_path.scad>;
|
||||
use <circle_path.scad>
|
||||
|
||||
$fn = 24;
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||

|
||||
|
@@ -18,7 +18,7 @@ Create a cone for rotatable models.
|
||||
|
||||
## Examples
|
||||
|
||||
use <part/cone.scad>;
|
||||
use <part/cone.scad>
|
||||
|
||||
radius = 2.5;
|
||||
length = 2;
|
||||
@@ -41,7 +41,7 @@ Create a cone for rotatable models.
|
||||
|
||||

|
||||
|
||||
use <part/cone.scad>;
|
||||
use <part/cone.scad>
|
||||
|
||||
radius = 2.5;
|
||||
length = 2;
|
||||
|
@@ -17,7 +17,7 @@ Create a connector peg.
|
||||
|
||||
## Examples
|
||||
|
||||
use <part/connector_peg.scad>;
|
||||
use <part/connector_peg.scad>
|
||||
|
||||
radius = 2.5;
|
||||
spacing = 0.5;
|
||||
@@ -37,7 +37,7 @@ Create a connector peg.
|
||||
|
||||

|
||||
|
||||
use <part/connector_peg.scad>;
|
||||
use <part/connector_peg.scad>
|
||||
|
||||
radius = 2.5;
|
||||
spacing = 0.5;
|
||||
|
19
docs/lib3x-contains.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# contains
|
||||
|
||||
If `lt` contains `elem`, this function returns `true`.
|
||||
|
||||
**Since:** 3.3
|
||||
|
||||
## Parameters
|
||||
|
||||
- `lt` : A list of vectors.
|
||||
- `elem` : A element.
|
||||
|
||||
## Examples
|
||||
|
||||
use <voxel/vx_circle.scad>
|
||||
use <util/contains.scad>
|
||||
|
||||
pts = vx_circle(10);
|
||||
assert(contains(pts, [2, -10]));
|
||||
assert(!contains(pts, [0, 0]));
|
@@ -11,9 +11,9 @@ Computes contour polygons by applying [marching squares](https://en.wikipedia.or
|
||||
|
||||
## Examples
|
||||
|
||||
use <hull_polyline2d.scad>;
|
||||
use <surface/sf_thicken.scad>;
|
||||
use <contours.scad>;
|
||||
use <polyline_join.scad>
|
||||
use <surface/sf_thicken.scad>
|
||||
use <contours.scad>
|
||||
|
||||
min_value = 1;
|
||||
max_value = 360;
|
||||
@@ -23,10 +23,10 @@ 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)]
|
||||
]
|
||||
];
|
||||
|
||||
sf_thicken(points, 1);
|
||||
@@ -36,7 +36,8 @@ Computes contour polygons by applying [marching squares](https://en.wikipedia.or
|
||||
translate([0, 0, z])
|
||||
linear_extrude(1)
|
||||
for(isoline = contours(points, z)) {
|
||||
hull_polyline2d(isoline, width = 1);
|
||||
polyline_join(isoline)
|
||||
circle(.5);
|
||||
}
|
||||
}
|
||||
|
||||
|
15
docs/lib3x-count.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# count
|
||||
|
||||
Returns the number of times `test` return `true` in the list.
|
||||
|
||||
**Since:** 3.3
|
||||
|
||||
## Parameters
|
||||
|
||||
- `lt` : The list.
|
||||
- `test` : A testing function.
|
||||
|
||||
## Examples
|
||||
|
||||
points = [[7, 2, 2], [1, 1, 2], [3, 4, 2], [3, 4, 2], [1, 2, 3]];
|
||||
assert(count(points, function(p) norm(p) > 5) == 3);
|
@@ -12,9 +12,9 @@ Given a 2D shape, points and angles along the path, this function will return al
|
||||
|
||||
## Examples
|
||||
|
||||
use <sweep.scad>;
|
||||
use <cross_sections.scad>;
|
||||
use <archimedean_spiral.scad>;
|
||||
use <sweep.scad>
|
||||
use <cross_sections.scad>
|
||||
use <archimedean_spiral.scad>
|
||||
|
||||
shape_pts = [
|
||||
[-2, -10],
|
||||
|
@@ -14,7 +14,7 @@ Uses spherical coordinate system to create a crystal ball.
|
||||
|
||||
## Examples
|
||||
|
||||
use <crystal_ball.scad>;
|
||||
use <crystal_ball.scad>
|
||||
|
||||
crystal_ball(radius = 6);
|
||||
|
||||
|
@@ -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.
|
||||
|
||||
@@ -16,8 +16,8 @@ Draws a curved line from control points. The curve is drawn only from the 2nd co
|
||||
|
||||
## Examples
|
||||
|
||||
use <curve.scad>;
|
||||
use <hull_polyline3d.scad>;
|
||||
use <curve.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);
|
||||
|
||||

|
@@ -13,6 +13,8 @@ Eliminating duplicate copies of repeating vectors.
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/dedup.scad>
|
||||
|
||||
eq = function(e1, e2) e1[0] == e2[0] && e1[1] == e2[1] && e1[2] == e2[2];
|
||||
|
||||
points = [[1, 1, 2], [3, 4, 2], [7, 2, 2], [3, 4, 2], [1, 2, 3]];
|
||||
|
@@ -10,6 +10,6 @@ Converts a radian measurement to the corresponding value in degrees.
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/degrees.scad>;
|
||||
use <util/degrees.scad>
|
||||
|
||||
assert(degrees(PI) == 180);
|
||||
|
@@ -10,7 +10,7 @@ Extrudes a 2D object along the path of an ellipse from 0 to 180 degrees. The sem
|
||||
|
||||
## Examples
|
||||
|
||||
use <ellipse_extrude.scad>;
|
||||
use <ellipse_extrude.scad>
|
||||
|
||||
semi_minor_axis = 5;
|
||||
|
||||
@@ -19,7 +19,7 @@ Extrudes a 2D object along the path of an ellipse from 0 to 180 degrees. The sem
|
||||
|
||||

|
||||
|
||||
use <ellipse_extrude.scad>;
|
||||
use <ellipse_extrude.scad>
|
||||
|
||||
semi_minor_axis = 5;
|
||||
|
||||
@@ -28,18 +28,20 @@ Extrudes a 2D object along the path of an ellipse from 0 to 180 degrees. The sem
|
||||
|
||||

|
||||
|
||||
use <ellipse_extrude.scad>;
|
||||
use <ellipse_extrude.scad>
|
||||
|
||||
semi_minor_axis = 5;
|
||||
|
||||
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");
|
||||
|
||||

|
||||
|
||||
use <ellipse_extrude.scad>;
|
||||
use <ellipse_extrude.scad>
|
||||
|
||||
semi_minor_axis = 10;
|
||||
|
||||
|
@@ -11,7 +11,7 @@ The `every` function tests whether all elements in the list pass the test implem
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/every.scad>;
|
||||
use <util/every.scad>
|
||||
|
||||
biggerThanZero = function(elem) elem > 0;
|
||||
assert(every([1, 30, 39, 29, 10, 13], biggerThanZero));
|
@@ -1,6 +1,6 @@
|
||||
# fibonacci_lattice
|
||||
|
||||
Creates visually even spacing of n points on the surface of the sphere. Nearest-neighbor points will all be approximately the same distance apart. There're 8 spirals on the sphere.
|
||||
Creates visually even spacing of n points on the surface of the sphere. Nearest-neighbor points will all be approximately the same distance apart.
|
||||
|
||||
(It's called "visually even spacing" because only the vertices of the 5 [Platonic solids](https://en.wikipedia.org/wiki/Platonic_solid) can be said to be truly evenly spaced around the surface of a sphere.)
|
||||
|
||||
@@ -14,7 +14,7 @@ Creates visually even spacing of n points on the surface of the sphere. Nearest-
|
||||
|
||||
## Examples
|
||||
|
||||
use <fibonacci_lattice.scad>;
|
||||
use <fibonacci_lattice.scad>
|
||||
|
||||
n = 200;
|
||||
radius = 20;
|
||||
@@ -29,9 +29,9 @@ Creates visually even spacing of n points on the surface of the sphere. Nearest-
|
||||
|
||||
|
||||

|
||||
|
||||
use <fibonacci_lattice.scad>;
|
||||
use <hull_polyline3d.scad>;
|
||||
|
||||
use <fibonacci_lattice.scad>
|
||||
use <polyline_join.scad>
|
||||
|
||||
n = 200;
|
||||
radius = 20;
|
||||
@@ -41,15 +41,18 @@ Creates visually even spacing of n points on the surface of the sphere. Nearest-
|
||||
translate(p)
|
||||
sphere(1);
|
||||
}
|
||||
|
||||
sphere(radius);
|
||||
|
||||
spirals = [for(j = [0:7])
|
||||
[for(i = j; i < len(pts); i = i + 8) pts[i]]
|
||||
sphere(radius * 0.9);
|
||||
|
||||
// You can pick spirals from points.
|
||||
spirals = [for(j = [0:20])
|
||||
[for(i = j; i < len(pts); i = i + 21) pts[i]]
|
||||
];
|
||||
|
||||
|
||||
for(spiral = spirals) {
|
||||
hull_polyline3d(spiral, 1);
|
||||
polyline_join(spiral)
|
||||
sphere(.25);
|
||||
}
|
||||
|
||||

|
@@ -11,6 +11,6 @@ Generate a Fibonacci sequence.
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/fibseq.scad>;
|
||||
use <util/fibseq.scad>
|
||||
|
||||
echo(fibseq(1, 10)); // ECHO: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
|
||||
|
@@ -11,6 +11,6 @@ Returns the index of the first element in the list that satisfies the testing fu
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/find_index.scad>;
|
||||
use <util/find_index.scad>
|
||||
|
||||
assert(find_index([10, 20, 30, 40], function(e) e > 10) == 1);
|
@@ -11,31 +11,26 @@ returns a new list with all sub-list elements concatenated into it recursively u
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/flat.scad>;
|
||||
use <util/flat.scad>
|
||||
|
||||
vt = [[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]];
|
||||
|
||||
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]
|
||||
);
|
||||
|
@@ -11,8 +11,8 @@ Drive a turtle with `["forward", length]` or `["turn", angle]`. This function is
|
||||
|
||||
## Examples
|
||||
|
||||
use <polyline2d.scad>;
|
||||
use <turtle/footprints2.scad>;
|
||||
use <polyline_join.scad>
|
||||
use <turtle/footprints2.scad>
|
||||
|
||||
function arc_cmds(radius, angle, steps) =
|
||||
let(
|
||||
@@ -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);
|
||||
|
||||

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

|
||||
|
||||
|
@@ -13,7 +13,7 @@ It returns a vector of `[[x, y], angle]`.
|
||||
|
||||
## Examples
|
||||
|
||||
use <golden_spiral.scad>;
|
||||
use <golden_spiral.scad>
|
||||
|
||||
pts_angles = golden_spiral(
|
||||
from = 3,
|
||||
@@ -28,7 +28,7 @@ It returns a vector of `[[x, y], angle]`.
|
||||
|
||||

|
||||
|
||||
use <golden_spiral.scad>;
|
||||
use <golden_spiral.scad>
|
||||
|
||||
pts_angles = golden_spiral(
|
||||
from = 5,
|
||||
@@ -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");
|
||||
}
|
||||
|
||||

|
@@ -17,7 +17,7 @@ When using this module, you should use points to represent the 2D shape. If your
|
||||
|
||||
## Examples
|
||||
|
||||
use <golden_spiral_extrude.scad>;
|
||||
use <golden_spiral_extrude.scad>
|
||||
|
||||
shape_pts = [
|
||||
[2, -10],
|
||||
@@ -38,8 +38,8 @@ When using this module, you should use points to represent the 2D shape. If your
|
||||
|
||||

|
||||
|
||||
use <shape_circle.scad>;
|
||||
use <golden_spiral_extrude.scad>;
|
||||
use <shape_circle.scad>
|
||||
use <golden_spiral_extrude.scad>
|
||||
|
||||
$fn = 12;
|
||||
|
||||
|
@@ -12,9 +12,9 @@ If `lt` contains `elem`, this function returns `true`. If you want to test eleme
|
||||
|
||||
## Examples
|
||||
|
||||
use <voxel/vx_circle.scad>;
|
||||
use <util/sort.scad>;
|
||||
use <util/has.scad>;
|
||||
use <voxel/vx_circle.scad>
|
||||
use <util/sort.scad>
|
||||
use <util/has.scad>
|
||||
|
||||
pts = vx_circle(10);
|
||||
assert(has(pts, [2, -10]));
|
||||
|
@@ -21,14 +21,14 @@ This function maps keys to values. You can use the following to process the retu
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/map/hashmap.scad>;
|
||||
use <util/map/hashmap_len.scad>;
|
||||
use <util/map/hashmap_put.scad>;
|
||||
use <util/map/hashmap_get.scad>;
|
||||
use <util/map/hashmap_del.scad>;
|
||||
use <util/map/hashmap_keys.scad>;
|
||||
use <util/map/hashmap_values.scad>;
|
||||
use <util/map/hashmap_entries.scad>;
|
||||
use <util/map/hashmap.scad>
|
||||
use <util/map/hashmap_len.scad>
|
||||
use <util/map/hashmap_put.scad>
|
||||
use <util/map/hashmap_get.scad>
|
||||
use <util/map/hashmap_del.scad>
|
||||
use <util/map/hashmap_keys.scad>
|
||||
use <util/map/hashmap_values.scad>
|
||||
use <util/map/hashmap_entries.scad>
|
||||
|
||||
m1 = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
|
||||
assert(hashmap_len(m1) == 3);
|
||||
@@ -39,14 +39,14 @@ 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.
|
||||
|
||||
use <util/map/hashmap.scad>;
|
||||
use <util/map/hashmap_get.scad>;
|
||||
use <util/map/hashmap.scad>
|
||||
use <util/map/hashmap_get.scad>
|
||||
|
||||
function methods(mths) = hashmap(mths);
|
||||
function _(name, instance) = hashmap_get(instance, name);
|
||||
@@ -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])]
|
||||
])
|
||||
);
|
||||
|
||||
|
@@ -7,15 +7,15 @@ 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.
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/map/hashmap.scad>;
|
||||
use <util/map/hashmap_get.scad>;
|
||||
use <util/map/hashmap_del.scad>;
|
||||
use <util/map/hashmap.scad>
|
||||
use <util/map/hashmap_get.scad>
|
||||
use <util/map/hashmap_del.scad>
|
||||
|
||||
m1 = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
|
||||
m2 = hashmap_del(m1, "k1");
|
||||
|
@@ -10,8 +10,8 @@ Returns a list containing all `[key, value]`s in a [util/map/hashmap](https://op
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/map/hashmap.scad>;
|
||||
use <util/map/hashmap_entries.scad>;
|
||||
use <util/map/hashmap.scad>
|
||||
use <util/map/hashmap_entries.scad>
|
||||
|
||||
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
|
||||
echo(hashmap_entries(m)); // a list contains ["k1", 10], ["k2", 20], ["k3", 30]
|
||||
|
@@ -7,14 +7,14 @@ This function gets the value of the specified key from a [util/map/hashmap](http
|
||||
## 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.
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/map/hashmap.scad>;
|
||||
use <util/map/hashmap_get.scad>;
|
||||
use <util/map/hashmap.scad>
|
||||
use <util/map/hashmap_get.scad>
|
||||
|
||||
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
|
||||
assert(hashmap_get(m, "k2") == 20);
|
@@ -10,8 +10,8 @@ Returns a list containing all keys in a [util/map/hashmap](https://openhome.cc/e
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/map/hashmap.scad>;
|
||||
use <util/map/hashmap_keys.scad>;
|
||||
use <util/map/hashmap.scad>
|
||||
use <util/map/hashmap_keys.scad>
|
||||
|
||||
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
|
||||
|
||||
|
@@ -10,8 +10,8 @@ Returns the length of a [util/map/hashmap](https://openhome.cc/eGossip/OpenSCAD/
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/map/hashmap.scad>;
|
||||
use <util/map/hashmap_len.scad>;
|
||||
use <util/map/hashmap.scad>
|
||||
use <util/map/hashmap_len.scad>
|
||||
|
||||
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
|
||||
assert(hashmap_len(m) == 3);
|
@@ -7,12 +7,16 @@ Puts a key/value pair to a [util/map/hashmap](https://openhome.cc/eGossip/OpenSC
|
||||
## 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
|
||||
|
||||
use <util/map/hashmap.scad>;
|
||||
use <util/map/hashmap_put.scad>;
|
||||
use <util/map/hashmap_get.scad>;
|
||||
use <util/map/hashmap.scad>
|
||||
use <util/map/hashmap_put.scad>
|
||||
use <util/map/hashmap_get.scad>
|
||||
|
||||
m1 = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
|
||||
|
||||
|
@@ -10,8 +10,8 @@ Returns a list containing all values in a [util/map/hashmap](https://openhome.cc
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/map/hashmap.scad>;
|
||||
use <util/map/hashmap_values.scad>;
|
||||
use <util/map/hashmap.scad>
|
||||
use <util/map/hashmap_values.scad>
|
||||
|
||||
m = hashmap([["k1", 10], ["k2", 20], ["k3", 30]]);
|
||||
|
||||
|
@@ -19,12 +19,12 @@ This function models the mathematical set, backed by a hash table. You can use t
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/set/hashset.scad>;
|
||||
use <util/set/hashset_add.scad>;
|
||||
use <util/set/hashset_has.scad>;
|
||||
use <util/set/hashset_del.scad>;
|
||||
use <util/set/hashset_len.scad>;
|
||||
use <util/set/hashset_elems.scad>;
|
||||
use <util/set/hashset.scad>
|
||||
use <util/set/hashset_add.scad>
|
||||
use <util/set/hashset_has.scad>
|
||||
use <util/set/hashset_del.scad>
|
||||
use <util/set/hashset_len.scad>
|
||||
use <util/set/hashset_elems.scad>
|
||||
|
||||
s1 = hashset([1, 2, 3, 4, 5, 2, 3, 5]);
|
||||
assert(hashset_len(s1) == 5);
|
||||
@@ -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]);
|
||||
|
@@ -13,9 +13,9 @@ This function adds an element to a [util/set/hashset](https://openhome.cc/eGossi
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/set/hashset.scad>;
|
||||
use <util/set/hashset_add.scad>;
|
||||
use <util/set/hashset_has.scad>;
|
||||
use <util/set/hashset.scad>
|
||||
use <util/set/hashset_add.scad>
|
||||
use <util/set/hashset_has.scad>
|
||||
|
||||
s1 = hashset([1, 2, 3, 4, 5]);
|
||||
s2 = hashset_add(s1, 9);
|
||||
|
@@ -13,9 +13,9 @@ This function dels an element from a [util/set/hashset](https://openhome.cc/eGos
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/set/hashset.scad>;
|
||||
use <util/set/hashset_del.scad>;
|
||||
use <util/set/hashset_has.scad>;
|
||||
use <util/set/hashset.scad>
|
||||
use <util/set/hashset_del.scad>
|
||||
use <util/set/hashset_has.scad>
|
||||
|
||||
s1 = hashset([1, 2, 3, 4, 5]);
|
||||
s2 = hashset_del(s1, 3);
|
||||
|
@@ -10,9 +10,9 @@ Returns a list containing all elements in a [util/set/hashset](https://openhome.
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/set/hashset.scad>;
|
||||
use <util/set/hashset_elems.scad>;
|
||||
use <util/set/hashset.scad>
|
||||
use <util/set/hashset_elems.scad>
|
||||
|
||||
s = hashset([1, 2, 3, 4, 5]);
|
||||
echo(hashset_elems(s)); // a list contains 1, 2, 3, 4, 5
|
||||
assert(hashset_elems(s) == [1, 2, 3, 4, 5]);
|
||||
|
||||
|
@@ -13,8 +13,8 @@ Returns `true` if a [util/set/hashset](https://openhome.cc/eGossip/OpenSCAD/lib3
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/set/hashset.scad>;
|
||||
use <util/set/hashset_has.scad>;
|
||||
use <util/set/hashset.scad>
|
||||
use <util/set/hashset_has.scad>
|
||||
|
||||
s = hashset([1, 2, 3, 4, 5]);
|
||||
assert(hashset_has(s, 3));
|
||||
|
@@ -10,8 +10,8 @@ Returns the length of the elements in a [util/set/hashset](https://openhome.cc/e
|
||||
|
||||
## Examples
|
||||
|
||||
use <util/set/hashset.scad>;
|
||||
use <util/set/hashset_len.scad>;
|
||||
use <util/set/hashset.scad>
|
||||
use <util/set/hashset_len.scad>
|
||||
|
||||
s = hashset([1, 2, 3, 4, 5]);
|
||||
assert(hashset_len(s) == 5);
|
||||
|
@@ -13,8 +13,8 @@ Gets all points on the path of a spiral around a cylinder. Its `$fa`, `$fs` and
|
||||
|
||||
## Examples
|
||||
|
||||
use <helix.scad>;
|
||||
use <hull_polyline3d.scad>;
|
||||
use <helix.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);
|
||||
|
||||

|
||||
|
||||
use <helix.scad>;
|
||||
use <hull_polyline3d.scad>;
|
||||
use <helix.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);
|
||||
|
||||
|
@@ -21,7 +21,7 @@ Its `$fa`, `$fs` and `$fn` parameters are consistent with the `cylinder` module.
|
||||
|
||||
## Examples
|
||||
|
||||
use <helix_extrude.scad>;
|
||||
use <helix_extrude.scad>
|
||||
|
||||
shape_pts = [
|
||||
[5, -2],
|
||||
@@ -43,7 +43,7 @@ Its `$fa`, `$fs` and `$fn` parameters are consistent with the `cylinder` module.
|
||||
|
||||

|
||||
|
||||
use <helix_extrude.scad>;
|
||||
use <helix_extrude.scad>
|
||||
|
||||
r1 = 40;
|
||||
r2 = 20;
|
||||
|
@@ -10,7 +10,7 @@ This module creates hexagons in a hexagon.
|
||||
|
||||
## Examples
|
||||
|
||||
use <hexagons.scad>;
|
||||
use <hexagons.scad>
|
||||
|
||||
radius = 20;
|
||||
spacing = 2;
|
||||
@@ -20,7 +20,7 @@ This module creates hexagons in a hexagon.
|
||||
|
||||

|
||||
|
||||
use <hexagons.scad>;
|
||||
use <hexagons.scad>
|
||||
|
||||
radius = 20;
|
||||
spacing = 2;
|
||||
|
@@ -8,9 +8,12 @@ Hollows out a 2D object.
|
||||
|
||||
## Examples
|
||||
|
||||
use <hollow_out.scad>;
|
||||
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]);
|
||||
|
||||

|
||||
|
@@ -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
|
||||
);
|
||||
|
||||

|
@@ -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
|
||||
);
|
||||
|
||||

|
||||
|
||||
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);
|
||||
}
|
||||
|
||||

|
@@ -12,7 +12,7 @@ Checks whether a point is on a line.
|
||||
|
||||
## Examples
|
||||
|
||||
use <in_polyline.scad>;
|
||||
use <in_polyline.scad>
|
||||
|
||||
pts = [
|
||||
[0, 0],
|
||||
@@ -20,14 +20,14 @@ Checks whether 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]));
|
||||
|
||||
----
|
||||
|
||||
use <in_polyline.scad>;
|
||||
use <in_polyline.scad>
|
||||
|
||||
pts = [
|
||||
[10, 0, 10],
|
||||
@@ -35,7 +35,7 @@ Checks whether 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]));
|
@@ -13,8 +13,8 @@ Checks whether a point is inside a shape.
|
||||
|
||||
## Examples
|
||||
|
||||
use <shape_taiwan.scad>;
|
||||
use <in_shape.scad>;
|
||||
use <shape_taiwan.scad>
|
||||
use <in_shape.scad>
|
||||
|
||||
points = shape_taiwan(30);
|
||||
|
||||
|
@@ -17,7 +17,7 @@ Create a joint_T for rotatable models.
|
||||
|
||||
## Examples
|
||||
|
||||
use <part/joint_T.scad>;
|
||||
use <part/joint_T.scad>
|
||||
|
||||
$fn = 48;
|
||||
|
||||
|
@@ -6,12 +6,12 @@ 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
|
||||
|
||||
use <util/lerp.scad>;
|
||||
use <util/lerp.scad>
|
||||
|
||||
assert(lerp([0, 0, 0], [100, 100, 100], 0.5) == [50, 50, 50]);
|