[vtkusers] Vector arrows form a solid patch. How to rectify??

Rakesh Patil rakeshthp at in.com
Thu Jan 28 11:53:33 EST 2010


 i guess, the way i explained the problem was not correct.. here it goes,for a large area, if i draw vecot of actual size, it will be visible as a small dot. So i need to scale and make it large enough that it is visible properly.. And as i zoom in, and go closer to them, they must slowly,shrink to their actual size... As kaarthik said, i think i need to write my own actor . But how to do it, am not able to understand..can anyone guide me..??ThanksRegards Original message From:David Doria< daviddoria+vtk at gmail.com >Date: 27 Jan 10 19:54:04Subject:Re: [vtkusers] Vector arrows form a solid patch. How to rectify??To: rakeshthp at in.comOn Wed, Jan 27, 2010 at 8:56 AM, Rakesh Patilwrote:> Hello,>> I dont know mush about wrapping the code. It would be nice if anyone helps> me out. Here is my code to display vectors>> unsigned int numpts = x.size();>> vtkPoints *pts = vtkPoints::New();> pts>SetNumberOfPoints(numpts);>> vtkDoubleArray *vecArr = vtkDoubleArray::New();> vecArr>SetNumberO
 fComponents(3);> vecArr>SetNumberOfTuples(numpts);>> for( unsigned int i=0; i < numpts; i++)> {> pts>InsertPoint(i, x(i), y(i), 0);> vecArr>InsertTuple2(i, velu(i), velv(i));> }>> unsigned int numcells = elem.rows(); // elem is a matrix that contains the> index of nodes of elements in the mesh>> vtkCellArray *cellA = vtlCellArray::New();> cellA>SetNumberOfCells(numcells);>> for (unsigned int i=0; i < numcells; i++)> {> cellA>InsertNextCell(3);> cellA>InsertCellPoint( elem(i, 0) );> cellA>InsertCellPoint( elem(i, 1) );> cellA>InsertCellPoint( elem(i, 2) );> }>> vtkUnstructuredGrid *uGrid = vtkUnstructuredGrid::New();> uGrid>Allocate(numcells, numcells);> uGrid>SetCells( VTKTRIANGLE, cellA);> uGrid>SetPoints(pts);> uGrid>GetPointData()>SetVector(vecArr);>> vtkGlyph2D *glyph = vtkGlyph2D::New();> glyph>SetInput(uGrid);> glyph>SetColorModeToColorByVector();> glyph>OrientOn();> glyph>SetScaleFactor(1);>> vtkGlyphSource2D *glyphSource = vtkGlyphSource2D::New();> glyphSource>Filled
 Off();> glyphSource>SetGlyphTypeToArrow();>> glyph>SetInputConnection(1, glyphSource>GetOutputPort());>> vtkPolyDataMapper *gMapper = vtkPolyDataMapper::New();> gMapper>SetInput( glyph>GetOutput());> gMapper>ScalarVisibilityOn();> gMapper>SetScalarRange(uGrid>GetScalarRange());>> vtkActor *gactor = vtkActor::New();> gactor>SetMapper(gMapper);>> pRenderer>AddActor(gactor);>> pRenderer>Rese tCamera();>> Do i need to derive a class from vtkActor and override RenderOpaqueGeometry> code..?? If so, then how do i scale the glyphs..?? and which part will this> code come into picture. Am not that much expert in C++ but can manage with a> guidance.>> Thanks>> Regards>>  Original message > From:Karthik Krishnan< karthik.krishnan at kitware.com >> Date: 25 Jan 10 17:08:12> Subject: Re: [vtkusers] Vector arrows form a solid patch. How to rectify??> To: Rakesh Patil>> You'll have to write your own actor wrapping around your existing code> and overriding RenderOpaqueGeometry. Its not hard. Se
 e several actors> in VTK/Rendering that scale their font size based on the size of the> viewport etc. You may have to do something similar scaling your glyphs> based on the parallel scale / view angle.>> On Sat, Jan 23, 2010 at 12:49 PM, Rakesh Patil wrote:>> hello,>>>> When i display a vector plot using vtk, it is shown very small like a dot.>> And when i zoom into it, it gets more visible and big. But, i want it in>> such a way, that when i display it, at the initial stage itself, the>> vectors>> must be big enough that can be seen. And when we zoom into it, then the>> arrow size must proportionately become small. I Used setscalefactor for>> glyph object and got the arrow size increased.>>>> But where the data is very dense, there a solid patch is formed due to>> which>> i cannot make out whats the length of the arrow. So as we zoom in, the>> arrow>> size must be reduced so that at the denser location, i can differentiate>> among two vectors. How can i do this..??>>>> Than
 ks in advance>>>> Regards>> Rakesh>>>> Get Yourself a cool, short @in.com Email ID now!>>  >> Powered by www.kitware.com>>>> Visit other Kitware opensource projects at>> http://www.kitware.com/opensource/opensource.html>>>> Please keep messages ontopic and check the VTK FAQ at:>> http://www.vtk.org/Wiki/VTKFAQ>>>> Follow this link to subscribe/unsubscribe:>> http://www.vtk.org/mailman/listinfo/vtkusers>> > Karthik KrishnanThis is only a very partial answer, but you can scale an arrow usingthe vtkTransformFilter like this:http://www.vtk.org/Wiki/VTK/Examples/TransformFilterThanks,DavidPowered by www.kitware.comVisit other Kitware opensource projects at http://www.kitware.com/opensource/opensource.htmlPlease keep messages ontopic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTKFAQFollow this link to subscribe/unsubscribe:http://www.vtk.org/mailman/listinfo/vtkusers Get Yourself a cool, short @in.com Email ID now!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100128/e8adc9f8/attachment.htm>


More information about the vtkusers mailing list