[vtkusers] Display Coordinates Doesn't Change After Translation

Wenlong Wang scc.wwl at gmail.com
Mon Oct 31 08:47:13 EDT 2011


Hi, David,

Thank you for your help.

Here is the code shows the problem I encountered.

    *vtkSphereSource* s = vtkSphereSource::New();
    s->Update();

    vtkTransform* trans = vtkTransform::New();
    trans->Translate(1, 1, 0);

    vtkTransformPolyDataFilter* tf = vtkTransformPolyDataFilter::New();
    tf->SetInputConnection(s->GetOutputPort());
    tf->SetTransform(trans);
    tf->Update();

    vtkPolyDataMapper* originalMapper = vtkPolyDataMapper::New();
    originalMapper->SetInputConnection(s->GetOutputPort());

    vtkActor* originalActor = vtkActor::New();
    originalActor->SetMapper(originalMapper);
    originalActor->GetProperty()->SetColor(1, 0, 0);

    vtkPolyDataMapper* transformedMapper = vtkPolyDataMapper::New();
    transformedMapper->SetInputConnection(tf->GetOutputPort());

    vtkActor* transdformedActor = vtkActor::New();
    transdformedActor->SetMapper(transformedMapper);
    transdformedActor->GetProperty()->SetColor(0 ,1, 0);

    vtkCamera* camera = vtkCamera::New();
    camera->SetPosition(0, 0, 5);
    camera->SetViewUp(0, 1, 0);

    vtkRenderer* ren = vtkRenderer::New();
    ren->AddActor(originalActor);
    ren->AddActor(transdformedActor);
    ren->SetActiveCamera(camera);

    vtkRenderWindow* renWin = vtkRenderWindow::New();
    renWin->AddRenderer(ren);

    vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();
    iren->SetRenderWindow(renWin);

    //------------------Start to convert the world coordinates to display
coordinates--------------
    vtkPoints* points = vtkPoints::New();
    vtkPolyData* polydata = vtkPolyData::New();

    polydata = tf->GetOutput();
    points = polydata->GetPoints();

    double p[3], r[3];
    for (int i = 0; i< 50; i++)
    {
        points->GetPoint(i, p);
        ren->SetWorldPoint(p);
        ren->WorldToDisplay();
        ren->GetDisplayPoint(r);
    }**
    renWin->Render();
    iren->Start();*

On the screen, the sphere did translate to another place. However, when I
check the display coordinates store in point *r*, I found the X and Y are
not changed, only Z has slight difference.

Thank you again for your time.

Wenlong

2011/10/30 David Doria <daviddoria at gmail.com>

> On Sat, Oct 29, 2011 at 1:47 PM, Wenlong Wang <scc.wwl at gmail.com> wrote:
>
>> Hi David,
>>
>> I tried the example about vtkTransformPolyDataFilter and applied it to my
>> actor. But seems the coordinates didn't change in the way I discribed in my
>> earlier mail.
>>
>> So is that because I didn't use it right? Or I should use other methods
>> to get access to the new dataset generated by vtkTransformPolyDataFilter?
>>
>> Thank you very much.
>>
>> Long
>
>
> I suggest you send the smallest possible compilable code that you can to
> demonstrate the problem. Something like simply display a vtkSphereSource.
> Describe the behavior the code produces, and the behavior that you are
> aiming for.
>
> David
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20111031/819a4184/attachment.htm>


More information about the vtkusers mailing list