This commit is contained in:
aozhiwei 2019-03-22 10:20:16 +08:00
parent fc50e2730a
commit 0615ee4061

View File

@ -1,10 +1,14 @@
#include "precompile.h" #include "precompile.h"
#define EIGEN_NO_DEBUG #if 1
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/vec2.hpp>
#else
#include <Eigen/Core> #include <Eigen/Core>
#include <Eigen/Dense> #include <Eigen/Dense>
#endif
#include <glm/vec2.hpp>
#include "cs_proto.pb.h" #include "cs_proto.pb.h"
const Vector2D Vector2D::UP = Vector2D(0.0f, 1.0f); const Vector2D Vector2D::UP = Vector2D(0.0f, 1.0f);
@ -26,10 +30,16 @@ void Vector2D::FromPB(const cs::MFVector2D* pb_obj)
Vector2D& Vector2D::Normalize() Vector2D& Vector2D::Normalize()
{ {
#if 1
glm::vec2 v = glm::normalize(glm::vec2(x, y));
x = v[0];
y = v[1];
#else
Eigen::Vector2f v(x, y); Eigen::Vector2f v(x, y);
v.normalize(); v.normalize();
x = v[0]; x = v[0];
y = v[1]; y = v[1];
#endif
return *this; return *this;
} }
@ -43,7 +53,6 @@ Vector2D Vector2D::operator + (const Vector2D& b) const
#if 1 #if 1
glm::vec2 v = glm::vec2(x, y) + glm::vec2(b.x, b.y); glm::vec2 v = glm::vec2(x, y) + glm::vec2(b.x, b.y);
return Vector2D(v[0], v[1]); return Vector2D(v[0], v[1]);
// return Vector2D(x + b.x, y+b.y);
#else #else
Eigen::Vector2f v = Eigen::Vector2f(x, y) + Eigen::Vector2f(b.x, b.y); Eigen::Vector2f v = Eigen::Vector2f(x, y) + Eigen::Vector2f(b.x, b.y);
return Vector2D(v[0], v[1]); return Vector2D(v[0], v[1]);
@ -53,7 +62,8 @@ Vector2D Vector2D::operator + (const Vector2D& b) const
Vector2D Vector2D::operator - (const Vector2D& b) const Vector2D Vector2D::operator - (const Vector2D& b) const
{ {
#if 1 #if 1
return Vector2D(x - b.x, y-b.y); glm::vec2 v = glm::vec2(x, y) - glm::vec2(b.x, b.y);
return Vector2D(v[0], v[1]);
#else #else
Eigen::Vector2f v = Eigen::Vector2f(x, y) - Eigen::Vector2f(b.x, b.y); Eigen::Vector2f v = Eigen::Vector2f(x, y) - Eigen::Vector2f(b.x, b.y);
return Vector2D(v[0], v[1]); return Vector2D(v[0], v[1]);
@ -62,16 +72,31 @@ Vector2D Vector2D::operator - (const Vector2D& b) const
Vector2D Vector2D::operator * (float scale) const Vector2D Vector2D::operator * (float scale) const
{ {
#if 1
glm::vec2 v = glm::vec2(x, y) * scale;
return Vector2D(v[0], v[1]);
#else
Eigen::Vector2f v = Eigen::Vector2f(x, y) * scale; Eigen::Vector2f v = Eigen::Vector2f(x, y) * scale;
return Vector2D(v[0], v[1]); return Vector2D(v[0], v[1]);
#endif
} }
Vector2D Vector2D::operator / (float scale) const Vector2D Vector2D::operator / (float scale) const
{ {
#if 1
glm::vec2 v = glm::vec2(x, y) / scale;
return Vector2D(v[0], v[1]);
#else
Eigen::Vector2f v = Eigen::Vector2f(x, y) * (1.0 / scale); Eigen::Vector2f v = Eigen::Vector2f(x, y) * (1.0 / scale);
return Vector2D(v[0], v[1]); return Vector2D(v[0], v[1]);
#endif
} }
#if 1
#include <Eigen/Core>
#include <Eigen/Dense>
#endif
Vector2D Vector2D::Rotate(float angle) Vector2D Vector2D::Rotate(float angle)
{ {
Eigen::Vector3f v(x, y, 0); Eigen::Vector3f v(x, y, 0);