2011/11/20 Juan Pablo Carbajal <carba...@ifi.uzh.ch>:
> 2011/11/20 José Luis García Pallero <jgpall...@gmail.com>:
>> 2011/11/20 Carnë Draug <carandraug+...@gmail.com>:
>>> On 19 November 2011 00:40, Tobias Andersson <xyzto...@hotmail.com> wrote:
>>>> First of all, hi everyone! I'm new here and hope that this is the right way
>>>> to post bug reports. Otherwise, please inform me how to do it.
>>>> Now, I installed octclip to find intersections between polygons and found 
>>>> an
>>>> odd behaviour when sections of different polygons follow the same line.
>>>> Also, Strange results are returned when a section "touches" a point in the
>>>> other polygon.
>>>> The problem is that the result in the first example should be one polygon
>>>> and that the result in the second example should be a polygon without the
>>>> duplicate point [2.4 2.4].
>>>> I thank you for updating the package or advising me if I think wrong on how
>>>> the functionality should be.
>>>>
>>>>
>>>> Two example codes are shown below so that you can rerun the script
>>>> yourselves:
>>>> 1. Sections of different polygons follow the same line:
>>>> % This is a script to generate a polygon and plot it in a figure and find
>>>> intersection
>>>> polygons(1).p = [ 2.2 2.2;
>>>>     3.4 3.4;
>>>>     6.3 3.4;
>>>>     5.3 2.8;
>>>>     3.3 2.4];
>>>> polygons(2).p = [ 1.2 2.2;
>>>>     3.4 3.4;
>>>>     5.3 3.4;
>>>>     5.3 2.8;
>>>>   4.4 2.3;
>>>>     3.3 1.7]+5;
>>>> polygons(2).p = polygons(2).p + [1*ones(size(polygons(2).p,1),1)
>>>> 0*ones(size(polygons(2).p,1),1)];
>>>> plot(polygons(1).p(:,1),polygons(1).p(:,2),'*-');
>>>> hold on
>>>> plot(polygons(1).p([end 1],1),polygons(1).p([end 1],2),'*-');
>>>>
>>>> plot(polygons(2).p(:,1),polygons(2).p(:,2),'*-.k');
>>>> plot(polygons(2).p([end 1],1),polygons(2).p([end 1],2),'*:k');
>>>> hold off
>>>> [X,Y,nPol,nInt,nPert] = _oc_polybool(polygons(2).p,polygons(1).p,'AND');
>>>> fprintf('runPolygonShowNonIntersecting.m\n')
>>>> fprintf('Numbers of polygons found: %i\n',nPol)
>>>>
>>>>
>>>> 2. A section "touches" a point in the other polygon:
>>>> % This is a script to generate a polygon and plot it in a figure and find
>>>> intersection
>>>> polygons(1).p = [ 2.2 2.2;
>>>>     3.4 3.4;
>>>>     6.3 3.4;
>>>>     5.3 2.8;
>>>>     3.3 2.4];
>>>> polygons(2).p = [ 1.2 2.2;
>>>>     3.4 3.4;
>>>>     5.3 3.4;
>>>>     5.3 2.8;
>>>>   4.4 2.3;
>>>>     3.3 1.7]+0.2;
>>>> polygons(2).p = polygons(2).p + [1*ones(size(polygons(2).p,1),1)
>>>> 0*ones(size(polygons(2).p,1),1)];
>>>> plot(polygons(1).p(:,1),polygons(1).p(:,2),'*-');
>>>> hold on
>>>> plot(polygons(1).p([end 1],1),polygons(1).p([end 1],2),'*-');
>>>>
>>>> plot(polygons(2).p(:,1),polygons(2).p(:,2),'*-.k');
>>>> plot(polygons(2).p([end 1],1),polygons(2).p([end 1],2),'*:k');
>>>> hold off
>>>> [X,Y,nPol,nInt,nPert] = _oc_polybool(polygons(2).p,polygons(1).p,'AND');
>>>> fprintf('runPolygonShowNonIntersecting.m\n')
>>>> fprintf('Numbers of polygons found: %i\n',nPol)
>>>
>>> Hi Tobias
>>>
>>> do you think you can submit a patch? Anyway, I'm also sending this
>>> e-mail to the dev who wrote this function, he's probably the best
>>> person to fix anything about the package.
>>>
>>> Carnë
>>>
>>
>> Hello,
>>
>> Tobias, I don't understand when you say that in the first example the
>> result should be one polygon. You perform the 'AND' operation but the
>> two polygons in your example are disjoints, so they have no
>> intersection. The second example runs well for me. Please, see the
>> attached *.png files with the results of your examples in my computer
>> (in the second one I have added in red the resulting polygon).
>>
>> Take in account too that I implement the Greiner-Hormann algorithm
>> which is not robust when a point or an edge of one polygon coincides
>> with a point or an edge of the other. Please, see
>> http://davis.wpi.edu/~matt/courses/clipping/ for more details.
>>
>> About OctCLIP, you should use the oc_polybool function (is a *.m
>> script) instead of the _oc_polybool one (is the *.oct function)
>>
>> Cheers
>>
>> --
>> *****************************************
>> José Luis García Pallero
>> jgpall...@gmail.com
>> (o<
>> / / \
>> V_/_
>> Use Debian GNU/Linux and enjoy!
>> *****************************************
>>
>> ------------------------------------------------------------------------------
>> All the data continuously generated in your IT infrastructure
>> contains a definitive record of customers, application performance,
>> security threats, fraudulent activity, and more. Splunk takes this
>> data and makes sense of it. IT sense. And common sense.
>> http://p.sf.net/sfu/splunk-novd2d
>> _______________________________________________
>> Octave-dev mailing list
>> Octave-dev@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/octave-dev
>>
>>
>
> Hi all,
>
> The geomtry package also has functions to deal with polygons in 2D.
>
> Is there a chance that we merge the octclip and geometry package?
> At least it would be good to know what is already implemented in both
> packages and if possible benchmark them.

Hi Pablo,

The OctCLIP has only one function for performs general polygon
clipping using the Greiner-Hormann algorithm (see
http://davis.wpi.edu/~matt/courses/clipping/). I see that the geometry
package is the Octave implementation of MatGeom for MatLab that has
one function for polygon clipping when the clipper polygon is a
rectangular box and the clipped one is convex. The Greiner-Hormann
algorithm can work with general polygons so it could be used in the
clipping function in geometry. I see too that this function is not
implemented in the geometry package. But I would like to maintain
alive the OctCLIP package because for me is easier to maintain

-- 
*****************************************
José Luis García Pallero
jgpall...@gmail.com
(o<
/ / \
V_/_
Use Debian GNU/Linux and enjoy!
*****************************************

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Octave-dev mailing list
Octave-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to