namespace Eigen {
template<typename, int, int>
struct Matrix {
Matrix() {}
Matrix(float, float, float) {}
int col(int) {return 0;}
Matrix operator-() {return *this;}
};
void operator<<(int, Matrix<double, 3, 1>) {}
};
int main() {
// axis system
static Eigen::Matrix<double, 3, 1> s_xAxis(1.,0.,0.); //!< global x Axis;
static Eigen::Matrix<double, 3, 1> s_yAxis(0.,1.,0.); //!< global y Axis;
static Eigen::Matrix<double, 3, 1> s_zAxis(0.,0.,1.); //!< global z Axis;
// origin
static Eigen::Matrix<double, 3, 1> s_origin(0.,0.,0.); //!< origin position
static Eigen::Matrix<double, 3,3> s_idRotationZinverse;
s_idRotationZinverse.col(0) << s_yAxis;
s_idRotationZinverse.col(1) << s_xAxis;
s_idRotationZinverse.col(2) << -s_zAxis;
}
Cm5hbWVzcGFjZSBFaWdlbiB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgaW50LCBpbnQ+CiAgICBzdHJ1Y3QgTWF0cml4IHsKICAgICAgICBNYXRyaXgoKSB7fQogICAgICAgIE1hdHJpeChmbG9hdCwgZmxvYXQsIGZsb2F0KSB7fQogICAgICAgIGludCBjb2woaW50KSB7cmV0dXJuIDA7fQogICAgICAgIE1hdHJpeCBvcGVyYXRvci0oKSB7cmV0dXJuICp0aGlzO30KICAgIH07CiAgICB2b2lkIG9wZXJhdG9yPDwoaW50LCBNYXRyaXg8ZG91YmxlLCAzLCAxPikge30KfTsKCgoKaW50IG1haW4oKSB7CiAgICAKICAgIC8vIGF4aXMgc3lzdGVtCiAgICBzdGF0aWMgRWlnZW46Ok1hdHJpeDxkb3VibGUsIDMsIDE+ICAgIHNfeEF4aXMoMS4sMC4sMC4pOyAgICAgICAgICAgIC8vITwgZ2xvYmFsIHggQXhpczsKICAgIHN0YXRpYyBFaWdlbjo6TWF0cml4PGRvdWJsZSwgMywgMT4gICAgc195QXhpcygwLiwxLiwwLik7ICAgICAgICAgICAgLy8hPCBnbG9iYWwgeSBBeGlzOwogICAgc3RhdGljIEVpZ2VuOjpNYXRyaXg8ZG91YmxlLCAzLCAxPiAgICBzX3pBeGlzKDAuLDAuLDEuKTsgICAgICAgICAgICAvLyE8IGdsb2JhbCB6IEF4aXM7CiAgICAKICAgIC8vIG9yaWdpbgogICAgc3RhdGljIEVpZ2VuOjpNYXRyaXg8ZG91YmxlLCAzLCAxPiAgICBzX29yaWdpbigwLiwwLiwwLik7ICAgICAgICAgICAvLyE8IG9yaWdpbiBwb3NpdGlvbgogICAgCiAgICBzdGF0aWMgRWlnZW46Ok1hdHJpeDxkb3VibGUsIDMsMz4gICAgIHNfaWRSb3RhdGlvblppbnZlcnNlOwogICAgc19pZFJvdGF0aW9uWmludmVyc2UuY29sKDApIDw8IHNfeUF4aXM7CiAgICBzX2lkUm90YXRpb25aaW52ZXJzZS5jb2woMSkgPDwgc194QXhpczsKICAgIHNfaWRSb3RhdGlvblppbnZlcnNlLmNvbCgyKSA8PCAtc196QXhpczsKCn0=