libsurf
Programmer's Documentation

Public Member Functions | Private Attributes | List of all members
LinearSurf Class Reference

Detailed Description

Ruled surface with multiple sections.

LinearSurf implements a ruled surface defined as the linear interpolation between a set of curves, which need not have compatible knot vectors. A point at parameter value t on one curve is simply linearly connected to the point with the same parameter value on the next curve. Because of this, changing the t-parameterisation of a curve, which does not change the shape of the curve, can change the shape of a ruled surface defined by the curve.

See Also
SkinSurface

#include <linearsurf.h>

Inheritance diagram for LinearSurf:
[legend]
Collaboration diagram for LinearSurf:
[legend]

Public Member Functions

 LinearSurf (const std::string &s="NoNameLinearSurf")
 empty definition
 
 LinearSurf (const LinearSurf &a)
 copy surface, do not share curve objects
 
Vector init (const CurvePtrArray &cv)
 create from curve array, surface will modify curves when transformed
 
Vector init (const CurvePtr &ca, const CurvePtr &cb)
 convenience interface : construct from two curves (common case)
 
Vct3 eval (Real u, Real v) const
 compute a surface point
 
Vct3 derive (Real u, Real v, uint ku, uint kv) const
 derivation with respect to parameters
 
void plane (Real u, Real v, Vct3 &S, Vct3 &Su, Vct3 &Sv) const
 compute point and tangents in one sweep (more efficient)
 
void apply ()
 coordinate transformation
 
void initMesh (const DnRefineCriterion &c, DnMesh &gnr) const
 initialize mesh generator (marks kink edges)
 
void simpleMesh (PointGrid< 3, float > &pgrid, PointGrid< 3, float > &ngrid, uint pu=2, uint pv=2) const
 quadrilaterals for OpenGL display
 
XmlElement toXml (bool share=false) const
 XML output.
 
void fromXml (const XmlElement &xe)
 XML input.
 
LinearSurfclone () const
 generate a clone
 
const Vector & vsections () const
 read access to parametric positions of sections
 
int toIges (IgesFile &igfile, int tfi=0) const
 generate multiple IGES entities 118
 
bool fromIges (const IgesFile &file, const IgesDirEntry &dir)
 fetch data from IGES entity 118
 
uint segment (Real v) const
 find segment
 
void dimStats (DimStat &stat) const
 compute statistics
 
void initGridPattern (Vector &upi, Vector &vpi) const
 return an initial discretization pattern to start with
 
void isSymmetric (bool &usym, bool &vsym) const
 return if surface is symmetric in u- or v-direction
 
- Public Member Functions inherited from Surface
 Surface (const std::string &s="NoNameSurface")
 default initialization
 
virtual ~Surface ()
 virtual destructor
 
uint objid () const
 access integer object id
 
void rename (const std::string &s)
 change name
 
const std::string & name () const
 return name
 
virtual void eval (const PointList< 2 > &uv, PointList< 3 > &xyz) const
 utility interface
 
virtual Vct3 normal (Real u, Real v) const
 compute normal vector
 
virtual Real vcurvature (Real u, Real v) const
 compute curvature along v at u
 
virtual Real ucurvature (Real u, Real v) const
 compute curvature along u at v
 
virtual Real gaussianCurvature (Real u, Real v) const
 compute Gaussian curvature
 
virtual bool project (const Vct3 &pt, Vct2 &q, Real tol=1e-6, Real dpmin=1e-6) const
 find projection of pt on surface (needs a guess in q)
 
virtual bool intersect (const AbstractCurve &c, Vct2 &q, Real &t, Real tol=1e-6, Real dpmin=1e-6) const
 find approximate intersection with curve c
 
Real typLength (int nu=8, int nv=8) const
 compute typical dimension
 
virtual void initGrid (Real lmax, Real lmin, Real phimax, PointGrid< 2 > &pts) const
 create an unconstrained point grid as initialization for mesh generator
 
virtual void tessellate (CgMesh &cgm, uint maxtri=60000) const
 create a triangular mesh for visualization
 
SurfacePtr self ()
 return shared-pointer from *this
 
virtual void gridViz (MeshFields &mvz) const
 debug : create simple visualization
 
- Public Member Functions inherited from RFrame
void clear ()
 
Vct3 getOrigin () const
 
void translate (const Vct3 &v)
 
void translate (Real dx, Real dy, Real dz)
 
void rotate (Real betax, Real betay, Real betaz)
 
void rotate (const Vct3 &rotax, Real angle)
 
void scale (Real xf, Real yf, Real zf)
 
void scale (Real f)
 
void mirror (const Vct3 &normal)
 
const SMatrix< 4, 4 > & trafoMatrix () const
 
void setTrafoMatrix (const SMatrix< 4, 4 > &m)
 
Vct3 forward (const Vct3 &a) const
 
void forward (const PointList< 4 > &a, PointList< 4 > &b) const
 

Private Attributes

CurvePtrArray curves
 curves which constitute sections between which to interpolate
 
Vector vp
 the corresponding parameters in v-direction, [0,1]
 

Additional Inherited Members

- Static Public Member Functions inherited from Surface
static SurfacePtr createFromXml (const XmlElement &xe)
 static factory function
 
static SurfacePtr createFromIges (const IgesFile &file, const IgesDirEntry &entry)
 static factory : create surface from IGES entity
 
- Protected Member Functions inherited from Surface
Real localCurvature (const Vct3 &dc, const Vct3 &ddc) const
 determine local curvature given first and second derivative
 
void applyIgesTrafo (const IgesFile &file, const IgesDirEntry &dir)
 apply a transformation retrieved from IGES file
 
void setIgesName (const IgesFile &file, const IgesEntity &e)
 retrieve name from IGES file
 
- Static Protected Member Functions inherited from Surface
static uint nextObjectId ()
 generate new object id
 
- Protected Attributes inherited from Surface
std::string ids
 string identifier
 
uint object_id
 integer id used to find object in serialization
 
- Protected Attributes inherited from RFrame
SMatrix< 4, 4 > mat
 

The documentation for this class was generated from the following files:
Generated on Mon May 23 2022 03:03:17 for libsurf by   doxygen 1.8.5