00001 #include "matrix.hh"
00002
00003 namespace anoid {
00004 namespace simple {
00005
00006 void Matrix::init(const char* s) {
00007 char *c = strdup(s);
00008 if (sscanf(c, "(%lf,%lf,%lf);(%lf,%lf,%lf);(%lf,%lf,%lf)",
00009 &_matrix[0][0], &_matrix[1][0], &_matrix[2][0],
00010 &_matrix[0][1], &_matrix[1][1], &_matrix[2][1],
00011 &_matrix[0][2], &_matrix[1][2], &_matrix[2][2]) != 9) {
00012 zero();
00013 }
00014 free(c);
00015 }
00016
00017 void Matrix::zero(void) {
00018 _matrix[0][0] = 0; _matrix[1][0] = 0; _matrix[2][0] = 0; _matrix[3][0] = 0;
00019 _matrix[0][1] = 0; _matrix[1][1] = 0; _matrix[2][1] = 0; _matrix[3][1] = 0;
00020 _matrix[0][2] = 0; _matrix[1][2] = 0; _matrix[2][2] = 0; _matrix[3][2] = 0;
00021 _matrix[0][3] = 0; _matrix[1][3] = 0; _matrix[2][3] = 0; _matrix[3][3] = 1;
00022 }
00023
00024 void Matrix::identity(void) {
00025 _matrix[0][0] = 1; _matrix[1][0] = 0; _matrix[2][0] = 0; _matrix[3][0] = 0;
00026 _matrix[0][1] = 0; _matrix[1][1] = 1; _matrix[2][1] = 0; _matrix[3][1] = 0;
00027 _matrix[0][2] = 0; _matrix[1][2] = 0; _matrix[2][2] = 1; _matrix[3][2] = 0;
00028 _matrix[0][3] = 0; _matrix[1][3] = 0; _matrix[2][3] = 0; _matrix[3][3] = 1;
00029 }
00030
00031 Matrix::Matrix() {
00032 zero();
00033 }
00034
00035 Matrix::Matrix(const Vector &v) {
00036 _matrix[0][0] = 0; _matrix[1][0] = -v.getZ(); _matrix[2][0] = v.getY(); _matrix[3][0] = 0;
00037 _matrix[0][1] = v.getZ(); _matrix[1][1] = 0; _matrix[2][1] = -v.getX(); _matrix[3][1] = 0;
00038 _matrix[0][2] = -v.getY(); _matrix[1][2] = v.getX(); _matrix[2][2] = 0; _matrix[3][2] = 0;
00039 _matrix[0][3] = 0; _matrix[1][3] = 0; _matrix[2][3] = 0; _matrix[3][3] = 1;
00040 }
00041
00042 Matrix::Matrix(const Vector &a, const Vector &b, const Vector &c) {
00043
00044 }
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 };
00056 };