00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __HAPTICCYLINDER_H__
00030 #define __HAPTICCYLINDER_H__
00031
00032 #include "X3DGeometryNode.h"
00033 #include "H3DSurfaceNode.h"
00034 #include "HapticShape.h"
00035 #include "HLCustomObject.h"
00036
00037 namespace H3D {
00038
00040 class H3DAPI_API HapticCylinder: public HapticShape, public HLCustomObject {
00041 public:
00043 HapticCylinder( H3DFloat _height,
00044 H3DFloat _radius,
00045 X3DGeometryNode *_geometry,
00046 H3DSurfaceNode *_surface,
00047 const Matrix4f &_transform ):
00048 HapticShape( _geometry, _surface, _transform ),
00049 height( _height ),
00050 radius( _radius ) {}
00051 #ifdef HAVE_OPENHAPTICS
00066 virtual bool intersectSurface( const Vec3f &start_point,
00067 const Vec3f &end_point,
00068 Vec3f &intersection_point,
00069 Vec3f &intersection_normal,
00070 HLenum &face );
00071
00081 virtual bool closestFeature( const Vec3f &query_point,
00082 const Vec3f &target_point,
00083 HLgeom *geom,
00084 Vec3f &closest_point );
00085
00087 virtual void hlRender( HLHapticsDevice *hd );
00088 #endif
00089 H3DFloat height, radius;
00090
00091 };
00092 }
00093
00094 #endif