[vtkusers] PLEASE HELP vtkActor2D problem
Isidro Moreno
morenoisidro at yahoo.com.ar
Thu Jun 28 11:47:00 EDT 2007
For those who don't understand what I'm trying to do (and want to lose
15min), please go to your VTK source directory and then to
X:\VTK\Hybrid\Testing\Tcl\xyPlot.tcl . Try to run the example and see that
although you can change the windows size the plots fit to the viewport and
this one to the window. Till here seems to be normal. Step2: go to the code
of xyPlot.tcl and then to line 68. Now change the first value from 1 to 0.5.
Also keep in mind the methods in line 68 and 67. Finally run the script
again and you'll see one plot gets smaller (narrower).
As vtkXYPlotActor iherits these methods (line 68 & 67) from vtkActor2D,
I expect the same behavior to my vtkActor2D ("actor" in the code below). I
also expect that "actor" fit the viewport automatically as the
vtkXYPlotActor, but this doesn't happens. Note that nothing is specified to
autoscale when resize the viewport/window in xyPlot.tcl .
Thank you for you time..
>> OK, let's see; as you must have seen the code below, it consist of
>> drawing a diagonal line. Width a Height are the dimensions the rectangle
>> in which this line is defined in. Using these two methods is the same as
>> doing vtkActor2D->GetPosition2Coordinate->SetValue(x,y) (where x=width &
>> y=height - see HTML help of vtkActor2D) as I've explained below. The
>> pourpose of all these is to autoscale any figure in the plane when the
>> window's size changes (not just a line but also a polygon, rectangle,
>> etc). In fact, I've used this code to draw a period of the sinus function
>> and it was fine! But I can't make it fit my window. I put a simple line
>> in the code below to make the things easier to understand, but you're the
>> second who asks me the same question. Should I be more clear and put the
>> actual code? Sorry for my english, I'm spanish speaker.
>> I know I can do this with actor 3D, but I think It's not good using it
>> in terms of design since I'm working in the plane and many unused memory
>> would be kept in if I use actor3D.
>>
>>
>>> Isidro,
>>>
>>> Could you be a bit more clear about what you want to do exactly?
>>> Does not a line have zero 'width' and 'height' by definition?
>>> If you want to change the size of your line, perhaps you could change
>>> Point1
>>> and Point2 on your line when you needed. Otherwise you could also
>>> position
>>> your line in 3D instead of using an Actor2D, this would give you some
>>> more
>>> flexibility.
>>>
>>> -SN
>>>
>>> -----Original Message-----
>>>
>>> I've been trying so hard, and It seems vtkActor2D ignores SetPositon2()
>>> method (or vtkActor2D->GetPosition2Coordinate->SetValue(x,y) method -
>>> see
>>> HTML vtkActor2D help). Could somebody help me if this is what's actually
>>> happening?
>>>
>>>
>>>>> On 6/26/07, Isidro Moreno <morenoisidro at yahoo.com.ar> wrote:
>>>>>> Mark,
>>>>>>
>>>>>> SetWidth() and SetHeight() methods (vtkProp's methods),define the
>>>>>> dimensions of the rectangle in which the line is drawn (it could be
>>>>>> not
>>>>>> a
>>>>>> line, but also a circle, a polygon, etc.). In fact, that rectangle is
>>>>>> which
>>>>>> I want to autoscale when window's size changes. As a result, the line
>>>>>> would
>>>>>> fit to it. That's what I've understood till now. But I could be
>>>>>> wrong...
>>>>>>
>>>>>> Isidro
>>>>>>
>>>>>>
>>>>>> >
>>>>>> > On 6/26/07, Isidro Moreno <morenoisidro at yahoo.com.ar> wrote:
>>>>>> >>
>>>>>> >>
>>>>>> >> Hello! I've made a simple VTK/C++ test program. It's just a 2D
>>>>>> >> line.
>>>>>> >> Now,
>>>>>> >> I
>>>>>> >> don't know how to make the line size change. I've tried many
>>>>>> >> methods;
>>>>>> >> and
>>>>>> >> changing vtkActor's coordinate system (vtkActor2D's), but no
>>>>>> >> results.
>>>>>> >> I
>>>>>> >> even
>>>>>> >> wonder what coordinate system is vtkLineSource defined in (see
>>>>>> >> code
>>>>>> >> below).
>>>>>> >>
>>>>>> >> Here's my code:
>>>>>> >>
>>>>>> >> vtkLineSource *line=vtkLineSource::New();
>>>>>> >> line->SetPoint1(20.0,20.0,0.0); // what Coordinate System??
>>>>>> >> line->SetPoint2(80.0,150.0,0.0); // what Coordinate System??
>>>>>> >>
>>>>>> >> vtkPolyDataMapper2D *mapper=vtkPolyDataMapper2D::New();
>>>>>> >> mapper->SetInput(line->GetOutput());
>>>>>> >>
>>>>>> >> vtkActor2D *actor=vtkActor2D::New();
>>>>>> >> actor->SetMapper(mapper);
>>>>>> >> actor->GetProperty()->SetColor(1.0,0.0,0.0);
>>>>>> >> actor->SetWidth(0.5); // Doesn't work!! - The same happens
>>>>>> >> with vtkActor2D->GetPosition2Coordinate->SetValue(double width ,
>>>>>> >> double height)
>>>>>> >> actor->SetHeight(0.5); // Doesn't work!! - The same happens
>>>>>> >> with vtkActor2D->GetPosition2Coordinate->SetValue(double width ,
>>>>>> >> double height)
>>>>>> >>
>>>>>> >> vtkRenderer *render=vtkRenderer::New();
>>>>>> >> vtkRenderWindow *win=vtkRenderWindow::New();
>>>>>> >> win->AddRenderer(render);
>>>>>> >>
>>>>>> >> vtkRenderWindowInteractor
>>>>>> >> *interac=vtkRenderWindowInteractor::New();
>>>>>> >> interac->SetRenderWindow(win);
>>>>>> >>
>>>>>> >> render->AddActor2D(actor);
>>>>>> >> render->SetBackground(0.1,0.2,0.4);
>>>>>> >>
>>>>>> >> win->Render();
>>>>>> >>
>>>>>> >> interac->Initialize();
>>>>>> >> interac->Start();
>>>>>> >>
>>>>>> >> line->Delete();
>>>>>> >> mapper->Delete();
>>>>>> >> actor->Delete();
>>>>>> >> render->Delete();
>>>>>> >> win->Delete();
>>>>>> >> interac->Delete();
>>>>>> >>
>>>>>> >> I want to make the line resize when changing windows size. I'd be
>>>>>> >> very
>>>>>> >> grateful if somebody could help me with this. Thanks!!!
>>>
>>> This e-mail may contain confidential and/or privileged information for
>>> the sole use of the intended recipient. Any review or distribution by
>>> anyone other than the person for whom it was originally intended is
>>> strictly prohibited. If you have received this e-mail in error, please
>>> contact the sender and delete all copies. Opinions, conclusions or other
>>> information contained in this e-mail may not be that of the
>>> organization.
>>>
>>>
>>> --
>>> No virus found in this incoming message.
>>> Checked by AVG Free Edition.
>>> Version: 7.5.472 / Virus Database: 269.9.10/873 - Release Date:
>>> 26/6/2007 23:54
>>>
>>>
>>
>> _______________________________________________
>> This is the private VTK discussion list. Please keep messages on-topic.
>> Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtkusers
>>
>>
>> --
>> No virus found in this incoming message.
>> Checked by AVG Free Edition. Version: 7.5.472 / Virus Database:
>> 269.9.10/873 - Release Date: 26/6/2007 23:54
>>
>
More information about the vtkusers
mailing list