libsurf
Programmer's Documentation
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.
#include <linearsurf.h>
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. | |
LinearSurf * | clone () 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 | |
![]() | |
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 | |
![]() | |
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 SurfacePtr | createFromXml (const XmlElement &xe) |
static factory function | |
static SurfacePtr | createFromIges (const IgesFile &file, const IgesDirEntry &entry) |
static factory : create surface from IGES entity | |
![]() | |
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 uint | nextObjectId () |
generate new object id | |
![]() | |
std::string | ids |
string identifier | |
uint | object_id |
integer id used to find object in serialization | |
![]() | |
SMatrix< 4, 4 > | mat |