carla/LibCarla/source/third-party/marchingcube/DataStructs.h

56 lines
928 B
C++

#pragma once
#include <vector>
#include <array>
#include <functional>
namespace MeshReconstruction
{
struct Vec3
{
double x, y, z;
Vec3 operator+(Vec3 const &o) const
{
return {x + o.x, y + o.y, z + o.z};
}
Vec3 operator-(Vec3 const &o) const
{
return {x - o.x, y - o.y, z - o.z};
}
Vec3 operator*(double c) const
{
return {c * x, c * y, c * z};
}
double Norm() const
{
return sqrt(x * x + y * y + z * z);
}
Vec3 Normalized() const
{
auto n = Norm();
return {x / n, y / n, z / n};
}
};
struct Rect3
{
Vec3 min;
Vec3 size;
};
using Triangle = std::array<int, 3>;
struct Mesh
{
std::vector<Vec3> vertices;
std::vector<Triangle> triangles;
std::vector<Vec3> vertexNormals;
};
using Fun3s = std::function<double(Vec3 const &)>;
using Fun3v = std::function<Vec3(Vec3 const &)>;
}