[vtkusers] Help! Using implicit function to draw Sphere and using boolean operations.
    Rahul Goela 
    rahulgoela at yahoo.com
       
    Tue Sep  2 04:39:12 EDT 2003
    
    
  
Hi,
I am new to VTK. I need to create two spheres using
implicit functions and try boolien operations, such as
Union on them. 
For the starters, I tried writting a code to create a
sphere using q quadratic equation, and draw the image.
I get the following error -
--------------------------------------------------------
error C2664: 'SetInput' : cannot convert parameter 1
from 'class vtkImageData *' to 'class vtkDataSet *'
        Types pointed to are unrelated; conversion
requires reinterpret_cast, C-style cast or
function-style cast
: error C2664: 'SetInput' : cannot convert parameter 1
from 'class vtkImageData *' to 'class vtkDataSet *'
        Types pointed to are unrelated; conversion
requires reinterpret_cast, C-style cast or
function-style cast
Error executing cl.exe.
--------------------------------------------------------
My source Code is as follows -
-------------------------------------------------------
#include "vtkSphereSource.h"
#include "vtkQuadric.h"
#include "vtkSampleFunction.h"
#include "vtkContourFilter.h"
#include "vtkOutlineFilter.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkProperty.h"
void main ()
{
 	
  // -- create the quadric function object --
  // create the quadric function definition
  //F(x,y,z) = x^2 + y^2 + z^2 + R^2.
	
  vtkQuadric *quadric = vtkQuadric::New();
  quadric->SetCoefficients(1,1,1,0,0,0,0,0,0,1);
  // sample the quadric function
  vtkSampleFunction *sample =
vtkSampleFunction::New();
  sample->SetSampleDimensions(60,60,60);
  sample->SetImplicitFunction(quadric);
  // Create five surfaces F(x,y,z) = constant between
range specified
  vtkContourFilter *sphereSurface =
vtkContourFilter::New();
  sphereSurface->SetInput(sample->GetOutput());
  sphereSurface->SetValue(0, 0.0);
  // map the contours to graphical primitives
  vtkPolyDataMapper *contMapper =
vtkPolyDataMapper::New();
  contMapper->SetInput(sphereSurface->GetOutput());
  //contMapper->SetScalarRange(0.0, 1.2);
  // create an actor for the contours
  vtkActor *contActor = vtkActor::New();
  contActor->SetMapper(contMapper);
  // -- create a box around the function to indicate
the sampling volume --
  // create outline
  vtkOutlineFilter *outline = vtkOutlineFilter::New();
  outline->SetInput(sample->GetOutput());
  // map it to graphics primitives
  vtkPolyDataMapper *outlineMapper =
vtkPolyDataMapper::New();
  outlineMapper->SetInput(outline->GetOutput());
  // create an actor for it
  vtkActor *outlineActor = vtkActor::New();
  outlineActor->SetMapper(outlineMapper);
  //outlineActor->GetProperty()->SetColor(0,0,0);
  // -- render both of the objects --
  // a renderer and render window
  vtkRenderer *ren1 = vtkRenderer::New();
  vtkRenderWindow *renWin = vtkRenderWindow::New();
  renWin->AddRenderer(ren1);
  // an interactor
  vtkRenderWindowInteractor *iren =
vtkRenderWindowInteractor::New();
  iren->SetRenderWindow(renWin);
  // add the actors to the scene
  ren1->AddActor(contActor);
  ren1->AddActor(outlineActor);
  ren1->SetBackground(1,1,1); // Background color
white
  // render an image (lights and cameras are created
automatically)
  renWin->Render();
  // begin mouse interaction
  iren->Start();
}
---------------------------------------------------------
Kindly help me out as to how to solve this error. Also
if there is a web-site with some examples referring to
use of boolean Implicit function, kindly let me know.
Thanks in advance
Rahul
________________________________________________________________________
Yahoo! India Promos: Win TVs, Bikes, DVD players & more!
Go to http://in.promos.yahoo.com
    
    
More information about the vtkusers
mailing list