23 lines
667 B
C++
23 lines
667 B
C++
#pragma once
|
|
|
|
#include "common_structures.hpp"
|
|
|
|
class ImplicitSurface {
|
|
public:
|
|
virtual double operator() (double x, double y, double z) const = 0;
|
|
double operator()(const Point& pt) const;
|
|
Point getCenter() const { return center;}
|
|
|
|
const Color& get_color() const { return color; }
|
|
void set_color(const Color& _color) { color = _color; }
|
|
|
|
virtual Point location_hint() const = 0;
|
|
|
|
/// Compute the normal vector to the isosurface at `pt`
|
|
Point normal_at(const Point& pt) const;
|
|
protected:
|
|
Point center;
|
|
Color color;
|
|
|
|
ImplicitSurface(Point _center) : center(_center) {}
|
|
};
|