You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.0 KiB
102 lines
3.0 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: Example1.cxx,v $
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
// include OS specific include file to mix in X code
|
|
|
|
#include "vtkActor.h"
|
|
#include "vtkConeSource.h"
|
|
#include "vtkGlyph3D.h"
|
|
#include "vtkPolyData.h"
|
|
#include "vtkPolyDataMapper.h"
|
|
#include "vtkRenderWindow.h"
|
|
#include "vtkRenderer.h"
|
|
#include "vtkSphereSource.h"
|
|
#include "vtkXRenderWindowInteractor.h"
|
|
|
|
#include <Xm/PushB.h>
|
|
|
|
void quit_cb(Widget,XtPointer,XtPointer);
|
|
|
|
main (int argc, char *argv[])
|
|
{
|
|
// X window stuff
|
|
XtAppContext app;
|
|
Widget toplevel, button;
|
|
Display *display;
|
|
|
|
// VTK stuff
|
|
vtkRenderWindow *renWin;
|
|
vtkRenderer *ren1;
|
|
vtkActor *sphereActor1, *spikeActor1;
|
|
vtkSphereSource *sphere;
|
|
vtkConeSource *cone;
|
|
vtkGlyph3D *glyph;
|
|
vtkPolyDataMapper *sphereMapper, *spikeMapper;
|
|
vtkXRenderWindowInteractor *iren;
|
|
|
|
renWin = vtkRenderWindow::New();
|
|
ren1 = vtkRenderer::New();
|
|
renWin->AddRenderer(ren1);
|
|
|
|
sphere = vtkSphereSource::New();
|
|
sphereMapper = vtkPolyDataMapper::New();
|
|
sphereMapper->SetInputConnection(sphere->GetOutputPort());
|
|
sphereActor1 = vtkActor::New();
|
|
sphereActor1->SetMapper(sphereMapper);
|
|
cone = vtkConeSource::New();
|
|
glyph = vtkGlyph3D::New();
|
|
glyph->SetInputConnection(sphere->GetOutputPort());
|
|
glyph->SetSourceConnection(cone->GetOutputPort());
|
|
glyph->SetVectorModeToUseNormal();
|
|
glyph->SetScaleModeToScaleByVector();
|
|
glyph->SetScaleFactor(0.25);
|
|
spikeMapper = vtkPolyDataMapper::New();
|
|
spikeMapper->SetInputConnection(glyph->GetOutputPort());
|
|
spikeActor1 = vtkActor::New();
|
|
spikeActor1->SetMapper(spikeMapper);
|
|
ren1->AddActor(sphereActor1);
|
|
ren1->AddActor(spikeActor1);
|
|
ren1->SetBackground(0.4,0.1,0.2);
|
|
|
|
// do the xwindow ui stuff
|
|
XtSetLanguageProc(NULL,NULL,NULL);
|
|
toplevel = XtVaAppInitialize(&app,"Sample",NULL,0,
|
|
&argc,argv,NULL, NULL);
|
|
|
|
// get the display connection and give it to the renderer
|
|
display = XtDisplay(toplevel);
|
|
renWin->SetDisplayId(display);
|
|
|
|
// We use an X specific interactor
|
|
// since we have decided to make this an X program
|
|
iren = vtkXRenderWindowInteractor::New();
|
|
iren->SetRenderWindow(renWin);
|
|
iren->Initialize(app);
|
|
|
|
button = XtVaCreateManagedWidget("Exit",
|
|
xmPushButtonWidgetClass,
|
|
toplevel,
|
|
XmNwidth, 50,
|
|
XmNheight, 50, NULL);
|
|
|
|
XtRealizeWidget(toplevel);
|
|
XtAddCallback(button,XmNactivateCallback,quit_cb,NULL);
|
|
XtAppMainLoop(app);
|
|
}
|
|
|
|
// simple quit callback
|
|
void quit_cb(Widget w,XtPointer client_data, XtPointer call_data)
|
|
{
|
|
exit(0);
|
|
}
|
|
|