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