/* Talks am Montag, 14. März 2022, ab 19:00 */
[stratum0-wiki.git] / Gesellschaftsspiel-Replikator%2FConnect_V1.mw
1 <pre>
2
3 // Rivers, Roads and Rails / Contact
4 // 2014-01-23 V1
5 // by Stratum 0
6 // License: WTF
7
8 $fn=20;
9 Kante=100;
10 Hoehe=4;
11 Kerbe=2;
12 RadiusA=Kante/4;
13 RadiusB=Kante*2/4;
14 RadiusC=Kante*3/4;
15 Strichdicke=8;
16 Kreisdicke=Strichdicke*1.5;
17 Kachelnummer=27;
18
19 // Es fehlen noch die Teile, wo eine Farbe endet und eine andere beginnt.
20
21 // 1 rot: Leer schwarz: Leer blau: kleine Kurve Normalteil
22 // 2 rot: Leer schwarz: Leer blau: Große Kurve Normalteil
23 // 3 rot: Leer schwarz: Leer blau: Geradeaus Normalteil
24 // 4 rot: Leer schwarz: Leer blau: Endet Normalteil
25 // 5 rot: Leer schwarz: Kurve gen rot blau: Leer Normalteil
26 // 6 rot: Leer schwarz: Kurve gen rot blau: kleine Kurve Gabel
27 // 7 rot: Leer schwarz: Kurve gen rot blau: Große Kurve Normalteil
28 // 8 rot: Leer schwarz: Kurve gen rot blau: Geradeaus Weiche
29 // 9 rot: Leer schwarz: Kurve gen rot blau: Endet Normalteil
30 // 10 rot: Leer schwarz: Kurve gen blau blau: Leer Normalteil
31 // 11 rot: Leer schwarz: Kurve gen blau blau: kleine Kurve Normalteil
32 // 15 rot: Leer schwarz: Geradeaus blau: Leer Normalteil
33 // 16 rot: Leer schwarz: Geradeaus blau: kleine Kurve Weiche
34 // 18 rot: Leer schwarz: Geradeaus blau: Geradeaus Normalteil
35 // 19 rot: Leer schwarz: Geradeaus blau: Endet Normalteil
36 // 20 rot: Leer schwarz: Endet blau: Leer Normalteil
37 // 21 rot: Leer schwarz: Endet blau: kleine Kurve Normalteil
38 // 23 rot: Leer schwarz: Endet blau: Geradeaus Normalteil
39 // 25 rot: kleine Kurve schwarz: Leer blau: Leer Normalteil
40 // 26 rot: kleine Kurve schwarz: Leer blau: kleine Kurve Weiche
41 // 27 rot: kleine Kurve schwarz: Leer blau: Große Kurve Normalteil
42 if (Kachelnummer==27)
43 {
44 difference()
45 {
46 CreateTile("white");
47 translate ([-RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusA,"red");
48 translate ([-RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusC,"blue");
49 }
50 };
51 // 28 rot: kleine Kurve schwarz: Leer blau: Geradeaus Weiche
52 if (Kachelnummer==28)
53 {
54 difference()
55 {
56 CreateTile("white");
57 translate ([-RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusA,"red");
58 translate ([0,-RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"blue");
59 }
60 };
61 // 29 rot: kleine Kurve schwarz: Leer blau: Endet Normalteil
62 if (Kachelnummer==29)
63 {
64 difference()
65 {
66 CreateTile("white");
67 translate ([-RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusA,"red");
68 translate ([-RadiusA,-RadiusA,Hoehe-Kerbe]) CreateEnd(RadiusA,"blue");
69 }
70 };
71 // 30 rot: kleine Kurve schwarz: Kurve gen rot blau: Leer Normalteil
72 if (Kachelnummer==30)
73 {
74 difference()
75 {
76 CreateTile("white");
77 translate ([RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusA,"red");
78 translate ([RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusB,"black");
79 }
80 };
81 // 31 rot: kleine Kurve schwarz: Kurve gen rot blau: kleine Kurve Gabel
82 if (Kachelnummer==31)
83 {
84 difference()
85 {
86 CreateTile("white");
87 translate ([RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusA,"red");
88 translate ([RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusB,"black");
89 translate ([-RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusA,"blue");
90 }
91 };
92 // 32 rot: kleine Kurve schwarz: Kurve gen rot blau: Große Kurve Normalteil
93
94
95 if (Kachelnummer==32)
96 {
97 difference()
98 {
99 CreateTile("white");
100 translate ([RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusA,"red");
101 translate ([RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusB,"black");
102 translate ([RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusC,"blue");
103 }
104 };
105 // 33 rot: kleine Kurve schwarz: Kurve gen rot blau: Geradeaus Weiche
106 if (Kachelnummer==33)
107 {
108 difference()
109 {
110 CreateTile("white");
111 translate ([RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusA,"red");
112 translate ([RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusB,"black");
113 translate ([0,-RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"blue");
114 }
115 };
116 // 34 rot: kleine Kurve schwarz: Kurve gen rot blau: Endet Normalteil
117 if (Kachelnummer==34)
118 {
119 difference()
120 {
121 CreateTile("white");
122 translate ([-RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusA,"red");
123 translate ([-RadiusB,RadiusB,Hoehe-Kerbe]) CreateArch(RadiusB,"black");
124 translate ([-RadiusA,-RadiusA,Hoehe-Kerbe]) CreateEnd(RadiusA,"blue");
125 }
126 };
127 // 35 rot: kleine Kurve schwarz: Kurve gen blau blau: Leer Gabel
128 // 36 rot: kleine Kurve schwarz: Kurve gen blau blau: kleine Kurve Gabel
129 // 39 rot: kleine Kurve schwarz: Kurve gen blau blau: Endet Gabel
130 // 40 rot: kleine Kurve schwarz: Geradeaus blau: Leer Weiche
131 // 41 rot: kleine Kurve schwarz: Geradeaus blau: kleine Kurve Kreuzung
132 // 43 rot: kleine Kurve schwarz: Geradeaus blau: Geradeaus Weiche
133 // 44 rot: kleine Kurve schwarz: Geradeaus blau: Endet Weiche
134 // 45 rot: kleine Kurve schwarz: Endet blau: Leer Normalteil
135 // 48 rot: kleine Kurve schwarz: Endet blau: Geradeaus Weiche
136 // 49 rot: kleine Kurve schwarz: Endet blau: Endet Normalteil
137 // 50 rot: Große Kurve schwarz: Leer blau: Leer Normalteil
138 if (Kachelnummer==50)
139 {
140 difference()
141 {
142 CreateTile("white");
143 translate ([RadiusA*2,RadiusA*2,Hoehe-Kerbe]) CreateArch(RadiusC,"red");
144 }
145 };
146 // 51 rot: Große Kurve schwarz: Leer blau: kleine Kurve Normalteil
147 // 60 rot: Große Kurve schwarz: Kurve gen blau blau: Leer Normalteil
148 // 61 rot: Große Kurve schwarz: Kurve gen blau blau: kleine Kurve Normalteil
149 if (Kachelnummer==61)
150 {
151 difference()
152 {
153 CreateTile("white");
154 translate ([Kante/2,Kante/2,0]) CreateArch(RadiusA,"blue");
155 translate ([Kante/2,Kante/2,0]) CreateArch(RadiusB,"black");
156 translate ([Kante/2,Kante/2,0]) CreateArch(RadiusC,"red");
157 }
158 };
159 // 71 rot: Große Kurve schwarz: Endet blau: kleine Kurve Normalteil
160 // 75 rot: Geradeaus schwarz: Leer blau: Leer Normalteil
161 // 76 rot: Geradeaus schwarz: Leer blau: kleine Kurve Weiche
162 if (Kachelnummer==76)
163 {
164 difference()
165 {
166 CreateTile("white");
167 translate ([0,RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"red");
168 translate ([-Kante/2,-Kante/2,Hoehe-Kerbe]) CreateArch(RadiusA,"blue");
169 }
170 };
171 // 78 rot: Geradeaus schwarz: Leer blau: Geradeaus Normalteil
172 // 79 rot: Geradeaus schwarz: Leer blau: Endet Normalteil
173 // 86 rot: Geradeaus schwarz: Kurve gen blau blau: kleine Kurve Weiche
174 if (Kachelnummer==86)
175 {
176 difference()
177 {
178 CreateTile("white");
179 translate ([0,RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"red");
180 translate ([-RadiusB,-RadiusB,Hoehe-Kerbe]) CreateArch(RadiusB,"black");
181 translate ([-Kante/2,-Kante/2,Hoehe-Kerbe]) CreateArch(RadiusA,"blue");
182 }
183 };
184 // 90 rot: Geradeaus schwarz: Geradeaus blau: Leer Normalteil
185 if (Kachelnummer==90)
186 {
187 difference()
188 {
189 CreateTile("white");
190 translate ([0,RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"red");
191 translate ([0,0,Hoehe-Kerbe]) CreateStraight(RadiusA,"black");
192 }
193 };
194
195 // 91 rot: Geradeaus schwarz: Geradeaus blau: kleine Kurve Weiche
196 if (Kachelnummer==91)
197 {
198 difference()
199 {
200 CreateTile("white");
201 translate ([0,RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"red");
202 translate ([0,0,Hoehe-Kerbe]) CreateStraight(RadiusA,"black");
203 translate ([-Kante/2,-Kante/2,Hoehe-Kerbe]) CreateArch(RadiusA,"blue");
204 }
205 };
206
207
208 // 93 rot: Geradeaus schwarz: Geradeaus blau: Geradeaus Normalteil
209 if (Kachelnummer==93)
210 {
211
212 difference()
213 {
214 CreateTile("white");
215 translate ([0,RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"red");
216 translate ([0,0,Hoehe-Kerbe]) CreateStraight(RadiusA,"black");
217 translate ([0,-RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"blue");
218 }
219 };
220 // 94 rot: Geradeaus schwarz: Geradeaus blau: Endet Normalteil
221 if (Kachelnummer==94)
222 {
223 difference()
224 {
225 CreateTile("white");
226 translate ([0,RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"red");
227 translate ([0,0,Hoehe-Kerbe]) CreateStraight(RadiusA,"black");
228 translate ([-RadiusA,-RadiusA,Hoehe-Kerbe]) CreateEnd(RadiusA,"blue");
229 }
230 };
231
232
233 // 95 rot: Geradeaus schwarz: Endet blau: Leer Normalteil
234 if (Kachelnummer==95)
235 {
236 difference()
237 {
238 CreateTile("white");
239 translate ([0,RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"red");
240 translate ([-Kante/4,0,Hoehe-Kerbe]) CreateEnd(RadiusB,"black");
241 }
242 };
243
244
245 // 96 rot: Geradeaus schwarz: Endet blau: kleine Kurve Weiche
246 if (Kachelnummer==96)
247 {
248 difference()
249 {
250 CreateTile("white");
251 translate ([-Kante/2,-Kante/2,Hoehe-Kerbe]) CreateArch(RadiusA,"blue");
252 translate ([-Kante/4,0,Hoehe-Kerbe]) CreateEnd(RadiusB,"black");
253 translate ([0,Kante/4,Hoehe-Kerbe]) CreateStraigt(RadiusC,"red");
254 }
255 };
256 // 98 rot: Geradeaus schwarz: Endet blau: Geradeaus Normalteil
257 if (Kachelnummer==98)
258 {
259 difference()
260 {
261 CreateTile("white");
262 translate ([0,RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"red");
263 translate ([-Kante/4,0,Hoehe-Kerbe]) CreateEnd(RadiusB,"black");
264 translate ([0,-RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"blue");
265 }
266 };// 99 rot: Geradeaus schwarz: Endet blau: Endet Normalteil
267 // 101 rot: Endet schwarz: Leer blau: kleine Kurve Normalteil
268 // 103 rot: Endet schwarz: Leer blau: Geradeaus Normalteil
269 // 110 rot: Endet schwarz: Kurve gen blau blau: Leer Normalteil
270
271
272 if (Kachelnummer==1096)
273 {
274
275 difference()
276 {
277 CreateTile("white");
278 translate ([-Kante/2,-Kante/2,Hoehe-Kerbe]) CreateArch(RadiusA,"red");
279 translate ([-Kante/4,0,Hoehe-Kerbe]) CreateEnd(RadiusB,"black");
280 translate ([0,Kante/4,Hoehe-Kerbe]) CreateStraigt(RadiusC,"blue");
281 }
282 };
283
284
285 // 111 rot: Endet schwarz: Kurve gen blau blau: kleine Kurve Normalteil
286 if (Kachelnummer==111)
287 {
288 difference()
289 {
290 CreateTile("white");
291 translate ([-Kante/4,Kante/4,Hoehe-Kerbe]) CreateEnd(RadiusC,"red");
292 translate ([-Kante/2,-Kante/2,Hoehe-Kerbe]) CreateArch(RadiusB,"black");
293 translate ([-Kante/2,-Kante/2,Hoehe-Kerbe]) CreateArch(RadiusA,"blue");
294 }
295 };
296
297
298 // 115 rot: Endet schwarz: Geradeaus blau: Leer Normalteil
299 if (Kachelnummer==115)
300 {
301 difference()
302 {
303 CreateTile("white");
304 translate ([-Kante/4,Kante/4,Hoehe-Kerbe]) CreateEnd(RadiusC,"red");
305 translate ([0,0,Hoehe-Kerbe]) CreateStraight(RadiusB,"black");
306 }
307 };
308 // 116 rot: Endet schwarz: Geradeaus blau: kleine Kurve Weiche
309 if (Kachelnummer==116)
310 {
311 difference()
312 {
313 CreateTile("white");
314 translate ([-Kante/4,Kante/4,Hoehe-Kerbe]) CreateEnd(RadiusC,"red");
315 translate ([0,0,Hoehe-Kerbe]) CreateStraight(RadiusB,"black");
316 translate ([-Kante/2,-Kante/2,Hoehe-Kerbe]) CreateArch(RadiusA,"blue");
317 }
318 };
319
320 // 118 rot: Endet schwarz: Geradeaus blau: Geradeaus Normalteil
321 if (Kachelnummer==118)
322 {
323 difference()
324 {
325 CreateTile("white");
326 translate ([-RadiusA,RadiusA,Hoehe-Kerbe]) CreateEnd(RadiusC,"red");
327 translate ([0,0,Hoehe-Kerbe]) CreateStraight(RadiusB,"black");
328 translate ([0,-RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusC,"blue");
329 }
330 };
331 // 119 rot: Endet schwarz: Geradeaus blau: Endet Normalteil
332 if (Kachelnummer==119)
333 {
334 difference()
335 {
336 CreateTile("white");
337 translate ([-RadiusA,RadiusA,Hoehe-Kerbe]) CreateEnd(RadiusC,"red");
338 translate ([0,0,Hoehe-Kerbe]) CreateStraight(RadiusB,"black");
339 translate ([0,-RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusC,"blue");
340 }
341 };
342 // 121 rot: Endet schwarz: Endet blau: kleine Kurve Normalteil
343 if (Kachelnummer==121)
344 {
345 difference()
346 {
347 CreateTile("white");
348 translate ([-RadiusA,RadiusA,Hoehe-Kerbe]) CreateEnd(RadiusC,"red");
349 translate ([-RadiusA,0,Hoehe-Kerbe]) CreateEnd(RadiusB,"black");
350 translate ([-RadiusA*2,-RadiusA*2,Hoehe-Kerbe]) CreateArch(RadiusA,"blue");
351 }
352 };
353
354 // 123 rot: Endet schwarz: Endet blau: Geradeaus Normalteil
355 if (Kachelnummer==123)
356 {
357 difference()
358 {
359 CreateTile("white");
360 translate ([-RadiusA,RadiusA,Hoehe-Kerbe]) CreateEnd(RadiusC,"red");
361 translate ([-RadiusA,0,Hoehe-Kerbe]) CreateEnd(RadiusB,"black");
362 translate ([0,-RadiusA,Hoehe-Kerbe]) CreateStraight(RadiusA,"blue");
363 }
364 };
365
366 module CreateTile(myColor)
367 {
368 // Basisdomino erstellen
369 color(myColor) cube([Kante, Kante, Hoehe], center=true);
370 }; // End Module
371
372
373 module CreateArch(myRadius, myColor)
374 {
375 difference () // Innenkreis vom Außenkreis abziehen.
376 {
377 color (myColor)
378 cylinder(Hoehe, myRadius+Strichdicke, myRadius+Strichdicke, center=true, $fn=60);
379 cylinder(Hoehe, myRadius-Strichdicke, myRadius-Strichdicke, center=true, $fn=60);
380 }
381 };
382
383 module CreateEnd(myLane, myColor)
384 {
385 color(myColor) cube([Kante/2,Strichdicke*2, Hoehe], center=true);
386 color(myColor) translate ([Kante/4,0,0]) cylinder(Hoehe, Kreisdicke, Kreisdicke, center=true, $fn=60);
387 };
388
389 module CreateStraight(myLane, myColor)
390 {
391 color(myColor) cube([Kante,Strichdicke*2, Hoehe], center=true);
392
393 };
394 </pre>
This page took 0.068306 seconds and 5 git commands to generate.