00001
00002
00003 #include "Iguana/Inventor/interface/IgSoSlicerEngine.h"
00004
00005
00006
00007
00008
00009
00010
00011
00012 SO_ENGINE_SOURCE (IgSoSlicerEngine);
00013
00014
00015
00016
00017
00018 void
00019 IgSoSlicerEngine::initClass (void)
00020 {
00021 SO_ENGINE_INIT_CLASS (IgSoSlicerEngine, SoEngine, "Engine");
00022 }
00023
00024 IgSoSlicerEngine::IgSoSlicerEngine (void)
00025 {
00026 SO_ENGINE_CONSTRUCTOR (IgSoSlicerEngine);
00027 SO_ENGINE_ADD_INPUT (thickness, (.5));
00028 SO_ENGINE_ADD_INPUT (plane, (SbPlane (SbVec3f (0, 0, -1), 0)));
00029 SO_ENGINE_ADD_OUTPUT (frontPlane, SoSFPlane);
00030 SO_ENGINE_ADD_OUTPUT (backPlane, SoSFPlane);
00031 }
00032
00033 IgSoSlicerEngine::~IgSoSlicerEngine (void)
00034 {}
00035
00036 void
00037 IgSoSlicerEngine::evaluate (void)
00038 {
00039 SbPlane p (plane.getValue ());
00040 SbVec3f n (p.getNormal ());
00041 float d1 = p.getDistanceFromOrigin ();
00042 float d2 = thickness.getValue ()/2.0f;
00043
00044 SO_ENGINE_OUTPUT (frontPlane, SoSFPlane,
00045 setValue (SbPlane (n, d1 - d2)));
00046 SO_ENGINE_OUTPUT (backPlane, SoSFPlane,
00047 setValue (SbPlane (n * -1, -d1 - d2)));
00048 }