Physics: Changed Collision. It now consists of a time of impact and a contact point.
[kong.git] / src / net / habraun / kong / physics / Collision.scala
blob47d3f34b3756fe3c1c9f0ae23ab36f70f8555538
1 /*
2 Copyright (c) 2009 Hanno Braun <hanno@habraun.net>
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
8 http://www.apache.org/licenses/LICENSE-2.0
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
19 package net.habraun.kong.physics
23 /**
24 * Models a collision between two bodies.
25 * A collision has the following attributes:
26 * * t is the time of impact, relative to the timeframe that was inspected by the collision solver. A value
27 * of 0.0 means, the collision took place at the beginning of the time frame, 1.0 means at the end. A value
28 * of 0.5 would means, that the collision occured halfway through timeframe.
29 * * contact is the point of contact between the two bodies.
32 case class Collision(t: Double, contact: Contact) {
33 if (t < 0.0 || t > 1.0) throw new IllegalArgumentException("Time of impact must be between 0.0 and 1.0.")
34 if (contact == null) throw new NullPointerException("contact must not be null.")