Get the book Nature of Code by Daniel Shiffman here and join me on my journey.
Category: The Nature of Code [Cs]
random walk 3D [no boundary + clusters]
Random Walk 1.5
Inspired by “The Nature of Code” by Daniel Shiffman and it’s python translator Jake Hebbert.
Using C# in Grasshopper for Rhinoceros
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | // Philipp Siedler// Daniel Shiffman "The Nature of Code"// Random Walk 1.5private void RunScript(int seed, int time, ref object A, ref object B, ref object C, ref object D, ref object E, ref object F){ List <Point3d> pList = new List<Point3d>(); List <Point3d> pListEx = new List<Point3d>(); List <int> xList = new List<int>(); List <int> indexList = new List<int>(); Walker w = new Walker(); Random random = new Random(seed); int counter = 0; indexList.Add(counter); for(int i = 0; i < time; i++){ int rnd = random.Next(0, 6); w.step(rnd); if(w.boundRebounceCount < 100){ pListEx.Add(w.pos()); } else{ pList.Add(w.pos()); } counter++; if(indexList.Count() == 1){ indexList[0] = counter; } if(w.x == 0 && w.y == 0 && w.z == 1){ indexList.Add(counter); counter = 0; } } A = pList; B = xList; C = counter; D = indexList; E = pListEx; F = w.growthCounter; } // <Custom additional code> public class Walker { public double x; public double y; public double z; public int rnd; public int boundRebounceCount; public int explosionNum; public int growthCounter; //Constructor that takes arguments. public Walker(){ x = 1.0; y = 1.0; z = 1.0; rnd = 0; growthCounter = 0; boundRebounceCount = 100; } public Point3d pos(){ Point3d posPt = new Point3d(x, y, z); return posPt; } public int step(int rnd){ int choice = rnd; int explosionNum = 0; //GROWING UP if(boundRebounceCount == 100 && growthCounter < 750){ if (choice <= 0){ x++; growthCounter++; } else if(choice <= 1){ x--; growthCounter++; } else if(choice <= 2){ y++; growthCounter++; } else if(choice <= 3){ y--; growthCounter++; } else if(z > 5 && choice <= 4){ z--; growthCounter++; } else if(choice <= 5){ z++; growthCounter++; } } if (growthCounter == 750){ boundRebounceCount = explosionNum; growthCounter = 0; } else if (z <= 0){ boundRebounceCount = explosionNum; } //EXPLODING double factor = 1; if(boundRebounceCount == 99){ x = 0; y = 0; z = 1; boundRebounceCount = 100; } else if(boundRebounceCount < 99){ if(choice == 0){ x = x - factor; boundRebounceCount++; } if(choice == 1){ x = x + factor; boundRebounceCount++; } if(choice == 2){ y = y - factor; boundRebounceCount++; } if(choice == 3){ y = y + factor; boundRebounceCount++; } if(choice == 4){ z = z + factor; boundRebounceCount++; } if(z >= 10 && choice == 5){ z = z - factor; boundRebounceCount++; } else if(choice == 5){ z = z + factor; boundRebounceCount++; } } return choice; } } |
Output:
random walk 3D [boundary + clusters] 2.0
Random Walk 1.4.1
Inspired by “The Nature of Code” by Daniel Shiffman and it’s python translator Jake Hebbert.
Using C# in Grasshopper for Rhinoceros
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | // Philipp Siedler// Daniel Shiffman "The Nature of Code"// Random Walk 1.4.1 private void RunScript(int seed, int time, ref object A, ref object B, ref object C, ref object D, ref object E) { List <Point3d> pList = new List<Point3d>(); List <Point3d> pListEx = new List<Point3d>(); List <int> xList = new List<int>(); List <int> indexList = new List<int>(); Walker w = new Walker(); Random random = new Random(seed); int counter = 0; indexList.Add(counter); for(int i = 0; i < time; i++){ int rnd = random.Next(0, 6); w.step(rnd); if(w.boundRebounceCount < 100){ pListEx.Add(w.pos()); } else{ pList.Add(w.pos()); } counter++; if(indexList.Count() == 1){ indexList[0] = counter; } if(w.x == 0 && w.y == 0 && w.z == 1){ indexList.Add(counter); counter = 0; } } A = pList; B = xList; C = counter; D = indexList; E = pListEx; } // <Custom additional code> public class Walker { public double x; public double y; public double z; public int bound; public int upperBound; public int rnd; public int boundRebounceCount; public int explosionNum; //Constructor that takes arguments. public Walker(){ x = 1.0; y = 1.0; z = 1.0; bound = 10; upperBound = 100; rnd = 0; boundRebounceCount = 100; } public Point3d pos(){ Point3d posPt = new Point3d(x, y, z); return posPt; } public int step(int rnd){ int choice = rnd; int explosionNum = 0; //GROWING UP if(boundRebounceCount == 100){ if (choice <= 0){ x++; } else if(choice <= 1){ x--; } else if(choice <= 2){ y++; } else if(choice <= 3){ y--; } else if(z > 5 && choice <= 4){ z--; } else if(choice <= 5){ z = z + 3; } if (x >= bound || x <= -bound){ boundRebounceCount = explosionNum; } if (y >= bound || y <= -bound){ boundRebounceCount = explosionNum; } if (z <= 0 || z >= upperBound){ boundRebounceCount = explosionNum; } } //EXPLODING double factor = 1; if(boundRebounceCount == 99){ x = 0; y = 0; z = 1; boundRebounceCount = 100; } else if(boundRebounceCount < 99){ if(x >= -bound && choice == 0){ x = x - factor; boundRebounceCount++; } else if(choice == 0){ x = x + factor; boundRebounceCount++; } if(x <= bound && choice == 1){ x = x + factor; boundRebounceCount++; } else if(choice == 1){ x = x - factor; boundRebounceCount++; } if(y >= -bound && choice == 2){ y = y - factor; boundRebounceCount++; } else if(choice == 2){ y = y + factor; boundRebounceCount++; } if(y <= bound && choice == 3){ y = y + factor; boundRebounceCount++; } else if(choice == 3){ y = y - factor; boundRebounceCount++; } if(z <= upperBound && choice == 4){ z = z + factor; boundRebounceCount++; } else if(choice == 4){ z = z - factor; boundRebounceCount++; } if(z >= 10 && choice == 5){ z = z - factor; boundRebounceCount++; } else if(choice == 5){ z = z + factor; boundRebounceCount++; } } return choice; } } |
Output:
random walk 3D [boundary + clusters]
Random Walk 1.4
Inspired by “The Nature of Code” by Daniel Shiffman and it’s python translator Jake Hebbert.
Using C# in Grasshopper for Rhinoceros
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | // Philipp Siedler// Daniel Shiffman "The Nature of Code"// Random Walk 1.4private void RunScript(int seed, int time, ref object A, ref object B, ref object C, ref object D, ref object E) { List <Point3d> pList = new List<Point3d>(); List <Point3d> pListEx = new List<Point3d>(); List <int> xList = new List<int>(); List <int> indexList = new List<int>(); Walker w = new Walker(); Random random = new Random(seed); int counter = 0; indexList.Add(counter); for(int i = 0; i < time; i++){ int rnd = random.Next(0, 7); w.step(rnd); if(w.boundRebounceCount > 0){ pListEx.Add(w.pos()); } else{ pList.Add(w.pos()); } counter++; if(indexList.Count() == 1){ indexList[0] = counter; } if(w.x == 0 && w.y == 0 && w.z == 1){ indexList.Add(counter); counter = 0; } } A = pList; B = xList; C = counter; D = indexList; E = pListEx; } public class Walker { public double x; public double y; public double z; public int bound; public int upperBound; public int rnd; public int boundRebounceCount; public int explosionNum; //Constructor that takes arguments. public Walker(){ x = 1.0; y = 1.0; z = 1.0; bound = 10; upperBound = 100; rnd = 0; boundRebounceCount = 0; } public Point3d pos(){ Point3d posPt = new Point3d(x, y, z); return posPt; } public int step(int rnd){ int choice = rnd; int explosionNum = 100; //GROWING UP if(boundRebounceCount == 0){ if (choice <= 0){ x++; } else if(choice <= 1){ x--; } else if(choice <= 2){ y++; } else if(choice <= 3){ y--; } else if(z > 5 && choice <= 4){ z--; } else if(choice <= 5){ z = z + 3; } if (x >= bound || x <= -bound){ boundRebounceCount = explosionNum; } if (y >= bound || y <= -bound){ boundRebounceCount = explosionNum; } if (z <= 0 || z >= upperBound){ boundRebounceCount = explosionNum; } } //EXPLODING double factor = 1; if(boundRebounceCount > 1){ if (x >= -bound && choice == 0){ x = x - factor; boundRebounceCount--; } else if(x <= bound && choice == 1){ x = x + factor; boundRebounceCount--; } else if(y >= -bound && choice == 2){ y = y - factor; boundRebounceCount--; } else if(y <= bound && choice == 3){ y = y + factor; boundRebounceCount--; } else if(z <= upperBound && choice == 4){ z = z + factor; boundRebounceCount--; } else if(z >= 0 && choice == 5){ if(z > 10){ z = z - factor; boundRebounceCount--; } } } if(boundRebounceCount == 1){ x = 0; y = 0; z = 1; boundRebounceCount = 0; } return choice; } } |
Output:
random walk 3D [boundary + color]
Random Walk 1.3
Inspired by “The Nature of Code” by Daniel Shiffman and it’s python translator Jake Hebbert.
Using C# in Grasshopper for Rhinoceros
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | // Philipp Siedler// Daniel Shiffman "The Nature of Code"// Random Walk 1.3private void RunScript(int seed, int time, ref object A, ref object B) { List <Point3d> pList = new List<Point3d>(); List <int> indexList = new List<int>(); Walker w = new Walker(); Random random = new Random(seed); int counter = 0; for(int i = 0; i < time; i++){ int rnd = random.Next(0, 15); w.step(rnd); pList.Add(w.pos()); counter++; if(w.x == 0 && w.y == 0 && w.z == 0){ indexList.Add(counter); counter = 0; } } A = pList; B = indexList; }public class Walker { public int x; public int y; public int z; public int bound; public int upperBound; public int rnd; public Walker(){ x = 0; y = 0; z = 0; bound = 15; upperBound = 150; rnd = 0; } public Point3d pos(){ Point3d posPt = new Point3d(x, y, z); return posPt; } public int step(int rnd){ int choice = rnd; if (choice <= 1){ x++; } else if(choice <= 3){ x--; } else if(choice <= 5){ y++; } else if(choice <= 7){ y--; } else if(choice <= 9){ z--; } else if(choice <= 14){ z++; } if (x == bound || x == -bound){ x = 0; y = 0; z = 0; } if (y == bound || y == -bound){ x = 0; y = 0; z = 0; } if (z < 0 || z == upperBound){ x = 0; y = 0; z = 0; } return choice; } } |
Output:
random walk 3D [4 choices]
Random Walk 1.2
Inspired by “The Nature of Code” by Daniel Shiffman and it’s python translator Jake Hebbert.
Using C# in Grasshopper for Rhinoceros
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | // Philipp Siedler// Daniel Shiffman "The Nature of Code"// Random Walk 1.2 private void RunScript(int seed, int time, ref object A) { List <Point3d> pList = new List<Point3d>(); Walker w = new Walker(); Random random = new Random(seed); for(int i = 0; i < time; i++){ int rnd = random.Next(0, 6); w.step(rnd); pList.Add(w.pos()); } A = pList; }public class Walker { public int x; public int y; public int z; public int rnd; public Walker(){ x = 0; y = 0; z = 0; rnd = 0; } public Point3d pos(){ Point3d posPt = new Point3d(x, y, z); return posPt; } public int step(int rnd){ int choice = rnd; if (choice == 0){ x++; } else if( choice == 1){ x--; } else if(choice == 2){ y++; } else if(choice == 3){ y--; } else if(choice == 4){ z++; } else if(choice == 5){ z--; } return choice; } } |
Output:
random walk 2D [8 choices]
Random Walk 1.1
Inspired by “The Nature of Code” by Daniel Shiffman and it’s python translator Jake Hebbert.
Using C# in Grasshopper for Rhinoceros
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | // Philipp Siedler// Daniel Shiffman "The Nature of Code"// Random Walk 1.1private void RunScript(int seed, int time, ref object A) { List pList = new List(); Walker w = new Walker(); Random random = new Random(seed); for(int i = 0; i < time; i++){ int rnd = random.Next(0, 8); w.step(rnd); pList.Add(w.pos()); } A = pList; }public class Walker { public int x; public int y; public int rnd; public Walker(){ x = 0; y = 0; rnd = 0; } public Point3d pos(){ Point3d posPt = new Point3d(x, y, 0); return posPt; } public int step(int rnd){ int choice = rnd; if (choice == 0){ x++; } else if( choice == 1){ x--; } else if(choice == 2){ y++; } else if(choice == 3){ y--; } else if(choice == 4){ x++; y++; } else if(choice == 5){ x--; y++; } else if(choice == 6){ x--; y--; } else if(choice == 7){ x++; y--; } return choice; } } |
Output:
random walk 2D [4 choices]
Random Walk 1.0
Inspired by “The Nature of Code” by Daniel Shiffman and it’s python translator Jake Hebbert.
Using C# in Grasshopper for Rhinoceros
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | // Philipp Siedler// Daniel Shiffman "The Nature of Code"// Random Walk 1.0private void RunScript(int seed, int time, ref object A){ List <Point3d> pList = new List<Point3d>(); Walker w = new Walker(); Random random = new Random(seed); for(int i = 0; i < time; i++){ int rnd = random.Next(0, 4); w.step(rnd); pList.Add(w.pos()); } A = pList;}public class Walker{ public int x; public int y; public int rnd; public Walker(){ x = 0; y = 0; rnd = 0; } public Point3d pos(){ Point3d posPt = new Point3d(x, y, 0); return posPt; } public int step(int rnd){ int choice = rnd; if (choice == 0){ x++; } else if( choice == 1){ x--; } else if(choice == 2){ y++; } else if(choice == 3){ y--; } return choice; }} |
Output:
