ss ss
In Vitro 4 (flash module 4):

In Vitro 1 >
In Vitro 2 >
In Vitro 3 >
In Vitro 4 >

3 Basic properties have been applied to this module:
-Initialization
-Direction
-Movement

What I have discovered in this module is really interesting. If you move the boundaries (the vertical blue bar on the right and on the left) you will extend the area or the universe in which the cells can operate. When you extend these barriers, the cells move to the new area that you have selected. But if you restrict the area to the minimum, by dragging the right bar towards the left bar, the cells start breaking the rules and begin "dying" or "moving" out of the area by extracting themselves from the application. In the core application, no code or specifications have been implemented to order such behavior. As with any application, the behavior of the elements is determined by the code. If the elements or objects do not follow the code, we have what we call a "bug": the application freezes because the computer does not know what to do with the new parameters.

Here we do have a new experience. When the area is restricted to the minimum, only two cells are able to stay in the area. The cells (objects) are breaking the code and are reinventing the boundaries of the application by moving out of the application. If you look closely at the code, you will be able to see that no code has been added to order the cells to leave the area if they lack space. I was in fact expecting to have the following result:

The cells should have stayed where they were, freezing or checking because they could not move within the minimum area. Instead, the application and the processor reinvented the behavior and expulsed the cells (objects) out of the area. This is almost the principle of Cancer. Cancerous cells reinvent the rule within the body for no particular reason. This test does not give any answers, and we do not pretend to have found a new way to approach a cell system. But we can now monitor the application and try to understand why the cells (objects) are breaking the rules.

Free cell using Processor for free movement.

Exhibits freedom in a space that can be expanded or contracted. The cell behaves differently depending on allocated space. Some cells become crazy as they are contained in a restrictive area, they leave the area of their own accord, creating a notion of chaos in an ordered system, thus breaking all the rules; a behavior that reflects the principles of a cancerous cell.



Initialisation:
// ---init obj ---
target_out = getProperty("../", _target);
scale = getProperty(target_out, _xscale)/100;
target_in = getProperty("../sizer", _target);
obj_radius = scale*getProperty(target_in, _width)/2;
obj_origwidth = scale*getProperty(target_in, _width);
obj_origheight = scale*getProperty(target_in, _height);
setProperty ("", _x, Number(Number(random(/:rightmax-/:leftmax))+Number(/:leftmax))+1);
setProperty ("", _y, Number(Number(random(/:bottommax-/:topmax))+Number(/:topmax))+1);

Get direction:
max_dist = 8;
x_dir = random(Number((max_dist))+1)-(max_dist/2);
y_dir = random(Number((max_dist))+1)-(max_dist/2);

Move:
obj_x = getProperty("../", _x);
obj_y = getProperty("../", _y);
setProperty ("../", _x, Number(obj_x)+Number(x_dir));
setProperty ("../", _y, Number(obj_y)+Number(y_dir));
obj_x = getProperty("../", _x);
obj_y = getProperty("../", _y);
if (Number(obj_x)<Number((Number(/:leftmax)+Number(obj_radius)))) {
amount_over = Number(/:leftmax-obj_x)+Number(obj_radius*2);
setProperty ("../", _x, Number(amount_over)+Number(/:leftmax));
x_dir = x_dir*-1;
} else if (Number(obj_x)>Number((/:rightmax-obj_radius))) {
amount_over = Number(obj_x-/:rightmax)+Number(obj_radius*2);
setProperty ("../", _x, /:rightmax-amount_over);
x_dir = x_dir*-1;
}
if (Number(obj_y)<Number((Number(/:topmax)+Number(obj_radius)))) {
amount_over = Number(/:topmax-obj_y)+Number(obj_radius*2);
setProperty ("../", _y, Number(amount_over)+Number(/:topmax));
y_dir = y_dir*-1;
} else if (Number(obj_y)>Number((/:bottommax-obj_radius))) {
amount_over = Number(obj_y-/:bottommax)+Number(obj_radius*2);
setProperty ("../", _y, /:bottommax-amount_over);
y_dir = y_dir*-1;
}