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

#include <linearsurf.h>

Inheritance diagram for LinearSurf:
Collaboration diagram for LinearSurf:

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