MOAB: Mesh Oriented datABase  (version 5.5.0)
torus Class Reference
+ Inheritance diagram for torus:
+ Collaboration diagram for torus:

Public Member Functions

 torus (double x=0, double y=0, double z=0, double aa=0.3, double cc=1.0)
 
virtual ~torus ()
 
void project_points2geom (int dim, double *oldcoords, double *newcoords, double *derivs) const
 
- Public Member Functions inherited from geomObject
virtual ~geomObject ()
 
virtual double compute_projecterror (int dim, double *oldcoords) const
 
virtual void compute_projecterror (int dim, int nverts, double *oldcoords, double &l1err, double &l2err, double &linferr) const
 
double Twonorm (int dim, double *vec) const
 

Private Attributes

double centerx
 
double centery
 
double centerz
 
double a
 
double c
 

Detailed Description

Definition at line 125 of file geomObject.cpp.

Constructor & Destructor Documentation

◆ torus()

torus::torus ( double  x = 0,
double  y = 0,
double  z = 0,
double  aa = 0.3,
double  cc = 1.0 
)
inline

Definition at line 128 of file geomObject.cpp.

129  : centerx( x ), centery( y ), centerz( z ), a( aa ), c( cc )
130  {
131  assert( aa > 0 && cc > 0 );
132  }

◆ ~torus()

virtual torus::~torus ( )
inlinevirtual

Definition at line 133 of file geomObject.cpp.

133 {}

Member Function Documentation

◆ project_points2geom()

void torus::project_points2geom ( int  dim,
double *  oldcoords,
double *  newcoords,
double *  derivs 
) const
inlinevirtual

Implements geomObject.

Definition at line 134 of file geomObject.cpp.

135  {
136  assert( dim == 3 && oldcoords && newcoords );
137  double transfer[3] = { oldcoords[0] - centerx, oldcoords[1] - centery, oldcoords[2] - centerz };
138  double twodnrm = geomObject::Twonorm( 2, transfer );
139  double tubecenter[3] = { c * transfer[0] / twodnrm + centerx, c * transfer[1] / twodnrm + centery, centerz };
140  double direction[3] = { oldcoords[0] - tubecenter[0], oldcoords[1] - tubecenter[1],
141  oldcoords[2] - tubecenter[2] };
142  double len = geomObject::Twonorm( 3, direction );
143  assert( len > 0 );
144  direction[0] /= len;
145  direction[1] /= len;
146  direction[2] /= len;
147 
148  if( derivs )
149  {
150  derivs[0] = direction[0];
151  derivs[1] = direction[1];
152  derivs[2] = direction[2];
153  }
154 
155  newcoords[0] = tubecenter[0] + a * direction[0];
156  newcoords[1] = tubecenter[1] + a * direction[1];
157  newcoords[2] = tubecenter[2] + a * direction[2];
158  }

References a, c, centerx, centery, centerz, dim, and geomObject::Twonorm().

Member Data Documentation

◆ a

double torus::a
private

Definition at line 161 of file geomObject.cpp.

Referenced by project_points2geom().

◆ c

double torus::c
private

Definition at line 161 of file geomObject.cpp.

Referenced by project_points2geom().

◆ centerx

double torus::centerx
private

Definition at line 161 of file geomObject.cpp.

Referenced by project_points2geom().

◆ centery

double torus::centery
private

Definition at line 161 of file geomObject.cpp.

Referenced by project_points2geom().

◆ centerz

double torus::centerz
private

Definition at line 161 of file geomObject.cpp.

Referenced by project_points2geom().


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