33 #include <QSharedPointer>
38 using Shared = QSharedPointer<IScalarFieldWrapper>;
42 virtual size_t size()
const = 0;
49 virtual inline double pointValue(
unsigned index)
const override {
50 return m_sf->at(index);
52 virtual inline bool isValid()
const {
return m_sf !=
nullptr; }
54 virtual size_t size()
const override {
return m_sf->size(); }
67 virtual inline double pointValue(
unsigned index)
const override {
71 (
std::abs(q) > std::numeric_limits<ScalarType>::epsilon()
80 virtual inline size_t size()
const override {
96 virtual double pointValue(
unsigned index)
const override {
100 return (
m_mode ==
Dip ? dip_deg : dipDir_deg);
106 static const char s_names[][14] = {
"Norm dip",
"Norm dip dir."};
123 virtual inline double pointValue(
unsigned index)
const override {
128 static const char s_names[][5] = {
"DimX",
"DimY",
"DimZ"};
129 return s_names[
m_dim];
145 virtual inline double pointValue(
unsigned index)
const override {
152 static const char s_names[][6] = {
"Red",
"Green",
"Blue"};
constexpr ScalarType NAN_VALUE
NaN as a ScalarType value.
float PointCoordinateType
Type of the coordinates of a (N-D) point.
ColorScalarFieldWrapper(const ccPointCloud *cloud, Band band)
virtual bool isValid() const
const ccPointCloud * m_cloud
virtual size_t size() const override
virtual QString getName() const
virtual double pointValue(unsigned index) const override
const ccPointCloud * m_cloud
virtual double pointValue(unsigned index) const override
virtual size_t size() const override
virtual bool isValid() const
virtual QString getName() const
DimScalarFieldWrapper(const ccPointCloud *cloud, Dim dim)
virtual QString getName() const =0
virtual size_t size() const =0
QSharedPointer< IScalarFieldWrapper > Shared
virtual double pointValue(unsigned index) const =0
virtual bool isValid() const =0
virtual ~IScalarFieldWrapper()
virtual size_t size() const override
virtual QString getName() const
NormDipAndDipDirFieldWrapper(const ccPointCloud *cloud, Mode mode)
virtual double pointValue(unsigned index) const override
const ccPointCloud * m_cloud
virtual bool isValid() const
virtual size_t size() const override
ScalarFieldRatioWrapper(cloudViewer::ScalarField *sfp, cloudViewer::ScalarField *sfq, QString name)
virtual QString getName() const
cloudViewer::ScalarField * m_sfp
virtual double pointValue(unsigned index) const override
virtual bool isValid() const
cloudViewer::ScalarField * m_sfq
virtual bool isValid() const
cloudViewer::ScalarField * m_sf
virtual size_t size() const override
virtual QString getName() const
ScalarFieldWrapper(cloudViewer::ScalarField *sf)
virtual double pointValue(unsigned index) const override
static void ConvertNormalToDipAndDipDir(const CCVector3 &N, PointCoordinateType &dip_deg, PointCoordinateType &dipDir_deg)
Converts a normal vector to geological 'dip direction & dip' parameters.
A 3D cloud and its associated features (color, normals, scalar fields, etc.)
bool hasNormals() const override
Returns whether normals are enabled or not.
bool hasColors() const override
Returns whether colors are enabled or not.
const ecvColor::Rgb & getPointColor(unsigned pointIndex) const override
Returns color corresponding to a given point.
const CCVector3 & getPointNormal(unsigned pointIndex) const override
Returns normal corresponding to a given point.
unsigned size() const override
const CCVector3 * getPoint(unsigned index) const override
A simple scalar field (to be associated to a point cloud)
ScalarType & getValue(std::size_t index)
const char * getName() const
Returns scalar field name.
__host__ __device__ int2 abs(int2 v)