Eigen庫實現簡單的旋轉 平移操作

2022-08-21 04:15:06 字數 2349 閱讀 4116

本來課程要求用gui介面來實現eigen的旋轉、平移操作的,但是接觸gui程式設計時間太短,雖然要求很簡單,但是做了幾天還是沒有完成。就把命令列下面的簡單的貼一下吧。

main.cpp

#include #include #include #include #include "func.h"

#include "point.h"

#include "shape.h"

enum motion ;

std::mapmotion = ,,,

};motion resolvecommand(std::string command)

int main()

printf("請輸入圖形的端點數量:");

getline(std::cin, pointnum);

if (is_number(pointnum)) else

int num = atoi(pointnum.c_str());

point *shapepoints = new point[num];

for (int i = 0; i < num; ++i)

std::cout << "你輸入圖形的名字為:" << name << " " << "你輸入的端點數量為:" << pointnum << std::endl;

shape *shape = new shape(shapepoints, num, name.c_str());

shape->printshape();

std::string command;

bool flag = true;

while (flag)

shape->printshape();

}printf("error!!!你輸入的命令有誤,已經退出指令模式退出\n");

delete shape;

delete shapepoints;

shapepoints = null;

定義了乙個point點類

point.h

#include "eigen/dense"

using namespace eigen;

class point ;

point.cpp

#include "point.h"

#include point::point()

point::point(double x, double y)

void point::update(double x, double y)

void point::print()

point::~point()

/** * 平移

*/void point::move(double x, double y)

/** * 旋轉變換,angle為角度, 逆時針為正, 順時針為負

*/void point::rotate(double angle)

/** * 縮放(比例變換), zx分別表示x軸縮放比例,zy表示y軸縮放比例

*/void point::zoom(double zx, double zy)

vector2d point::pointbymatrix()

void point::setbymatrix(vector2d m)

定義了乙個簡單的shape圖形類。

shape.h

#include "point.h"

class shape ;

shape.cpp

#include "shape.h"

shape::shape(point *arr, int num, const char *name)

void shape::moveshape(double x, double y)

}void shape::rotateshape(double angle)

}void shape::zoomshape(double zx, double zy)

}void shape::printshape()

this->pointarr[(this->pointnum - 1)].print();

printf("\n");

}shape::~shape()

執行結果為:

原始碼提交github

Eigen庫的簡單使用

eigen是乙個c 開源線性代數庫。提供有關矩陣的的線性代數運算,解方程等功能。官方的文件在此,本文是簡單的使用,以slam十四講 閱讀,快速入門。sudo apt get install libeigen3 dev module contents include matrix and array ...

Canvas的平移旋轉等

原始碼中的方法 preconcat the current matrix with the specified translation param dx the distance to translate in x param dy the distance to translate in y pu...

Eigen介紹及簡單使用之向量旋轉

eigen中關於旋轉可以用尤拉角,旋轉向量,旋轉矩陣,四元數來表示。首先是尤拉角表示法,我們可以用繞某個軸旋轉來表示。旋轉向量就是用乙個旋轉軸和乙個旋轉角來表示旋轉。旋轉矩陣用乙個矩陣來表示空間中的旋轉變換關係。四元數用 個變數來表示旋轉 增加乙個緯度 可以避免萬向節鎖現象。1 旋轉向量 旋轉矩陣 ...