[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