MeshKit
1.0

#include <AF2PlaneProjection.hpp>
Public Member Functions  
AF2PlaneProjection (iGeom *iGeomPtrArg, iGeom::EntityHandle srfcHandle, MeshKit::Vector< 3 > const &planeOrigin, MeshKit::Vector< 3 > const &planeNormal, MeshKit::Vector< 3 > const &planeXDir, double scaleFactor)  
Constructor.  
AF2Point2D *  transformFromSurface (AF2Point3D const &srfcPnt, bool &legal) const 
Transform from a 3dimensional point on the surface to a point in a 2dimensional space.  
AF2Point3D *  transformToSurface (AF2Point2D const &planePnt, unsigned long const &pntId) const 
Transform from a point in the 2dimensional space of this transformation to a 3dimensional point on the surface.  
Private Attributes  
iGeom *  iGeomPtr 
iGeom::EntityHandle  surface 
MeshKit::Vector< 3 >  pOrigin 
MeshKit::Vector< 3 >  pNormal 
MeshKit::Vector< 3 >  pXDir 
MeshKit::Vector< 3 >  pYDir 
double  scale 
Definition at line 24 of file AF2PlaneProjection.hpp.
AF2PlaneProjection  (  iGeom *  iGeomPtrArg, 
iGeom::EntityHandle  srfcHandle,  
MeshKit::Vector< 3 > const &  planeOrigin,  
MeshKit::Vector< 3 > const &  planeNormal,  
MeshKit::Vector< 3 > const &  planeXDir,  
double  scaleFactor  
) 
Constructor.
It is the responsibility of the context that constructs/uses an AF2PlaneProjection to ensure that the pointer to the iGeom instance and the handle to the geometric surface remain valid as long as the AF2PlaneProjection is in use.
The normal vector must have length bounded away from zero. Ideally it would have length one, but the constructor will normalize it to have length one if it does not.
The xdirection vector must also have length bounded away from zero. Ideally it would have length one, but the constructor will normalize it to have length one if it does not. The xdirection vector must be orthogonal to the normal vector.
The ydirection of the transformation will be defined such that the right hand rule is followed. In other words, the normal vector to the plane will be the standard righthanded cross product of the (normalized) xdirection vector and the ydirection.
After projecting threedimensional points into the plane, the coordinates will be multiplied by the inverse of the scaling factor. When used for the advancing front algorithm implementation, the scale should be given as the approximate distance between two adjacent points on the front near the baseline edge, since this will produce points that are nearly unit distance apart after the transformation is applied and the advancing front rules are defined relative to a unit length baseline edge.
iGeomPtrArg  a pointer to an iGeom instance 
srfcHandle  a handle to a 2dimensional surface embedded in 3dimensional space that is a valid handle to access the surface through the iGeom instance referenced by iGeomPtrArg 
planeOrigin  a point within the plane onto which this transformation will project points 
planeNormal  a direction vector that is normal to the plane onto which this transformation will project points 
planeXDir  a direction vector (parallel to the plane onto which this transformation will project points) that defines the direction that will be the first coordinate of the 2dimensional space 
scaleFactor  a positive scaling factor that approximates the distance between adjacent points on the advancing front 
Definition at line 17 of file AF2PlaneProjection.cpp.
AF2Point2D * transformFromSurface  (  AF2Point3D const &  srfcPnt, 
bool &  legal  
)  const [virtual] 
Transform from a 3dimensional point on the surface to a point in a 2dimensional space.
The returned point is returned by pointer. It is allocated on the heap by this method using new, and it is the responsibility of the calling context to deallocate it with a call to delete.
srfcPnt  the input 3dimensional point on the surface 
legal  an editable flag that the AF2LocalTransform may set to false to indicate that the 3dimensional point does not lie in the local patch of the surface for which this transform provides a bijection, so the 2dimensional point returned by the method should not be used except, possibly, as an endpoint of an edge if the other endpoint of the edge is legal 
Implements AF2LocalTransform.
Definition at line 88 of file AF2PlaneProjection.cpp.
AF2Point3D * transformToSurface  (  AF2Point2D const &  planePnt, 
unsigned long const &  pntId  
)  const [virtual] 
Transform from a point in the 2dimensional space of this transformation to a 3dimensional point on the surface.
The returned point is returned by pointer. It is allocated on the heap by this method using new, and it is the responsibility of the calling context to deallocate it with a call to delete.
planePnt  the input 2dimensional point 
pntId  the local point identifier that should be assigned to the new threedimensional point 
Implements AF2LocalTransform.
Definition at line 133 of file AF2PlaneProjection.cpp.
Definition at line 28 of file AF2PlaneProjection.hpp.
MeshKit::Vector<3> pNormal [private] 
Definition at line 31 of file AF2PlaneProjection.hpp.
MeshKit::Vector<3> pOrigin [private] 
Definition at line 30 of file AF2PlaneProjection.hpp.
MeshKit::Vector<3> pXDir [private] 
Definition at line 32 of file AF2PlaneProjection.hpp.
MeshKit::Vector<3> pYDir [private] 
Definition at line 33 of file AF2PlaneProjection.hpp.
double scale [private] 
Definition at line 34 of file AF2PlaneProjection.hpp.
iGeom::EntityHandle surface [private] 
Definition at line 29 of file AF2PlaneProjection.hpp.