[vtkusers] Example of PointInPolygon

rakesh patil prakeshofficial at gmail.com
Wed Sep 29 21:41:41 EDT 2010


Hello,

Now the things are going more weird. If I load the scatter file in UTM
format, then it shows all the points in the bounding box. If i load data in
Geographic format(lat/long) then, it doesnt show any point within the
polygon..

Any clues, or suggestions whats going wrong here?

Thanks

Warm Regards
Rakesh Patil

On Wed, Sep 29, 2010 at 5:25 PM, rakesh patil <prakeshofficial at gmail.com>wrote:

> Hi
>
> I am using points and not vertex points. Also the example given by David,
> is instructing me the similar method to use.
>
> In the above code i made a small change. Instead of.
>
> newPoints->InsertNextPoint( points->GetPoint(id));
>
> I wrote
>
> double pt[3];
> points->GetPoint(id, pt);
> newPoints->InsertNextPoint(pt);
>
> After this change i am getting strange result. The result in "newPoints" is
> all the points that fall inside a region defined by bounds. i.e. a
> rectangular region which is formed by the bounds.
>
> This is really getting interesting and strange.. :-)
>
> Thanks
>
> Warm Regards
> Rakesh Patil
>
>
> On Wed, Sep 29, 2010 at 5:09 PM, Jothy <jothybasu at gmail.com> wrote:
>
>> Are you using vertex points instead of points inside the polygon. I mean,
>> in case of a sphere, are using surface points rather than points inside the
>> sphere.
>>
>> I think there is some difficulty in accurately calculating whether a point
>> is inside or outside a polygon, if you submit a point which lies on or very
>> close to the surface due to round-off errors in the ray-tracing used.
>>
>>
>> Jothy
>>
>>
>> On Wed, Sep 29, 2010 at 12:23 PM, rakesh patil <prakeshofficial at gmail.com
>> > wrote:
>>
>>> hi,
>>>
>>> Below is the sample code what i was trying.
>>>
>>> int num = polyPd->GetNumberOfPoints();
>>> // polyPd is a polydata containing points that forms a polygon
>>>
>>> vtkPoints* points = this->del->GetOutput()->GetPoints();
>>> // del is an instance of vtkDelaunay2d class. Out of this object is used
>>> to display
>>> // scattered points
>>>
>>> vtkPoints *newPoints = vtkPoints::New();
>>> // To store selected points
>>>
>>> double bnds[6], n[3];
>>>
>>> // Get the bounds in 'bnds'
>>> polyPd->GetPoints()->GetBounds(bnds);
>>>
>>> // To get normal direction in 'n'
>>> vtkPolygon::ComputeNormal(num,
>>>   static_cast<double
>>> *>(polyPd->GetPoints()->GetData()->GetVoidPointer(0)), n);
>>>
>>> for( int id = 0; id < points->GetNumberOfPoints(); id++ )
>>> {
>>>   if( vtkPolygon::PointInPolygon( points->GetPoint(id), num,
>>>       static_cast<double
>>> *>(polyPd->GetPoints()->GetData()->GetVoidPointer(0)), n) == 1 )
>>>        newPoints->InsertNextPoint(points->GetPoint(id));
>>> }
>>>
>>> // code to create a mapper and actor with
>>> // the help of newPoints
>>>
>>> I hope there is no difficulty in understanding the other part of code. I
>>> got this logic from the mailing list when i searched for PoinInPolygon here
>>>
>>> http://public.kitware.com/pipermail/vtkusers/2010-April/107974.html
>>>
>>> Thanks
>>>
>>> Warm Regards
>>> Rakesh Patil
>>>
>>>
>>> On Wed, Sep 29, 2010 at 3:49 PM, Jothy <jothybasu at gmail.com> wrote:
>>>
>>>> Could you please post your code?
>>>>
>>>> Jothy
>>>>
>>>>  On Wed, Sep 29, 2010 at 11:09 AM, rakesh patil <
>>>> prakeshofficial at gmail.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I have been trying to find whether a given point is within a polygon or
>>>>> not. I have been doing this using,
>>>>>
>>>>> vtkPolygon::PointInPolygon()
>>>>>
>>>>> function. But out of 10 runs, in 1 run, i get only few points inside,
>>>>> the polygon. Others just fails and shows 0 points selected.
>>>>>
>>>>> Can anyone come up with a small example, for this?
>>>>>
>>>>> Thanks
>>>>>
>>>>> Warm Regards
>>>>> Rakesh Patil
>>>>>
>>>>> _______________________________________________
>>>>> Powered by www.kitware.com
>>>>>
>>>>> Visit other Kitware open-source projects at
>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>
>>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>>
>>>>> Follow this link to subscribe/unsubscribe:
>>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> PhD Student
>>>> Dept. of Medical Physics
>>>> Clatterbridge Centre for Oncology
>>>> UK
>>>>
>>>>
>>>
>>
>>
>> --
>> PhD Student
>> Dept. of Medical Physics
>> Clatterbridge Centre for Oncology
>> UK
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100930/65db0c48/attachment.htm>


More information about the vtkusers mailing list