# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

NL3D::CZoneSmoother Class Reference

A class used to make Bezier patch of zones G1. More...

#include <zone_smoother.h>

List of all members.

Public Methods

 CZoneSmoother ()
 Constructor. More...

void smoothTangents (CZoneInfo zones[5], float angleThreshold=NLMISC::Pi/6, bool continuityC1=false)
 Smooth the tangents of those zones. More...


Private Types

typedef std::map< sint, CZoneInfoTZoneInfoMap

Private Methods

bool smoothTangent (const CVector &tgt, const CVector &int0, const CVector &int1, CVector &tgtres)

Private Attributes

TZoneInfoMap _Zones
float _CosThreshold
bool _ContinuityC1


Detailed Description

A class used to make Bezier patch of zones G1.

Author:
Lionel Berenguier , Nevrax France
Date:
2000

Definition at line 46 of file zone_smoother.h.


Member Typedef Documentation

typedef std::map<sint, CZoneInfo> NL3D::CZoneSmoother::TZoneInfoMap [private]
 

Definition at line 90 of file zone_smoother.h.


Constructor & Destructor Documentation

NL3D::CZoneSmoother::CZoneSmoother   [inline]
 

Constructor.

Definition at line 66 of file zone_smoother.h.


Member Function Documentation

bool NL3D::CZoneSmoother::smoothTangent const CVector &    tgt,
const CVector &    int0,
const CVector &    int1,
CVector &    tgtres
[private]
 

Definition at line 36 of file zone_smoother.cpp.

References _CosThreshold.

Referenced by smoothTangents.

void NL3D::CZoneSmoother::smoothTangents CZoneInfo    zones[5],
float    angleThreshold = NLMISC::Pi/6,
bool    continuityC1 = false
 

Smooth the tangents of those zones.

Zones must be correclty welded. Only all patchs of zones[0] are parsed. But other zones may be modified on their edge (so you must save them).

NB: tangent smoothing is only done on bind 1/1.

Parameters:
zones  The 0 is the center zone to be computed. Other are the 4 zones around (no special order needed). Doesn't matter if zones[i].Patchs is NULL. Also, if a neighbor patch is not found on a edge, then no error is generated: this patch edge is not modified. nlstop if zones[0]==NULL.
angleThreshold  if angle beetween (patch_interior - tangent) and (neighbor_patch_interior - tangent) is above angleThreshold, no smooth is done on this tangent. Default: 30°.
continuityC1.  when a smooth is done on a tangent, tangent is forced such that the 2 interiors and the tangent are colinear, so continuity G1 is assured. if continuityC1 is true, then tangent is set to the middle of the interiors (continuity C1). If false, tangent is setup so that previous distance ratio are kept.

Definition at line 67 of file zone_smoother.cpp.

References _ContinuityC1, _CosThreshold, _Zones, nlassert, and smoothTangent.


Member Data Documentation

bool NL3D::CZoneSmoother::_ContinuityC1 [private]
 

Definition at line 93 of file zone_smoother.h.

Referenced by smoothTangents.

float NL3D::CZoneSmoother::_CosThreshold [private]
 

Definition at line 92 of file zone_smoother.h.

Referenced by smoothTangent, and smoothTangents.

TZoneInfoMap NL3D::CZoneSmoother::_Zones [private]
 

Definition at line 91 of file zone_smoother.h.

Referenced by smoothTangents.


The documentation for this class was generated from the following files: