2011/11/21 José Luis García Pallero <jgpall...@gmail.com>:
> El día 20 de noviembre de 2011 23:28, Juan Pablo Carbajal
> <carba...@ifi.uzh.ch> escribió:
>> 2011/11/20 José Luis García Pallero <jgpall...@gmail.com>:
>>> 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!
>>> *****************************************
>>>
>>
>> I see your point. I can suggest the following courses of action:
>>
>> 1. You accept to be a maintainer of the geometry package (which indeed
>> is an extension of MatGeom since it handles piecewise polynomial
>> polygons http://octave.sourceforge.net/geometry/function/shapetransform.html)
>> and we merge the two packages. Geometry accepts a sub-folder
>> structure, therefore you will continue maintaining ONLY the octCLIP
>> folder. I can take care of the merging if you accept this proposal.
>>
>> 2. Geometry can add a wrapper that calls your function. This is clean
>> but has the drawback that the user needs to install more packages and
>> the dependency list grows.
>>
>> I strongly suggest 1. However I do not want you to feel that geometry
>> is assimilating your package (we are not the Borg!). Geometry will be
>> your package and your package will be everything else that geometry
>> has. We will just clean up a little the repository and strengthen our
>> packages.
>>
>> Looking forward to your answer.
>
> OK, I can accept the option 1. But will be maintained the function
> oc_polybool or will be substituted by clipPolygon from MatGeom? Take
> in account that oc_polybool is more general that clipPolygon and if
> you want to maintain the compatibility with clipPolygon from MatLab
> some features will be lost.
> I maintain a repository for OctCLIP in bitbucket:
> https://bitbucket.org/jgpallero/octclip/
>
> --
> *****************************************
> José Luis García Pallero
> jgpall...@gmail.com
> (o<
> / / \
> V_/_
> Use Debian GNU/Linux and enjoy!
> *****************************************
>

Hi José (I added David Legland, matGeom creator in the discussion)

@David: The geometry package in Octave is coalescing geometry
functions that were in other packages. José wrote a function to clip
polygons and he accepted to add it to the geometry package. This
function is more general than the current clipPolygon.

My suggestion is that we keep oc_polybool and add a case in
clipPolygon to call it in case clipPolygon is called with two
polygons. This is an excellent moment to change the name of your
function, which is rather unusual. Would you like to call it something
different? just a suggestion: clippolygonGH.m (Octave more-or-less
compliant), clipPolygonGH.m (matGeom naming standard)

I started the merging, you can see the svn version here (@José: the
folder /octclip is your package)
http://octave.svn.sf.net/viewvc/octave/trunk/octave-forge/main/geometry/inst/

Please check the CAPS files (DESCRIPTION, INDEX and NEWS) and let me
know if something needs to be changed.
http://octave.svn.sf.net/viewvc/octave/trunk/octave-forge/main/geometry/

Thank you


-- 
M. Sc. Juan Pablo Carbajal
-----
PhD Student
University of Zürich
http://ailab.ifi.uzh.ch/carbajal/

------------------------------------------------------------------------------
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