30 lines
615 B
C++
30 lines
615 B
C++
#pragma once
|
|
#include "DataStructs.h"
|
|
|
|
namespace MeshReconstruction
|
|
{
|
|
struct IntersectInfo
|
|
{
|
|
// 0 - 255
|
|
int signConfig;
|
|
|
|
// If it exists, vertex on edge i is stored at position i.
|
|
// For edge numbering and location see numberings.png.
|
|
std::array<Vec3, 12> edgeVertIndices;
|
|
};
|
|
|
|
class Cube
|
|
{
|
|
Vec3 pos[8];
|
|
double sdf[8];
|
|
|
|
Vec3 LerpVertex(double isoLevel, int i1, int i2) const;
|
|
int SignConfig(double isoLevel) const;
|
|
|
|
public:
|
|
Cube(Rect3 const& space, Fun3s const& sdf);
|
|
|
|
// Find the vertices where the surface intersects the cube.
|
|
IntersectInfo Intersect(double isoLevel = 0) const;
|
|
};
|
|
} |