Skip to content

Commit

Permalink
TITANIC: Swap DAffine for FPose in Orientation and Transforms
Browse files Browse the repository at this point in the history
More swapping of functions in the Orientation and Transform classes.
  • Loading branch information
dafioram committed Sep 2, 2017
1 parent b842a43 commit 1160b88
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 16 deletions.
12 changes: 12 additions & 0 deletions engines/titanic/star_control/fpose.cpp
Expand Up @@ -212,6 +212,18 @@ void FPose::loadTransform(const CMatrixTransform &src) {
_vector._z = 0;
}

FPose FPose::compose(const FMatrix &m) {
FPose dm;
FPose am;
am._row1 = m._row1;
am._row2 = m._row2;
am._row3 = m._row3;

fposeProd(*this,am,dm);

return dm;
}

FPose FPose::compose2(const FPose &m) {
FPose dm;
dm._row1 = _row1.MatProdRowVect(m);
Expand Down
2 changes: 2 additions & 0 deletions engines/titanic/star_control/fpose.h
Expand Up @@ -82,6 +82,8 @@ class FPose : public FMatrix {
*/
FPose inverseTransform() const;

FPose compose(const FMatrix &m);

FPose compose2(const FPose &m);
};

Expand Down
17 changes: 10 additions & 7 deletions engines/titanic/star_control/fvector.cpp
Expand Up @@ -125,22 +125,25 @@ FVector FVector::MatProdRowVect(const FPose &pose) const {
return v;
}

/*DAffine FVector::getFrameTransform(const FVector &v) {
DAffine matrix1, matrix2, matrix3, matrix4;
FPose FVector::getFrameTransform(const FVector &v) {
FPose matrix1, matrix2, matrix3, matrix4;

FVector vector1 = getAnglesAsVect();
matrix1.setRotationMatrix(X_AXIS, vector1._y * Rad2Deg);
matrix2.setRotationMatrix(Y_AXIS, vector1._z * Rad2Deg);
matrix3 = matrix1.compose(matrix2);
//matrix3 = matrix1.compose(matrix2);
fposeProd(matrix1,matrix2,matrix3);
matrix4 = matrix3.inverseTransform();

vector1 = v.getAnglesAsVect();
matrix1.setRotationMatrix(X_AXIS, vector1._y * Rad2Deg);
matrix2.setRotationMatrix(Y_AXIS, vector1._z * Rad2Deg);
matrix3 = matrix1.compose(matrix2);
fposeProd(matrix1,matrix2,matrix3);
//matrix3 = matrix1.compose(matrix2);
fposeProd(matrix4,matrix3,matrix1);

return matrix4.compose(matrix3);
}*/
return matrix1; //matrix4.compose(matrix3);
}

/*DAffine FVector::formRotXY() const {
FVector v1 = getAnglesAsVect();
Expand All @@ -150,7 +153,7 @@ FVector FVector::MatProdRowVect(const FPose &pose) const {
return m1.compose(m2);
}*/

FPose FVector::formRotXY2() const {
FPose FVector::formRotXY() const {
FVector v1 = getAnglesAsVect();
FPose m1, m2;
m1.setRotationMatrix(X_AXIS, v1._y * Rad2Deg);
Expand Down
4 changes: 2 additions & 2 deletions engines/titanic/star_control/fvector.h
Expand Up @@ -117,14 +117,14 @@ class FVector {
* Returns a matrix that contains the frame rotation based on this vector and
* a vector rotation based on input vector v
*/
//DAffine getFrameTransform(const FVector &v);
FPose getFrameTransform(const FVector &v);

/**
* Constructs an affine matrix that does a x then a y axis frame rotation
* based on the orientation of this vector
*/
//DAffine formRotXY() const;
FPose formRotXY2() const;
FPose formRotXY() const;

/**
* Returns true if the passed vector equals this one
Expand Down
2 changes: 1 addition & 1 deletion engines/titanic/star_control/orientation_changer.cpp
Expand Up @@ -21,7 +21,7 @@
*/

#include "titanic/star_control/orientation_changer.h"
//#include "titanic/star_control/daffine.h"
#include "titanic/star_control/fpose.h"
#include "titanic/star_control/fmatrix.h"

namespace Titanic {
Expand Down
4 changes: 2 additions & 2 deletions engines/titanic/star_control/star_camera.cpp
Expand Up @@ -336,7 +336,7 @@ void CStarCamera::setViewportAngle(const FPoint &angles) {
fposeProd(m1,subX,m11);
//m1 = m1.compose(subX);
subX = m11.inverseTransform();
Fpose m12;
FPose m12;
fposeProd(subX,subY,m12);
//subX = subX.compose(subY);

Expand Down Expand Up @@ -528,7 +528,7 @@ bool CStarCamera::lockMarker2(CViewport *viewport, const FVector &secondStarPosi
FPose m3(0, firstStarPosition); // Identity matrix and row4 as the 1st stars position
FVector starDelta = secondStarPosition - firstStarPosition;
//DAffine m1 = starDelta.formRotXY();
FPose m10 = starDelta.formRotXY2();
FPose m10 = starDelta.formRotXY();
FPose m11;
fposeProd(m10,m3,m11);
//m1 = m1.compose(m2);
Expand Down
9 changes: 5 additions & 4 deletions engines/titanic/star_control/unmarked_camera_mover.cpp
Expand Up @@ -23,8 +23,8 @@
#include "titanic/star_control/unmarked_camera_mover.h"
#include "titanic/debugger.h"
#include "titanic/star_control/base_stars.h" // includes class CStarVector
#include "titanic/star_control/dvector.h"
#include "titanic/star_control/daffine.h"
//#include "titanic/star_control/dvector.h"
#include "titanic/star_control/fpose.h"
#include "titanic/star_control/error_code.h"
#include "titanic/star_control/fmatrix.h" // includes class FVector
#include "titanic/titanic.h"
Expand Down Expand Up @@ -52,8 +52,9 @@ void CUnmarkedCameraMover::transitionBetweenOrientations(const FVector &v1, cons

FVector vector1 = v1;
FVector vector2 = v2;
DAffine matrix1 = vector2.getFrameTransform(vector1);
DAffine matrix2 = matrix1.compose(m);
FPose matrix1 = vector2.getFrameTransform(vector1);
FPose matrix2 = matrix1.compose(m);
//fposeProd(matrix1,m,matrix2);

_autoMover.setOrientations(m, matrix2);
incLockCount();
Expand Down

0 comments on commit 1160b88

Please sign in to comment.