[vtkusers] Some problems with visualizing vectors
Luca Pamparana
luca.pamparana at gmail.com
Thu Nov 5 11:38:18 EST 2009
Hello,
Following the suggestion by the community, I tried to visualize a
plane and a vector incident on it. However, I am seeing something a
bit unusual.
So, I have a plane in 2D with the center of gravity at (0, 0, -2.5)
and I want to draw a line from the center of gravity to (0, 0, 0). So
when I just run the application, I was hoping to see a line being
drawn. I can see the line but only when I interact with the plane and
rotate it... Something weird is going on...
Here is the code that I had tried.
#include "vtkPoints.h"
#include "vtkCellArray.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkProperty.h"
#include "vtkSmartPointer.h"
#include "vtkLineSource.h"
int main()
{
vtkSmartPointer<vtkPolyData> geometry = vtkSmartPointer<vtkPolyData>::New();
vtkSmartPointer<vtkPoints> testPoints = vtkSmartPointer<vtkPoints>::New();
testPoints->Allocate(4);
vtkSmartPointer<vtkCellArray> testPolys =
vtkSmartPointer<vtkCellArray>::New();
testPolys->Allocate(testPolys->EstimateSize(1,4));
double x[3];
vtkIdType pts[4];
x[0] = -2.5;
x[1] = -2.5;
x[2] = -2.5;
testPoints->InsertNextPoint(x);
x[0] = 2.5;
x[1] = -2.5;
x[2] = -2.5;
testPoints->InsertNextPoint(x);
x[0] = -2.5;
x[1] = 2.5;
x[2] = -2.5;
testPoints->InsertNextPoint(x);
x[0] = 2.5;
x[1] = 2.5;
x[2] = -2.5;
testPoints->InsertNextPoint(x);
pts[0] = 0; pts[1] = 1; pts[2] = 3; pts[3] = 2;
testPolys->InsertNextCell(4,pts);
geometry->SetPoints(testPoints);
testPolys->Squeeze();
geometry->SetPolys(testPolys);
vtkSmartPointer<vtkLineSource> lineSource =
vtkSmartPointer<vtkLineSource>::New();
lineSource->SetPoint1(0, 0, -2.5);
lineSource->SetPoint2(0, 0, 0);
vtkSmartPointer<vtkPolyDataMapper> lineMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
lineMapper->SetInput(lineSource->GetOutput());
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renWin =
vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
vtkSmartPointer<vtkPolyDataMapper> testMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
testMapper->SetInput(geometry);
vtkSmartPointer<vtkActor> testActor = vtkSmartPointer<vtkActor>::New();
testActor->SetMapper(testMapper);
testActor->GetProperty()->SetColor(1.0000, 0.3882, 0.2784);
vtkSmartPointer<vtkActor> lineActor = vtkSmartPointer<vtkActor>::New();
lineActor->SetMapper(lineMapper);
lineActor->GetProperty()->SetColor(1, 1, 1);
renderer->AddActor(testActor);
renderer->AddActor(lineActor);
renderer->SetBackground(1,1,1);
renWin->SetSize(300,300);
renWin->Render();
iren->Start();
return 0;
}
Any thoughts?
Luca
More information about the vtkusers
mailing list