Last change
on this file since 3146 was
3023,
checked in by bensch, 20 years ago
|
orxonox/branches/bezierTrack: just an idea of how the new Coordinate-System might look like. Many things have to be done here too.
|
File size:
1.6 KB
|
Rev | Line | |
---|
[3023] | 1 | |
---|
| 2 | #include "coordinates.h" |
---|
| 3 | |
---|
| 4 | void Coordinate::setCoord (Coord coord, COORD_TYPE cType) |
---|
| 5 | { |
---|
| 6 | setPosition (coord.position, cType); |
---|
| 7 | setRotation (coord.rotation, cType); |
---|
| 8 | } |
---|
| 9 | |
---|
| 10 | void Coordinate::setPosition (Vector position, COORD_TYPE cType) |
---|
| 11 | { |
---|
| 12 | if (cType == WORLD) |
---|
| 13 | worldCoord.position = position; |
---|
| 14 | |
---|
| 15 | else if (cType == TRACK) |
---|
| 16 | worldCoord.position = position; // set it like (position + world::get_instance->track->getPosition(WORLD)); |
---|
| 17 | |
---|
| 18 | else if (cType == LOCAL) |
---|
| 19 | worldCoord.position = Vector (0,0,0); // have to think about this one.... if it makes sense at all. |
---|
| 20 | } |
---|
| 21 | |
---|
| 22 | void Coordinate::setRotation (Quaternion rotation, COORD_TYPE cType) |
---|
| 23 | { |
---|
| 24 | if (cType == WORLD) |
---|
| 25 | worldCoord.rotation = rotation; |
---|
| 26 | else if (cType == TRACK) |
---|
| 27 | worldCoord.rotation = rotation; // it like (rotation * world::get_instance->track->getRotation(WORLD)); |
---|
| 28 | else if (cType == LOCAL) |
---|
| 29 | worldCoord.rotation = Quaternion(); |
---|
| 30 | } |
---|
| 31 | |
---|
| 32 | Coord Coordinate::getCoord (COORD_TYPE cType) const |
---|
| 33 | { |
---|
| 34 | Coord tmpCoord; |
---|
| 35 | tmpCoord.position = getPosition (cType); |
---|
| 36 | tmpCoord.rotation = getRotation (cType); |
---|
| 37 | } |
---|
| 38 | |
---|
| 39 | Vector Coordinate::getPosition (COORD_TYPE cType) const |
---|
| 40 | { |
---|
| 41 | |
---|
| 42 | if (cType == WORLD) |
---|
| 43 | return worldCoord.position; |
---|
| 44 | else if (cType == TRACK) |
---|
| 45 | return worldCoord.position; // should be like (WorldCoord - world::get_instance->track->getPosition(WORLD)); |
---|
| 46 | else if (cType == LOCAL) |
---|
| 47 | return Vector (0,0,0); |
---|
| 48 | |
---|
| 49 | } |
---|
| 50 | |
---|
| 51 | Quaternion Coordinate::getRotation (COORD_TYPE cType) const |
---|
| 52 | { |
---|
| 53 | |
---|
| 54 | if (cType == WORLD) |
---|
| 55 | return worldCoord.rotation; |
---|
| 56 | else if (cType == TRACK) |
---|
| 57 | return worldCoord.rotation; // should be like (WorldCoord - world::get_instance->track->getRotation(WORLD)); |
---|
| 58 | else if (cType == LOCAL) |
---|
| 59 | return Quaternion (); |
---|
| 60 | |
---|
| 61 | } |
---|
| 62 | |
---|
Note: See
TracBrowser
for help on using the repository browser.