WORKSHOP_2 C L AY _ H I V E Shajay Bhooshan+Alicia Namad Ariadna Lopez, Leo Claudius Bieling, Basant Elshimy, Anri Gyuloyan
1
2
TABLE OF CONTENTS_
00_Brief
_05
01_Beehives
_09
02_Code
_13
03_Code Parameters
_17
04_Catalogue of Graphs
_23
05_3D Prints
_39
06_Nachi
_43
07_Clay Prints
_49
08_Clay Parameters
_53
09_Further Exploration
_61
3
4
BRIEF_
5
BRIEF_ WORKSHOP 2
This project is about learning to distill a natural phenomenon to its geometric characteristics and actions. The actions are used as parameters for code that produces a series of graphs that demonstrate and elaborate on how this phenomenon, or any phenomenon if subjected to the same procedure, functions. The graphs are used to produce three-dimensional prints that provoke thinking about how written code and two dimensional graphs can be translated into three-dimensional objects through a machine, and how that shapes the code and resulting graphs/ objects.
6
WORKFLOW_ WORKSHOP 2
LOCATE CENTER POINTS IN RHINO
RUN CODE IN ALICE C++
INPUT GEOMETRY INTO GRASSHOPPER
OBTAIN NEW GRAPH TXT FILE
GENERATE CLAY EXTRUSION
EXPORT TXT FILE
ARRAY IN Z - AXIS
BAKE GEOMETRY INTO RHINO
RUN NACHI SIMULATIOIN IN ALICE C++
GENERATE G - CODE
IMPORT INTO GRASSHOPPER
EXPORT NACHI CODE
RUN THE CODE THROUGH TEACH PENDANT
7
8
NATURAL PHENOMENON_
9
10
PHENOMENON_ BEEHIVE The hexagaonal formation of a beehive is determined by a collection of wax bubbles which surfaces come into tension upon reaching contact with each other.
11
12
CODE_
13
CODE_ C:\Users\Leo Claudius Bieling\Desktop\ALICE_PLATFORM_DESKTOP\src\userSrc\sketch_UR\sketch_Beehive_master_with_comments.cpp 1 #include "main.h" 2 #include "ALICE_ROBOT_DLL.h" 3 using namespace ROBOTICS; 4 #include <array> 5 #include <memory> 6 #include<time.h> 7 #include<experimental/generator> 8 using namespace std; 9 using namespace std::experimental; 10 // include "newPhysics" header to the programm 11 #include "newPhysics.h" 12 #include "circle_with_comments.h" // include "circle" header to the programm // include "graph" header to the programm 13 #include "graph.h" 14 15 //// GLOBAL VARIABLES //// 16 SliderGroup S; // slider function // graph function 17 Graph G; 18 newPhysics phy; // newPhysics function // import function 19 importer imp; 20 vector<circle> circles; // sequence container // initial number of point in each circle to 64 21 double NumberOfPoints = 64; 22 double RadiusOfCircle = 0.6; // initial radius of circles to 0.6 // initial boolean value to run code set to false 23 bool play = false; 24 25 //// PROGRAMM //// 26 // SETUP 27 void setup() 28 { phy = * new newPhysics(); // declare newPhysics called "phy" 29 30 imp = *new importer("data/inPts_V12.txt", 10000, 1); // import points from .txt file with maximum 10000 points and scale factor 1 called "imp" imp.readPts_p5(); // importer 31 32 G = *new Graph(); // declare new graph called "G" 33 34 for (int i = 0; i < imp.nCnt; i++) // for loop with "i" from 0 to "imp.nCnt" (amount of points in .txt file) with steps of 1 { 35 36 circle c = *new circle(phy, RadiusOfCircle, imp.nodes[i].pos, NumberOfPoints); // declare new circles called "c" circles.push_back(c); // put circles in the vector container called "circles" 37 } 38 39 S = *new SliderGroup(); // declare new slider group called "S" 40 41 S.addSlider(&NumberOfPoints, "NumberOfPoints"); // slider for number of point on the circles called "NumberOfPoints" 42 S.sliders[0].minVal = 6.00; // minimum Value set to "6.00" 43 S.sliders[0].maxVal = 128.00; // maximum Value set to "128.00" 44 45 S.addSlider(&RadiusOfCircle, "RadiusOfCircle"); // slider for radius of the circles called "RadiusOfCircle" 46 S.sliders[1].minVal = 0.50; // minimum Value set to "0.50" 47 S.sliders[1].maxVal = 5.00; // maximum Value set to "5.00" 48 49 } 50 51 // UPDATE 52 void update(int value) C:\Users\Leo Claudius Bieling\Desktop\ALICE_PLATFORM_DESKTOP\src\userSrc\sketch_UR\sketch_Beehive_master_with_comments.cpp 53 { 54 if (play == true) // if statement fot boolean "play" (switch condition of "play" by press ing "p") 55 { 56 phy.UpdateParticles(0.02, 2); // apply "UpdateParticle" function to "phy" with 0.02 and meth od 2 as arguments 57 for (int i = 0; i < circles.size(); i++) // for loop with "i" from 0 to size of "circles" with steps of 1 58 59 for (int j = 0; j < circles.size(); j++) // nested for loop with "j" from 0 to size of "circles " with steps of 1 { 60 61 if (i == j) continue; // if circle "i" is the same like circle "j" continue circles[i].checkCollisions(circles[j], phy); // apply "checkCollisions" to "circles" 62 63 } } 64 65 } 66 67 // VIEW 68 void draw() 69 { backGround(0.3); // set background color to 0.3 (0 white to 1 black) 70 71 G.draw(); // display graph function S.draw(); // display slider S group 72 73 phy.display(); // display newPhysics function 74 75 for (int i = 0; i < circles.size(); i++)circles[i].draw(phy); // for loop with "i" from 0 to size of "circles" with steps of 1, display "circle" function for each if (play == true) for (auto &ids : circles) ids.updateTrail(phy); // if boolean "play" is true (by pressing "p") run for loop of auto "ids" to display "updateTrail" function 76 77 } 78 79 //// CONTROLLER //// 80 // KEY PRESS 81 void keyPress(unsigned char k, int xm, int ym) // key press function 82 { //if "t" is pressed reset 83 if (k == 'r') setup(); if (k == 'p') play = !play; //if "p" is pressed update code 84 if (k == 'n') setCamera(28, 0, 0, 40, 10); //if "n" is pressed set camera to top view 85 if (k == 'b') setCamera(35, 45, 45, 0, 0); //if "b" is pressed set camera to defined perspective 86 if (k == 'g') 87 for (int i = 0; i < phy.np; i++) 88 G.createVertex(vec(phy.p[i].p.x, phy.p[i].p.y, 0)); //if "g" is pressed create vertices of all phy.p 89 if (k == 'w') G.writeGraph(1.0); //if "w" is pressed export graphes to .txt file 90 91 } 92 93 // MOUSE PRESS 94 void mousePress(int b, int state, int x, int y) 95 { if (GLUT_LEFT_BUTTON == b && GLUT_DOWN == state) 96 S.performSelection(x, y, HUDSelectOn); // move S sliders along X and Y 97 98 } 99 100 // MOUSE MOTION 101 void mouseMotion(int x, int y) 102 { if (GLUT_LEFT_BUTTON == x && GLUT_DOWN == y) 103 S.performSelection(x, y, HUDSelectOn); // make the S sliders selectable 104 105 }
14
1
2
CODE_ CIRCLE CLASS C:\Users\Leo Claudius Bieling\Desktop\ALICE_PLATFORM_DESKTOP\src\userSrc\sketch_UR\circle_with_comments.h 1 #include "main.h" 2 #include "ALICE_ROBOT_DLL.h" 3 using namespace ROBOTICS; 4 #include <array> 5 #include <memory> 6 #include<time.h> 7 #include<experimental/generator> 8 using namespace std; 9 using namespace std::experimental; 10 // define number of frames 11 #define numFrames 500 12 13 //// CIRCLE CLASS //// 14 class circle 15 { 16 public: // make it accessable from everywhere in the code vector<int> ids; // initialise vector container of integers called "ids" 17 18 vec trail[numFrames * 64]; // initialise vector called "trail" int frame; // initialise integer of "frame" 19 20 int trailCnt; // initialise integer of "trailCnt" 21 22 circle() {}; // empty constructor 23 24 // CIRCLE FUNCTION OF CIRCLE CLASS circle(newPhysics &PP , float r , vec cen , float N) //"PP" (passed as Reference), "r" (passed as copy), "cen" (passed as copy), "N" (passed as copy) 25 26 { vec pt; // initialise vector "pt" 27 28 ids.clear(); // clear vector container called "ids" 29 30 for (int i = 0; i < N; i++) // for loop with "i" from 0 to "N" (number of points) in circle with steps of 1 { 31 32 pt.y = r * sin(2 * PI / N * i); // get "y" location of point on circle pt.x = r * cos(2 * PI / N * i); // get "x" location of point on circle 33 34 pt += cen; // add x, y and z coordinates of the center vector to "pt" int n = PP.makeParticle(pt, 1.0, false); // create particle from point 35 36 ids.push_back(n); // put particles in vector container called "ids" PP.p[n].v = PP.p[n].p cen; // create velocity away from center of circles 37 38 PP.p[n].v.normalise(); // normalise velocity vector } 39 40 } 41 42 // CHECK COLLISION FUNCTION OF CIRCLE CLASS void checkCollisions( circle &other , newPhysics &phy) // "other" (passed as Reference), "phy" (passed as Reference) 43 44 { for (int i = 0; i < ids.size(); i++) // for loop with "i" from 0 to size of "ids" with steps of 1 45 46 { int idOfbox = i; // declare integer "idOfbox" as "i" 47 48 int idOfparticle = ids[idOfbox]; // declare integer "idOfparticle" as "ids[idOfbox]" vec a = phy.p[idOfparticle].p; // declare vector "a" as "phy.p[idOfparticle].p" 49 50 for (int j = 0; j < other.ids.size(); j++) // nested for loop with "j" from 0 to size of "other.ids" with steps of 1 51 { 52 C:\Users\Leo Claudius Bieling\Desktop\ALICE_PLATFORM_DESKTOP\src\userSrc\sketch_UR\circle_with_comments.h int idOfbox_o = j; // declare integer "idOfbox_o" (other) as "j" 53 54 int idOfparticle_o = other.ids[idOfbox_o]; // declare integer "idOfparticle_o" (other) as "other.ids[idOfbox_o]" 55 vec b = phy.p[idOfparticle_o].p; // declare vector "b" as "phy.p[idOfparticle_o].p" 56 57 float distance = (b a).mag(); // declare float "distance" as the subtraction of magnitude "b" and "a" 58 59 if (distance < 0.2) // if float "distance" is smaller then 0.2 statement { 60 61 phy.p[idOfparticle].fixed = true; // fix the position of "idOfparticle" if distance to any o the particle is less then 0.2 phy.p[idOfparticle_o].fixed = true; // fix the position of "idOfparticle_o" (other) if dista nce to any othe particle is less then 0.2 62 63 } } 64 65 } } 66 67 // DRAW FUNCTION OF CIRCLE CLASS 68 69 void draw(newPhysics &phy) // "phy" (passed as Reference) { 70 71 for (int i = 1; i < ids.size(); i++) // for loop with "i" from 1 to size of ids with steps of 1 { 72 73 int idOfCurrentPoint = ids[i]; // declare integer "idOfCurrentPoint" as "ids[i]" int idOfPreviousPoint = ids[i1]; // declare integer "idOfPreviousPoint" as "ids[i1]" (previous container of vector) 74 75 drawLine(phy.p[idOfCurrentPoint].p, phy.p[idOfPreviousPoint].p); // draw line between "idOfCurrentPoint" and "idOfPreviousPoint" } 76 77 for (int i = 0; i < frame * 64; i += 64) // for loop with "i" from 0 to integer of "frame" times 64 with steps of 64 78 79 for (int j = i; j < i + ids.size(); j++) // nested for loop with "j" beeing "i" to size of "ids" with steps of 1 { 80 81 vec4 clr = getColour(i, 0, frame * 64); // color setup for "updateTrail" function glColor3f(1, clr.g, clr.b 0.6); // color sheme for "updateTrail" function 82 83 drawLine(trail[j], trail[j 1]); // draw line with color sheme between vectors of trail } 84 85 } // UPDATE TRAIL FUNCTION OF CIRCLE CLASS 86 87 void updateTrail(newPhysics &phy) // "phy" (passed as Reference) { 88 89 for (int i = 0; i < ids.size(); i++) // for loop with "i" from 0 to size of "ids" with steps o f 1 { 90 91 trail[trailCnt] = phy.p[ids[i]].p; // set "trail[trailCnt]" equal to "phy.p[ids[i]].p" trail[trailCnt].z = float(frame) * .02; // increase Z vector of "trail[trailCnt]" linked to fl oat "frame" 92 93 trailCnt++; // increase "trailCnt" by 1 every "frame" if (trailCnt >= numFrames * 64) trailCnt = 0; // set "trailCnt" to 0 after 64 frames 94 95 } 96 97 frame++; // increase frames by 1 every frame if (frame >= numFrames) frame = 0; // set "frame" to 0 after 64 frames 98 99 } 100 };
1
2
15
16
CODE PARAMETERS_
17
CODE_ PARAMETERS These parameters shape the forces that govern the movement of the particles in the code. The production of the different graphs depend on the location and degree of force applied to the particles at a given moment.
degree of repulsion = 0.1 initial radius = 6 final radius = 6
PARAMETER_01 InterParticle Repulsion CONSTANT: Diameter and point count (64) of every circle
degree of repulsion = 0.2 initial radius = 6 final radius = 12
Particle Repulsion
degree of repulsion = 0.3 initial radius = 6 final radius = 25
18
CODE_ PARAMETERS
particle count = 6
PARAMETER_02 Circumference particle count CONSTANT: Diameter and point count (64) of every circle particle count = 12
Particle
particle count = 36
19
CODE_ PARAMETERS
initial radius = 12 distance between CP = 40
PARAMETER_03 Collision between particles CONSTANT: Diameter and point count (64) of every circle
initial radius = 12 distance between CP = 24
Particle Repulsion
initial radius = 12 distance between CP = 18
20
CODE_ PARAMETERS
0.8
PARAMETER_03 Speed of z-axis CONSTANT: Diameter and point count (64) of every circle
a 0.2
0.5 c A
Speed
0.5 0.6 C b
0.4
B
21
22
CELL CATALOGUE_
23
24
PRIMARY FORMATIONS
GEOMETRICAL FORMATIONS
This family of graphs investigates the inital formation of hexagonal geometry in the beehive. The iterations reflect the systematic addition of circles in order to achieve diversified patterns.
This family of graphs investigates the geometrically complex patterns developed from a ruled intial arrangement such as squares and triangles.
SEQUENTIAL FORMATIONS
LINEAR FORMATIONS
This family of graphs investigates the sequential formation of patterns as a result of the consecutive placement of center points
This family of graphs investigates the diversity of circle deformation in a linear arrangement.
25
PRIMARY FORMATIONS_ GRAPH 1 INITIAL CONDITION _ -Center points : 3 -Number of points per circle : 64 -Initial radius : 3.0 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _01.1.1
GRAPH _01.1.2
500 500
GRAPH_01.1.3 250 250
0 0
GRAPH_01.1.4 26
NUMBER OF FRAMES
PRIMARY FORMATIONS_ GRAPH 2 INITIAL CONDITION _ -Center points : 4 -Number of points per circle : 64 -Initial radius : 1.5 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _01.2.1
GRAPH _01.2.2
500 500
GRAPH_01.2.3 250 250
0
GRAPH_01.2.4
0 NUMBER OF FRAMES 27
PRIMARY FORMATIONS_ GRAPH 3 INITIAL CONDITION _ -Center points : 7 -Number of points per circle : 64 -Initial radius : 1.5 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _01.3.1
GRAPH _01.3.2
500 500
GRAPH_01.3.3
250 250
GRAPH_01.3.4
28
0
0 NUMBER OF FRAMES
PRIMARY FORMATIONS_ GRAPH 4 INITIAL CONDITION _ -Center points : 8 -Number of points per circle : 64 -Initial radius : 1.5 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _01.4.1
GRAPH_01.4.2
500
500
GRAPH_01.4.3 250
250
0
GRAPH_01.4.4
0
NUMBER OF FRAMES 29
GEOMETRICAL FORMATIONS_ GRAPH 1 INITIAL CONDITION _ -Center points : 27 -Number of points per circle : 64 -Initial radius : 2.8 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _02.1.1
GRAPH_02.1.2
500
500
250
GRAPH_02.1.3
250
0
0 GRAPH_02.1.4 30
NUMBER OF FRAMES
GEOMETRICAL FORMATIONS_ GRAPH 2 INITIAL CONDITION _ -Center points : 85 -Number of points per circle : 64 -Initial radius : 0.9 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _02.2.1
GRAPH_02.2.2
500
500
GRAPH_02.2.3
250
250
0
GRAPH_02.2.4
0
NUMBER OF FRAMES 31
GEOMETRICAL FORMATIONS_ GRAPH 3 INITIAL CONDITION _ -Center points : 42 -Number of points per circle : 64 -Initial radius : 1.2 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _02.3.1
GRAPH_02.3.2
500
500
250
GRAPH_02.3.3
250
0
GRAPH_02.2.4 32
0
NUMBER OF FRAMES
SEQUENTIAL FORMATIONS_ GRAPH 1 INITIAL CONDITION _ -Center points : 14 -Number of points per circle : 64 -Initial radius : 1.5 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _03.1.1
GRAPH_03.1.2
500
500
GRAPH_03.1.3
250
250
0
GRAPH_03.1.4
0 NUMBER OF FRAMES 33
SEQUENTIAL FORMATIONS_ GRAPH 2 INITIAL CONDITION _ -Center points : 33 -Number of points per circle : 64 -Initial radius : 0.9 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _03.2.1
GRAPH_03.2.2
500 500
GRAPH_03.2.3
250 250
GRAPH_03.2.4 34
0
0 NUMBER OF FRAMES
SEQUENTIAL FORMATIONS_ GRAPH 3 INITIAL CONDITION _ -Center points : 80 -Number of points per circle : 64 -Initial radius : 0.7 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _03.3.1
GRAPH_03.3.2
500
500
250
GRAPH_03.3.3
250
0
GRAPH_03.3.4
0
35
LINEAR FORMATIONS_ GRAPH 1 INITIAL CONDITION _ -Center points : 22 -Number of points per circle : 64 -Initial radius : 1.5 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _04.1.1
GRAPH_04.1.2
500
500 GRAPH_04.1.3
250
250
GRAPH_04.1.4
0
NUMBER OF FRAMES
36
0
LINEAR FORMATIONS_ GRAPH 2 INITIAL CONDITION _ -Center points : 13 -Number of points per circle : 64 -Initial radius : 1.0 PARAMETERS APPLIED_ -InterParticle Repulsion: Growth of circles -Circle collision: Linear arrangement between particles
INITIAL CONDITION GRAPH _04.2.1
GRAPH_04.2.2
500
500
GRAPH_04.2.3
250
250
0
0 GRAPH_04.2.4
NUMBER OF FRAMES 37
38
3D PRINTS_
39
3D PRINTS_ GRAPHS
LINEAR FORMATIONS_GRAPH 1
SEQUENTIAL FORMATIONS_GRAPH 1
40
GEOMETRICAL FORMATIONS_GRAPH 1
3D PRINTS_ IMAGES 3D prints of three graphs.
LINEAR FORMATIONS_GRAPH 1
SEQUENTIAL FORMATIONS_GRAPH 1
GEOMETRICAL FORMATIONS_GRAPH 1
41
42
NACHI_
43
CLAY PRINT_ NACHI MZ07 Number of axis : 6 Rotation Axis 1 : +/-170° Rotation Axis 2 : -135° to 80° Rotation Axis 3 : -136° to 270° Rotation Axis 4 : +/- 190° Rotation Axis 5 : +/- 120° Rotation Axis 6 : +/- 360°
Axis 4
Axis 6
Axis 3
Axis 2
Axis 5
120 mm 280 mm
44
420 mm
280 mm
720 mm
280 mm
320 mm
420 mm
345 mm
420 mm
Axis 1
PRINT_ END EFFECTOR Number of axis : 6 Rotation Axis 1 : +/-170° Rotation Axis 2 : -135° to 80° Rotation Axis 3 : -136° to 270° Rotation Axis 4 : +/- 190° Rotation Axis 5 : +/- 120° Rotation Axis 6 : +/- 360°
ROTATIONAL MOTOR
CONNECTION OF CLAY HOUSE
MOUNTING PLATE FOR AXIS 6
ROTATIONAL SCREW
EXTRUDER
45
CLAY PRINT_ NACHI MZ07 Nachi is a robotic arm which operates with a Windows XP operation system. Nachi is controlled through a tech pendant. The end effector receives signals through an Arduino driver which controls the behaviour of the stepper.
NACHI’s bra Output tool
NACHI STEPPER
12 V
DRIVER
ARDUINO
Driver (up) Arduino (dow
5V
CPU
220 V
LAPTOP
Input tool
OR
FLASH DRIVE
Input tool
Input tool
Stepper inst
TEACH PENDANT
Power Signal
Teach penda
46
Bla bla nachi NACHI’s brain (NB) is a computer with Windows XP wich operates robotic arm by sending signals threw the cabel. Also, NB send signal trew Arduino to Driver to change
CLAY PRINT_ NACHI MZ07
NACHI
END EFFECTOR
ARDUINO
CPU
TEACH PENDANT
47
48
CLAY PRINTS_
49
CLAY PRINT_ TEST 1 -NUMBER OF POINTS PER LAYER : 285 -NUMBER OF CODE LINES PER PROGRAM : 570 -NUMBER OF CODED PROGRAMS : 12 -TOTAL NUMER OF LAYERS : 24 -TOTAL TIME OF PRINT: 2 hrs -NUMBER OF CASUALTIES: 6x
50
CLAY PRINT_ TEST 2 -NUMBER OF POINTS PER LAYER : 182 -NUMBER OF CODE LINES PER PROGRAM : 1,000 -NUMBER OF CODED PROGRAMS : 8 -TOTAL NUMER OF LAYERS : 35 -TOTAL TIME OF PRINT: 2.5 hrs -NUMBER OF CASUALTIES: 4x
51
52
CLAY PARAMETERS_
53
CLAY PRINT_ MIX
54
TEST 1_SCOLA CLAY
TEST 2_CLAY MIX
Drying time too long.
Excess of water
1.5 kg Scola clay 250 ml Water
250 ml Sillica sand: aggregate 500 ml Ball clay: plastic clay. 750 ml China clay: plastic clay. 500 ml Grog 80 Dust: reduces shrinkage and increases thermal shock resistance. 500 ml Potash Feldspar: promotes melting. A component of glaze. 8 ml Sodium dispex: improves stability and mould life. 700 ml water: malleability.
TEST 3_CLAY MIX
TEST 4_FINAL MIX
Excess sand jammed end effector motor
Functional clay that may not facilitate
movement.
sectional variation.
250 ml Sillica sand: aggregate 500 ml Ball clay: plastic clay. 750 ml China clay: plastic clay. 500 ml Grog 80 Dust: reduces shrinkage and increases thermal shock resistance. 500 ml Potash Feldspar: promotes melting. A component of glaze. 8 ml Sodium dispex: improves stability and mould life. 500 ml water: malleability.
250 ml Sillica sand: aggregate 500 ml Ball clay: plastic clay. 750 ml China clay: plastic clay. 500 ml Grog 80 Dust: reduces shrinkage and increases thermal shock resistance. 500 ml Potash Feldspar: promotes melting. A component of glaze. 4.5 ml Sodium dispex: improves stability and mould life. 375 ml water: malleability.
55
16.7
16.7
16.7
4.1 16.7
CLAY_ PARAMETERS
16.7 16.7 5.3
5.3
11.9
3.8
6.0
16.7
16.7
11.0
7.1
4.9
16.7
16.7
These parameters affect the 16.7 qualities of the clay print. The viscosity of the clay, the 16.7 in it amount of air bubbles and the distance between the 5.3 16.7 points in the graph sent to Nachi determine the height, solidity and thickness of the clay print.
11.8
4.7 1.9
5.1
5.2
11.6 16.7
16.7
16.7 4.1
16.7
15.0
7.1 16.7
16.7
11.0 5.3
11.9
3.8
6.0
4.9
16.7
11.8
16.7
14.6
1.9 5.2
11.6
16.7
5.3
11.4
15.0 10.6
9.8
7.2
14.5
6.9
9.5 16.7
16.7
16.7
2.0
16.7
5.1
9.5
2.3
4.7
7.4 9.3
16.7
2.0
16.7 15.0
14.6
Problematic areas where the distance between two or more consecutive points is less than 16 mm, slowing down the movement of Nachi and creating thick piles of clay. 5.3
11.4
10.6 173
174
16.7
9.8 6.9
172
7.4 08
175
CONSTANT: Length of time from one point to the next and air pressure.
176
170 171
9.309
07
169
168
16.7
10
167
177
15.0
11
06
166
178
20
12
05
Problematic areas_01
21 22
165 164
19
179
7.2
16.7 14.5
5.3 9.6
2.3
PARAMETER_01 Distance between points in graph
16.7
5.3 9.6
04 180
03
02
128
14 15
125 124 92
162
16
127
129
123
126
25 26
122
27
121
93
90
120 119
94
95
89
131
118
96 115
116
159
38
158
117
88 132
33 160
34
35
36
37
161
32
31
30
29
28
91
130
163
24
17
01 0
23
18
13
39
87
97 114 98 113
112
40
111
157
110 133 134 82 81 80
85
84
83
78
79
86 109
77 76
101
135
102
75 74
65
136
73
103 64
66
104
105 106
63
137
138
139
108 107
45
155
46 48 49 47
154
51 153
53 152
71 70
61
68
54
69
151 60
140
55 141
150
59 142 143
58 144
149 56 57
148 145 146
56
42 43 44
50 52
62 67
72
156
41
99 100
147
Overlay of the graph of printed points on a photograph of the print, showing the correlation between point distribution and clay thickness. The arrows indicate the movement of the extruder.
CLAY_ PARAMETERS These parameters affect the qualities of the clay print. The viscosity of the clay, the amount of air bubbles in it and the distance between the points in the graph sent to Nachi determine the height, solidity and thickness of the clay print.
PARAMETER_02 Viscosity of clay
Clay that is too liquid does not extrude in straight lines and does not dry fast enough to be able to carry the following layer. It instead mixes with it and spreads horizontally, not allowing the print to acheive height. 7 bar air pressure pushed the clay out too quickly through the extruder.
PARAMETER_03 Pressure from air compressor CONSTANT: Length of time from one point to the next.
223
227
228 229
217 218
216
219
215
230 01
220 20
214
18
213
23
212
24
211
25 26
206 34 35
33
32
31
42
41
40
39
38
37
36
28
29
30
12 43
201
60
199
61
56 62
55 63
53
64
65
198
52
66
80
67
81
79
70 71
194 193 191
73 190 189 188
128
114 82
157
130 129
158
161
83 84
98
110
111
113 112
101
100
99
109
108
102
103
107 104
106 105 162 163 164 165
97
166 96
86
167
95 87
76
168 94
169
88
75
72
192
127
156 131
160
77
195
132
159
78
69
196
133
126
85
68
197
125
115
50
51
134
116
49 54
124
117
48 57
122 123
118
47
202 59 58
154 155
136 135
119
46
203
153
120
45
204
152
137
09
121
44
205
200
11
10
151
138
08
13
27
208
150
139
07
14
149
140
06
15
148
141
05
16
147
142
04
17
146
143
03
22
207
144 145
02
19 21
209
Problematic areas_02/03
226
221
210
224 225
222
89
74
170
93
91
187
171
92
90
176 175 174
172 173
177
186
178
185 184
183
180 182 181
179
Areas where the liquid clay extrudes in puddles due to high air pressure and low clay viscosity . The arrows indicate the movement of the extruder.
57
23
212
24
211
CLAY_ PARAMETERS These parameters affect the qualities of the clay print. The viscosity of the clay, the amount of air bubbles in it and the distance between the points in the graph sent to Nachi determine the height, solidity and thickness of the clay print.
208 207
32
33
206 34
CONSTANT: Length of time from one point to the next
44
204 203
201
57
60
200
56
61
62
54
63
199
53
64
65
66
67
115 114 82
result in weak areas in the clay print
70
195
194
76
71
193 192
217 218
216 214
15
Problematic areas_5
206 34 35
33
38
37
36
28
29
42
41
40
39
12 43
202 59 58 201
60
199
61
56 62
55 63
53
64
65
198
52
66
80
67
81
79
70 71
194 193 191
73 190 189 188
114 82
83 84
98
110
111
113 112
127
109
101
100
99
156 131
128
157
130 129
158
108
102
103
107 104
106 105 162 163 164 165
97
166 96
86
167
95 87
76
168 94
169
88
170
93
89
74
171
92
90
91
187
176 175 174
172 173
177
186
178
185 184
58
132
161
75
72
192
133
126
160
77
195
125
159
78
69
196
134
85
68
197
124
115
50
51
122 123
116
49 54
154 155
136 135
117
48 57
153
138
118
47
203
152
119
46
204
151
140
120
45
150
137
09
121
44
205
200
11
10
149
139
08
13
27 30
180 05 182 181
07
14
179
141
06
26
208
183
16
25
103
104
92
177
147
178148
142
04
184
146
143
03
185
209
144 145
02
24
102
176 175 174 173 91
230 01
17 23
108
1
93
90
228 229
18
212
31
227
186
22
32
226
221
19
213
207
224 225
222
21
109
107
88
220 187 20
219
215
129
The Tool Center Point cannot reach95 beyond 87 remaining 40 cm from Nachiâ&#x20AC;&#x2122;s center while 94 parallel with the printing surface. 89
74 223
73 190 189 188
191
13
96
86
75
72
128
97
78 77
131
85
68
196Points that are unconnected in the graph
132
127
101
100
99
98
84
110
111
113 112
83
79
69
126
116
81
80
125
133
117
50
51
52
124
134
118
49
55
122 123
119
48
202 59 58
136 135
120
47
210
Problematic areas_4
121
46
211
43
205
197
PARAMETER_5 Size of print
11
137
09
10
45
198
PARAMETER_4 Point connections
42
41
40
39
38
37
36
35
31
12
28
29
30
138
08
13
27
139
07
14
26
209
140
06
15
25
210
141
05
16
183
180 182 181
179
Unconnected areas in the graph remain unconnected in the clay. Areas that further than 40 cm from Nachiâ&#x20AC;&#x2122;s center are printed at an angle that results in the clay not following the graph edge.
1
CLAY_ PARAMETERS These parameters affect the qualities of the clay print. The viscosity of the clay, the amount of air bubbles in it and the distance between the points in the graph sent to Nachi determine the height, solidity and thickness of the clay print.
PARAMETER_6 Clay consistency
The clay must be thick and free of air bubbles in order to print consistently. Air bubbles in the clay tank or connecting hose result in gaps in the clay, leaving nothing for the following layer to print on.
CONSTANT: Length of time from one point to the next
Problematic areas_6
In order to prevent gaps in printing, the clay must be consistent and compact in the tank. Shaking the clay tank helps remove air bubbles. The image above highlights areas affected by the bubbes. 59
60
FURTHER CODE EXPLORATIONS_
61
3D CODE_ -
C:\Users\Leo Claudius Bieling\Desktop\ALICE_PLATFORM_DESKTOP\src\userSrc\sketch_UR\circle_3D.h 19 ////CIRCLES ON XY PLANE//// 20 circle(newPhysics &PP, float r, vec cen, float N) //"PP" (passed as Reference), "r" (passed as copy), "cen" (passed as copy), "N" (passed as copy) { 21 22 vec pt; // initialise vector "pt" ids.clear(); // clear vector container called "ids" 23 24 for (int i = 0; i < N; i++) // for loop with "i" from 0 to "N" (number of points) in circle with steps of 1 25 26 { pt.y = r * sin(2 * PI / N * i); // get "y" location of point on circle 27 28 pt.x = r * cos(2 * PI / N * i); // get "x" location of point on circle pt += cen; // add x, y and z coordinates of the center vector to "pt" 29 30 int n = PP.makeParticle(pt, 1.0, false); // create particle from point ids.push_back(n); // put particles in vector container called "ids" 31 32 PP.p[n].v = PP.p[n].p cen; // create velocity away from center of circles PP.p[n].v.normalise(); // normalise velocity vector 33 34 } } 35 36 ////CHANGES FOR SPHERE//// 37 38 sphere(newPhysics &PP , float r , vec cen , float N) // same like CIRCLE { 39 40 vec pt; // same like CIRCLE ids.clear(); // same like CIRCLE 41 42 for (int i = 0; i < N; i++) // same like CIRCLE 43 44 for (int j = 0; j < N; j++) // nested for loop with "j" from 0 to "N" (number of points) in circle with steps of 1 { 45 46 pt.y = r * sin(2 * PI / N * i) * cos(2 * PI / N * j); // get "y" location of point on sphere pt.x = r * sin(2 * PI / N * i) * sin(2 * PI / N * j); // get "x" location of point on sphere 47 48 pt.z = r * cos(2 * PI / N * i); // get "z" location of point on sphere pt += cen; // same like CIRCLE 49 50 int n = PP.makeParticle(pt, 1.0, false); // same like CIRCLE ids.push_back(n); // same like CIRCLE 51 52 PP.p[n].v = PP.p[n].p cen; // same like CIRCLE PP.p[n].v.normalise(); // same like CIRCLE 53 54 } } 55
Changes made to achieve a three-dimensional exploration of code parameters
62
3D EXPLORATION_ -
Initial condition
Interim condition
Final condition
63
Architectural Association DRL London, UK 2016