|
|
Line 1: |
Line 1: |
| {{Refimprove|date=June 2008}}
| |
| '''Dynamical simulation''', in [[computational physics]], is the [[simulation]] of systems of objects that are free to move, usually in three dimensions according to [[Newton's laws]] of dynamics, or approximations thereto. Dynamical simulation is used in [[computer animation]] to assist animators to produce realistic motion, in [[industrial design]] (for example to simulate crashes as an early step in [[crash test]]ing), and in [[video game]]s. Body movement is calculated using [[time integration methods]].
| |
|
| |
|
| ==Physics engines==
| |
| {{main|Physics engines}}
| |
|
| |
|
| In [[computer science]], a program called a [[physics engine]] is used to model the behaviors of objects in space. These engines allow simulation of the way bodies of many types are affected by a variety of physical stimuli. They are also used to create '''Dynamical simulations''' without having to know anything about physics. Physics engines are used throughout the video game and movie industry, but not all physics engines are alike; They are generally broken into [[Real-time computing|real-time]] and the high precision but these are not the only options. Most real-time physics engines are inaccurate and yield only the barest approximation of the real world, whereas most high-precision engines are far too slow for use in everyday applications.
| | Eusebio Stanfill is what's produced on my birth records although it is not necessarily quite the name on a good birth certificate. Idaho is our birth fit. I work as an get clerk. As a man what I really like is performing but I'm thinking on top of starting something new. You can find my website here: http://circuspartypanama.com<br><br>Feel free to surf to my blog - clash of [http://Search.about.com/?q=clans+cheat clans cheat] ([http://circuspartypanama.com simply click the up coming internet site]) |
| To understand how these Physics engines are built, a basic understanding of physics is required. Physics engines are based on the actual behaviors of the world as described by [[classical mechanics]]. Engines do not typically account for Modern Mechanics (see [[Theory of relativity]] and [[quantum mechanics]]) because most visualization deals with large bodies moving relatively slowly, but the most complicated engines perform calculations for Modern Mechanics as well as Classical. The models used in '''Dynamical simulations''' determine how accurate these simulations are.
| |
| | |
| ==Particle model==
| |
| {{main|Newton's laws}}
| |
| | |
| The first model which may be used in [[physics engines]] governs the motion of infinitesimal objects with finite mass called “particles.” This equation, called Newton’s Second law (see [[Newton's laws]]) or the definition of force, is the fundamental behavior governing all motion:
| |
| | |
| : <math>\vec{F} = m \vec{a}</math>
| |
| | |
| This equation will allow us to fully model the behavior of particles, but this is not sufficient for most simulations because it does not account for the rotational motion of [[rigid bodies]]. This is the simplest model that can be used in a physics engine and was used extensively in early video games.
| |
| | |
| ==Inertial model==
| |
| {{main|Rigid body dynamics|Moment of inertia}}
| |
| | |
| Bodies in the real world deform as forces are applied to them, so we call them “soft,” but often the deformation is negligibly small compared to the motion, and it is very complicated to model, so most physics engines ignore deformation. A body that is assumed to be non-deformable are called [[rigid body]]. [[Rigid body dynamics]] deals with the motion of objects that cannot change shape, size, or mass but can change orientation and position.
| |
| | |
| To account for rotational energy and momentum, we must describe how force is applied to the object using a [[moment of inertia|moment]], and account for the mass distribution of the object using an [[inertia tensor]]. We describe these complex interactions with an equation somewhat similar to the definition of force above:
| |
| | |
| : <math>\frac{\mathrm{d}(\mathbf{I}\boldsymbol{\omega})}{\mathrm{d}t} = \sum_{j=1}^N \tau_{j}</math> | |
| | |
| where <math>\mathbf{I}</math> is the central [[inertia tensor]], <math>\vec{\omega}</math> is the [[angular velocity]] vector, and <math>\tau_{j}</math> is the moment of the ''j''th external force about the [[center of mass|mass center]].
| |
| | |
| The [[inertia tensor]] describes the location of each particle of mass in a given object in relation to the object's center of mass. This allows us to determine how an object will rotate dependent on the forces applied to it. This angular motion is quantified by the angular velocity vector.
| |
| | |
| As long as we stay below relativistic speeds (see [[Relativistic dynamics]]), this model will accurately simulate all relevant behavior. This method requires the [[Physics engine]] to solve six [[ordinary differential equations]] at every instant we want to render, which is a simple task for modern computers.
| |
| | |
| ==Euler model==
| |
| {{main|Euler's equations}}
| |
| | |
| The inertial model is much more complex than we typically need but it is the most simple to use. In this model, we do not need to change our forces or constrain our system. However, if we make a few intelligent changes to our system, simulation will become much easier, and our calculation time will decrease. The first constraint will be to put each torque in terms of the principal axes. This makes each torque much more difficult to program, but it simplifies our equations significantly. When we apply this constraint, we diagonalize the moment of inertia tensor, which simplifies our three equations into a special set of equations called [[Euler's equations]]. These equations describe all rotational momentum in terms of the principal axes:
| |
| | |
| :<math>
| |
| \begin{matrix}
| |
| I_1\dot{\omega}_{1}+(I_3-I_2)\omega_2\omega_3 &=& N_{1}\\
| |
| I_2\dot{\omega}_{2}+(I_1-I_3)\omega_3\omega_1 &=& N_{2}\\
| |
| I_3\dot{\omega}_{3}+(I_2-I_1)\omega_1\omega_2 &=& N_{3}
| |
| \end{matrix}
| |
| </math>
| |
| | |
| * The '''N''' terms are applied torques about the principal axes
| |
| * The '''I''' terms are the principal moments of inertia
| |
| * The <math>{\omega}</math> terms are angular velocities about the principal axes
| |
| | |
| The drawback to this model is that all the computation is on the front end, so it is still slower than we would like. The real usefulness is not apparent because it still relies on a system of non-linear differential equations. To alleviate this problem, we have to find a method that can remove the second term from the equation. This will allow us to integrate much more easily. The easiest way to do this is to assume a certain amount of symmetry.
| |
| | |
| ==Symmetric/torque model==
| |
| The two types of symmetric objects that will simplify [[Euler's equations]] are “symmetric tops” and “symmetric spheres.” The first assumes one degree of symmetry, this makes two of the I terms equal. These objects, like cylinders and tops, can be expressed with one very simple equation and two slightly simpler equations. This does not do us much good, because with one more symmetry we can get a large jump in speed with almost no change in appearance. The symmetric sphere makes all of the '''I''' terms equal (the [[Moment of inertia]] scalar), which makes all of these equations simple:
| |
| | |
| :<math>
| |
| \begin{matrix}
| |
| I\dot{\omega}_{1} &=& N_{1}\\
| |
| I\dot{\omega}_{2} &=& N_{2}\\
| |
| I\dot{\omega}_{3} &=& N_{3}
| |
| \end{matrix}
| |
| </math>
| |
| | |
| * The '''N''' terms are applied torques about the principal axes
| |
| * The <math>{\omega}</math> terms are angular velocities about the principal axes
| |
| * The '''I''' term is the scalar [[Moment of inertia]]:
| |
| :<math>I \ \stackrel{\mathrm{def}}{=}\ \int_V l^2(m)\,dm = \iiint_V l^2(v)\,\rho(v)\,dv = \iiint_V l^2(x,y,z)\,\rho(x,y,z)\,dx\,dy\,dz \!</math>
| |
| :where
| |
| **V is the volume region of the object,
| |
| **''r'' is the distance from the axis of rotation,
| |
| **''m'' is mass,
| |
| **''v'' is volume,
| |
| **ρ is the pointwise [[density]] function of the object,
| |
| **''x'', ''y'', ''z'' are the Cartesian coordinates.
| |
| | |
| These equations allow us to simulate the behavior of an object that can spin in a way very close to the method simulate motion without spin. This is a simple model but it is accurate enough to produce realistic output in real-time '''Dynamical simulations'''. It also allows a [[Physics engine]] to focus on the changing forces and torques rather than varying inertia.
| |
| | |
| ==See also==
| |
| * [[Bounding volume]]
| |
| * [[Collision detection]]
| |
| * [[Euler's equations (rigid body dynamics)]]
| |
| * [[Moment of inertia]]
| |
| * [[PAL (software)|Physics Abstraction Layer]]
| |
| * [[Physics engine]]
| |
| * [[Rigid body dynamics]]
| |
| | |
| [[Category:Computational physics]]
| |
| [[Category:Computer physics engines]]
| |
Eusebio Stanfill is what's produced on my birth records although it is not necessarily quite the name on a good birth certificate. Idaho is our birth fit. I work as an get clerk. As a man what I really like is performing but I'm thinking on top of starting something new. You can find my website here: http://circuspartypanama.com
Feel free to surf to my blog - clash of clans cheat (simply click the up coming internet site)