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