libsurf
Programmer's Documentation

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.

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

XmlElement toXml (bool share=false) const
XML output.

void fromXml (const XmlElement &xe)
XML input.

LinearSurfclone () const
generate a clone

const Vector & vsections () const

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

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]

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)

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   1.8.5