glv
November 16, 2019, 2:18pm
21
Thank you for the inspiration to do this!
Your template for arcs and pairing made it easy to start on this.
I selected the correct pairs of arcs with a random() and used my arcDraw() to to draw arcs in a simple loop as before.
I did not really need the arcDraw() but it did kick start the process and made for cleaner code with less chance of errors.
And voila!
Should I post code?
3 Likes
noel
November 16, 2019, 2:39pm
22
Do you also have a function to calculate shortest path from one side to the other?
1 Like
Wow, that is nice. Yes @glv please do post the code. I’m looking forward to seeing it.
2 Likes
glv
November 16, 2019, 2:57pm
24
My morning programming exercise inspired by @paulstgeorge
int sp = 30;
int y;
int x;
int[] z = { -1, -1, +1, -1, +1, +1, -1, +1};
void setup()
{
size(600, 600);
noFill();
stroke(255, 255, 0);
strokeWeight(2);
background(0);
x = sp/2;
y = sp/2;
}
void draw()
{
if (y<height)
{
int r=int(random(2));
println(r);
if (r%2 == 0)
{
arcDraw1(1, x, y, sp);
arcDraw1(3, x, y, sp);
}
else
{
arcDraw1(0, x, y, sp);
arcDraw1(2, x, y, sp);
}
x+=sp;
if (x>width)
{
y+=sp;
x=sp/2;
}
}
}
void arcDraw1(int a, int originX, int originY, int sp)
{
arc(originX+z[2*a]*sp/2, originY+z[2*a+1]*sp/2, sp, sp, a*TAU/4, (a+1)*TAU/4);
}
2 Likes
glv
November 16, 2019, 3:53pm
25
@paulstgeorge
We had so much fun with these!
I now use this to keep track of a cool maze so I can reproduce it with a know seed:
seed = int(random(1000));
randomSeed(seed);
println(seed);
Let’s try this next:
I will not look at other code until I have done this! Not today or anytime soon though…
References:
https://processing.org/reference/randomSeed_.html
3 Likes
glv
November 16, 2019, 3:57pm
26
Hello @noel
Tracing through the paths and filling them is on my “to do” fun programming list for a rainy day.
Shortest path between two ends will follow…
I got started on the simple one with lines; the arcs may present a challenge.
noel
November 16, 2019, 4:01pm
27
That was what I was thinking about also.
I was reading this.
https://www.techiedelight.com/find-shortest-path-in-maze/
By changing two lines of your code
int r=int(random(20));
println(r);
if (r <= 12)
one can skew the probabilities of one or the other tile. With a threshold of 0.6 (for example), there are many more long sequences.
2 Likes
What do you see as the ‘tile’? Is it nine concentric circles broken into arcs that can be off or one, and radial lines treated the same way?
@glv
Brilliant! Code please. Looking forward to seeing it.
Chrisir
November 16, 2019, 7:11pm
32
Heck! This thread is so cool!
Why is nobody going 3D though?
Back in October of 2009, I posted about three spherical labyrinth puzzles . The idea with these toys is to flip, twist, and spin the sphere...
4 Likes
glv
November 16, 2019, 7:32pm
34
I am enjoying this topic and creating 2D mazes that are simple and elegant; this is new for me and engaging.
It is quite the leap from:
to 3D mazes.
Can we please keep this topic focused on 2D mazes and enjoy the simplicity of that for now?
Please.
@glv You know those radar screens:
so, if you have a radial line (from that goes from the centre of the circle to the circumference) and that line sweeps through 2*PI. The line is made from segments that can be yellow or black. Sometimes, some of the pixels in the line can leave a trace. Could this work?
glv
November 16, 2019, 8:43pm
36
@paulstgeorge
I created some gears a while back with PVectors to “tile” the gear shapes, lines and vertices and trying that approach.
This is my gear video at the spot where I drew individual gears:
Gear Building
The circular maze is my quick and very rough first pass at this; it will look better once I get around to it.
I am going to try this from scratch; that is how I like to code these days.
Keep the ideas coming! But I will not look at any finished code for now.
Still thinking about the tiling…
And again… thanks for this topic!
glv
November 16, 2019, 9:01pm
38
I solved the maze too!
I wrote code to:
display image from maze
draw my progress in red with lines as I mousePressed() my path
logged mouse location in an array from each mousePress() and store in an array
redraw my path in green with a keyPress
Later I will trace through path slowly…
I could have printed it but wanted to be environmentally friendly.
That was fun!
2 Likes
noel
November 16, 2019, 9:54pm
39
I actually designed these cogwheels for linear sawing machines. Slow forward working movement, and fast retrieve.
2 Likes
Would you adam and eve it? Look what I found on Sketchpad. It is by Keith O’Hara.
/*
* 10 PRINT CHR$ (205.5 + RND (1)); : GOTO 10
* http://www.slate.com/articles/technology/books/2012/11/computer_programming_10_print_chr_205_5_rnd_1_goto_10_from_mit_press_reviewed.html
* Keith O'Hara <kohara@bard.edu>
* Dec 2012
*
*/
//c64 pallete colors from
// http://www.blitzbasic.com/Community/posts.php?topic=52312
color[] c64 = {
#FFFFFF, #744335, #7CACBA,
#7B4890, #64974F, #403285, #BFCD7A,
#7B5B2F, #4f4500, #a37265, #505050,
#787878, #a4d78e, #786abd, #9f9f9f
};
void setup() {
size(640, 480);
strokeWeight(5);
mouseMoved();
}
void mouseMoved() {
background(0);
int c = int(map(mouseX, 0, width, 10, 50));
int i = int(map(mouseY, 0, width, 0, c64.length));
stroke(c64[i]);
for (int x = 0; x < width; x += c) {
for (int y = 0; y < height; y += c) {
if (random(1) < .5) {
line(x + 2, y + 2, x + c - 2, y + c - 2);
}
else {
line(x + 2, y + c - 2, x + c - 2, y + 2);
}
}
}
}
void draw() {
}
2 Likes