Dissertação de mestrado em Computer ScienceNowadays many mathematical applications allow the user to introduce its own equations
in the system and also observe through different possibilities the desired results. Regarding
physics, an extended range of virtual laboratories allow the user to accomplish virtual
physics experiments. These virtual laboratories consist in predefined scenarios where the
user can change the value of the physics variables and then visualise the changes accomplished.
Other virtual laboratories uses a physics engine allowing the user to create its
own scenarios. However, the physical behaviour of the objects is hardcoded since it results
strictly on the physics equations used internally by the physics engine.
This dissertation pretends to investigate how far and with what degree of scientific rigor
it is possible to associate the idea of the user introducing its own equations with the idea of
accomplishing virtual experiments of physics. As a proof of concept, this dissertation focus
on a specific area of mechanics: the dynamic of rigid bodies. The result of this research is
a virtual laboratory completely different relatively the others.
Our system has no knowledge about physics. Even the most general laws of physics
such as the Newton’s second law are not known by the system. To the system, any equation
introduced is considered just as one more equation without any particular meaning
associated to it. The same happens for any physics entity. For example, if the gravitational
acceleration is introduced by the user, to the system it is just another attribute of the world.
Taking into account the dynamics of rigid bodies, an object can be identified as being, at
any time, in one of three different states. These are: when a object is not in contact with
any other, when an object collides with another object and they immediately separate, and
when two objects remain in contact over time. The user must specify all the equations that
drive each of these three states. Using its geometrical knowledge, the engine determines at
any time in which state an object is. Also, the system provides all the relevant geometrical
information. For instance, in a collision between two objects, the point and the two normals
vectors of the collision are provided.
The graphical simulations reflects strictly on the equations introduced. Therefore, if
the equations to solve a collision between two objects does not reflect the real underlying
physics of the situation, it is possible that the objects simply ends-up penetrating each
other. All the relevant numerical information about an experience can be processed through
different forms. In fact, the user can request plots of variables, the graphical application of
vectors on objects, and even the tracing of the variables at a specific event