1#ifndef CONEPRIMITIVESHAPE_HEADER
2#define CONEPRIMITIVESHAPE_HEADER
48 std::pair<size_t, float>* score)
const;
50 void Serialize(std::ostream* o,
bool binary =
true)
const;
56 m_cone.Serialize(array);
62 return m_cone.SerializedFloatSize();
96 void InBitmap(
const std::pair<float, float>& param,
101 std::pair<int, int>* inBmp)
const;
134 template <
class IteratorT>
135 void ParametersImpl(IteratorT begin,
143template <
class IteratorT>
145ConePrimitiveShape::ParametersImpl(IteratorT begin,
149 bmpParams->resize(end - begin);
151 for (IteratorT i = begin; i != end; ++i, ++j)
155 if (m_cone.Angle() <
float(
M_PI / 4))
157 for (
size_t j = 0; j < bmpParams->size(); ++j)
159 float r = m_cone.RadiusAtLength((*bmpParams)[j].first);
161 (*bmpParams)[j].second = ((*bmpParams)[j].second -
float(
M_PI)) * r;
166 for (
size_t j = 0; j < bmpParams->size(); ++j)
168 float l = (*bmpParams)[j].first;
169 (*bmpParams)[j].first = std::sin((*bmpParams)[j].second) * l;
170 (*bmpParams)[j].second = std::cos((*bmpParams)[j].second) * l;
185 return m_cone.SignedDistance(*((
const Vec3f*)
x));
191 m_cone.Normal(*((
const Vec3f*)
x), (
Vec3f*)gradient);
class DLL_LINKAGE ConePrimitiveShape
unsigned int ConfidenceTests(unsigned int numTests, float epsilon, float normalThresh, float rms, const PointCloud &pc, const MiscLib::Vector< size_t > &indices) const
virtual void WrapComponents(const GfxTL::AABox< GfxTL::Vector2Df > &bbox, float epsilon, size_t uextent, size_t vextent, MiscLib::Vector< int > *componentImg, MiscLib::Vector< std::pair< int, size_t > > *labels) const
virtual void Parameters(const Vec3f &p, std::pair< float, float > *param) const =0
virtual void WrapBitmap(const GfxTL::AABox< GfxTL::Vector2Df > &bbox, float epsilon, bool *uwrap, bool *vwrap) const =0
virtual void PreWrapBitmap(const GfxTL::AABox< GfxTL::Vector2Df > &bbox, float epsilon, size_t uextent, size_t vextent, MiscLib::Vector< char > *bmp) const
virtual bool InSpace(float u, float v, Vec3f *p, Vec3f *n) const =0
virtual void InBitmap(const std::pair< float, float > ¶m, float epsilon, const GfxTL::AABox< GfxTL::Vector2Df > &bbox, size_t uextent, size_t vextent, std::pair< int, int > *inBmp) const =0
virtual void BitmapExtent(float epsilon, GfxTL::AABox< GfxTL::Vector2Df > *bbox, MiscLib::Vector< std::pair< float, float > > *params, size_t *uextent, size_t *vextent)=0
void operator()(const float *x, float *gradient) const
ConeLevMarFunc(const Cone &c)
float operator()(const float *x) const
void SetExtent(const GfxTL::AABox< GfxTL::Vector2Df > &bbox)
ConePrimitiveShape(const Cone &cone)
const Cone & Internal() const
virtual void Serialize(float *array) const
unsigned int RequiredSamples() const
virtual size_t SerializedFloatSize() const
void Parameters(const Vec3f &p, std::pair< float, float > *param) const
const Point * const_iterator
PrimtiveShape is a shape primitive in conjunction with a parametrization.
virtual size_t SerializedSize() const =0
virtual void Project(const Vec3f &p, Vec3f *pp) const =0
virtual float NormalDeviation(const Vec3f &p, const Vec3f &n) const =0
virtual PrimitiveShape * LSFit(const PointCloud &pc, float epsilon, float normalThresh, MiscLib::Vector< size_t >::const_iterator begin, MiscLib::Vector< size_t >::const_iterator end, std::pair< size_t, float > *score) const =0
virtual void Visit(PrimitiveShapeVisitor *visitor) const =0
virtual void Transform(float scale, const Vec3f &translate)=0
virtual float SignedDistance(const Vec3f &p) const =0
virtual size_t Identifier() const =0
virtual LevMarFunc< float > * SignedDistanceFunc() const =0
virtual void Normal(const Vec3f &p, Vec3f *n) const =0
virtual void SuggestSimplifications(const PointCloud &pc, MiscLib::Vector< size_t >::const_iterator begin, MiscLib::Vector< size_t >::const_iterator end, float distThresh, MiscLib::Vector< MiscLib::RefCountPtr< PrimitiveShape > > *suggestions) const
virtual void Description(std::string *s) const =0
virtual void DistanceAndNormalDeviation(const Vec3f &p, const Vec3f &n, std::pair< float, float > *dn) const =0
virtual float Distance(const Vec3f &p) const =0
virtual void Serialize(std::ostream *o, bool binary=true) const =0
This is the one and only serialization function It stores all the parameters of the shape as well as ...
virtual bool Fit(const PointCloud &pc, float epsilon, float normalThresh, MiscLib::Vector< size_t >::const_iterator begin, MiscLib::Vector< size_t >::const_iterator end)=0
virtual PrimitiveShape * Clone() const =0
VectorXD< 3, float > Vector3Df
This file offers overloads of toIce() and fromIce() functions for STL container types.