I am starting my dissertation and need some advise. I have a massive amount of 3D spatial data in spreadsheets/databases. This data is coordinated for vertices of 3d polyhedrons. I need to manipulate the data and see the results in real time. A more detailed explanation is that I need a 3D State Model Engine. I need to be able to set the position of the objects in 3D space using the stored data, and as I change the state of one object, I need to know how it will affect the other objects. I then need to write this data back to the database/spreadsheet for analysis.
An example is that I have 3 dice in a row from left to right with different colored faces instead of numbers. I need to be able to change the state of the left dice by rotating it for example on the x-axis and have dice #2 possible rotate according to a set of rules and if it does, I need dice #3 to possibly rotate. I then need to expand this to 3 dimensions with 3 dices in each direction, and then expand it to 100 dice in each direction. I need visual representation in order to do some state analysis that I do not believe current pattern recognition could accomplish. The rotation of the initial dice should be able to be done with a mouse in a 3d environment or by changing a state value for example rotate((dice 14,23,77), z-axis, 90 degrees).
To go further with the example, change the dice to 3 spheres sitting side by side with magnetic fields on each sphere. As I rotate any one sphere, it will cause the other spheres to rotate dependent on the field strengths. This is NOT a one-to-one like gears, but analog influence, different spheres have different affects on other spheres. To make matters worse, this is in 3D space. If I rotate along X-axis, it affects the surrounding objects in one way, Y-axis different objects, and Z-axis different objects. These could also by polyhedrons with 100s of sides if need for the program.
The final problem is speed, A similar example would be to start small with a 6 sided dice with number/color on each side. I then want to be able to duplicate the shape, for example, have 10 6-sided dice in a row, by 10 dice deep by 10 dice high. I then want to be able to program some rules, such as if I move a dice from side '1' facing forward to side '4' facing forward, then the dice to the left rotates on the X axis, and the dice to the right rotates on the Y axis, etc. As each dice is moved, they all continue to move until they reach an equilibrium depending on the rules.
To expand using an example:
I need be able to read the data for this matrix from a database and create the current 'state-image'. I then need to be able to change the state of one of the cubes, lets say the very top left cube, by using a command similar to (rotate.cube(0,0,0), z-axis, 270 degrees). This would cause the cube to rotate on the z-axis clockwise 270 degrees. This would cause a set of possible cascading actions depending on rules encapsulated in the each cube. Depending on the rules, the cube right behind it might rotate CCW 180 degrees and the cube to the right of it might NOT rotate, but the cube below it might rotate on both the X and Y axis, 90 degrees each. All of this is depending on the rules. As each of these three cubes may or may not rotate, they will cause others to rotate if a turn based methodology based on the speed coefficient of the cube receptors.
As each one of these actions takes place, I want to see the cubes change on the screen, so that I can observe the impact certain changes to to the state model. My dream of course it to someday be able to run millions of scenarios with all of the associate permutations and combinations, and let the computer do the trend analysis using pattern recognition of some kind to detect such as "changing a bottom row cube with a Z-axis CCW rotation, results in all cubes on the top row turn pink edge up". This is an example, but gives you an idea of what I am looking for.
To give you an idea of the final model, I am planning on using 1000x1000x1000 cubes, which would result in minimum of 1,000,000,000 computations per cycle. Similar to the old game of COMPUTER LIFE, these cascades could continue indefinitely along with the induction of new data at any cycle point.
I have searched under '3D State Models' and 'Molecular Animations' and many similar things, but I must be missing it somewhere. I do not mind learning another programming language, I have learned many over the years., but do not want to spin my wheels and waste time. I would like to know if there are any programs that can do what I need or if I should go back to Java and dive deeper into it. Any and all suggestions are welcomed. I really like Mint/Ubuntu, but would be willing to use Windows if somebody had a Windows only solution.
I am pretty sure that I am going to need to write this application from scratch, but I am wondering if Processing would be do everything I need. Any and all thought and opinions are welcome.
I am starting to work on a project and have been told that Processing may be able to help me.
I have a massive amount of 3D spatial data in spreadsheets that could be put into a database if needed. This data is coordinated for vertices of 3d polyhedrons. I need to manipulate the data and see the results in real time.
A more detailed explanation is that I need a 3D State Model Engine. I need to be able to set the position of the objects in 3D space using the stored data, and as I change the state of one object, I need to know how it will affect the other objects. I then need to write this data back to the database/spreadsheet for analysis.
Another example of this is to think of 3 spheres sitting side by side with magnetic fields on each sphere. As I rotate any one sphere, it will cause the other spheres to rotate dependent on the field strengths. This is NOT a one-to-one like gears, but analog influence, different spheres have different affects on other spheres. To make matters worse, this is in 3D space. If I rotate along X-axis, it affects the surrounding objects in one way, Y-axis different objects, and Z-axis different objects. These will not actually be spheres buy polyhedrons with 100s of sides.
The final problem is speed, A similar example would be to start small with a 6 sided dice with numbers on each side. I then want to be able to duplicate the shape, for example, have 10 6-sided dice in a row, by 10 dice deep by 10 dice high. I then want to be able to program some rules, such as if I move a dice from side '1' facing forward to side '4' facing forward, then the dice to the left rotates on the X axis, and the dice to the right rotates on the Y axis, etc. As each dice is moved, they all continue to move until they reach an equilibrium depending on the rules. I am afraid that a high level language like Processing might get bogged down with the trillions of calculations I need to process.
I have different molecules that have different magnetic properties that I want to program the interactions with, and see how they react when I start having dozens of polyhedrons and the 100s of associated actions.
I have searched under '3D State Models' and 'Molecular Animations' and many similar things, but I must be missing it somewhere. I do not mind learning another programming language, I have learned many over the years., but do not want to spin my wheels and waste time. I would like to know if Processing is my SIlver Bullet, or if I should go back to Java and dive deeper into it. Any and all suggestions are welcomed.