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