diff --git a/Algorithm-QuadTree-0.1.tar.gz b/Algorithm-QuadTree-0.1.tar.gz deleted file mode 100644 index c1c216f..0000000 --- a/Algorithm-QuadTree-0.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5d827fe254917cc7ccb1a3f0f820f11caefeccaee0bb59cc711edd64bf49325 -size 6296 diff --git a/Algorithm-QuadTree-0.2.tar.gz b/Algorithm-QuadTree-0.2.tar.gz new file mode 100644 index 0000000..5d548fb --- /dev/null +++ b/Algorithm-QuadTree-0.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38ace4c56616a02ba81c3633c759b084a7e7ecc2432f0e1d6d455a6f123ec757 +size 8972 diff --git a/cpanspec.yml b/cpanspec.yml new file mode 100644 index 0000000..ab24ed9 --- /dev/null +++ b/cpanspec.yml @@ -0,0 +1,35 @@ +--- +#description_paragraphs: 3 +#description: |- +# override description from CPAN +#summary: override summary from CPAN +#no_testing: broken upstream +#sources: +# - source1 +# - source2 +#patches: +# foo.patch: -p1 +# bar.patch: +# baz.patch: PATCH-FIX-OPENSUSE +#preamble: |- +# BuildRequires: gcc-c++ +#post_prep: |- +# hunspell=`pkg-config --libs hunspell | sed -e 's,-l,,; s, *,,g'` +# sed -i -e "s,hunspell-X,$hunspell," t/00-prereq.t Makefile.PL +#post_build: |- +# rm unused.files +#post_install: |- +# sed on %{name}.files +#license: SUSE-NonFree +#skip_noarch: 1 +#custom_build: |- +#./Build build flags=%{?_smp_mflags} --myflag +#custom_test: |- +#startserver && make test +#ignore_requires: Bizarre::Module +#skip_doc: regexp_to_skip_for_doc.* +#add_doc: files to add to docs +#misc: |- +#anything else to be added to spec file +#follows directly after %files section, so it can contain new blocks or also +#changes to %files section diff --git a/perl-Algorithm-QuadTree.changes b/perl-Algorithm-QuadTree.changes index 01a7262..824c8dd 100644 --- a/perl-Algorithm-QuadTree.changes +++ b/perl-Algorithm-QuadTree.changes @@ -1,3 +1,25 @@ +------------------------------------------------------------------- +Fri Apr 22 03:05:57 UTC 2022 - Tina Müller + +- updated to 0.2 + see /usr/share/doc/packages/perl-Algorithm-QuadTree/Changes + + 0.2 Thu Apr 21 21:00:00 2022 + [New features] + - New method: ->clear + - Method ->add now treats shape as circular when passed four arguments + - Method ->getEnclosedObjects now treats shape as circular when passed three arguments + - Object references are now correctly handled and can be used instead of IDs + + [Bug fixes] + - fix ->delete method - RT#55747 + + [Other changes] + - Performance optimization + - Added test suite + - Added github repository and bugtracker + - Maintenance-related changes + ------------------------------------------------------------------- Thu May 05 00:00:00 UTC 2011 - opensuse@dstoecker.de diff --git a/perl-Algorithm-QuadTree.spec b/perl-Algorithm-QuadTree.spec index 3ed89cb..dc1e31f 100644 --- a/perl-Algorithm-QuadTree.spec +++ b/perl-Algorithm-QuadTree.spec @@ -1,7 +1,7 @@ # # spec file for package perl-Algorithm-QuadTree # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,65 +12,106 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # - +%define cpan_name Algorithm-QuadTree Name: perl-Algorithm-QuadTree -Version: 0.1 -Release: 1 -AutoReqProv: on -Group: Development/Libraries/Perl -License: Perl -Url: http://search.cpan.org/dist/Algorithm-QuadTree/ -Summary: A QuadTree Algorithm class in pure Perl -Source: Algorithm-QuadTree-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-build -%{perl_requires} +Version: 0.2 +Release: 0 +License: Artistic-1.0 OR GPL-1.0-or-later +Summary: QuadTree Algorithm class in pure Perl +URL: https://metacpan.org/release/%{cpan_name} +Source0: https://cpan.metacpan.org/authors/id/B/BR/BRTASTIC/%{cpan_name}-%{version}.tar.gz +Source1: cpanspec.yml BuildArch: noarch BuildRequires: perl BuildRequires: perl-macros +%{perl_requires} %description Algorithm::QuadTree implements a quadtree algorithm (QTA) in pure Perl. -Essentially, a QTA is used to access a particular area of a map very quickly. -This is especially useful in finding objects enclosed in a given region, or in -detecting intersection among objects. In fact, I wrote this module to rapidly -search through objects in a Tk::Canvas widget, but have since used it in other -non-Tk programs successfully. It is a classic memory/speed trade-off. +Essentially, a _QTA_ is used to access a particular area of a map very +quickly. This is especially useful in finding objects enclosed in a given +region, or in detecting intersection among objects. In fact, I wrote this +module to rapidly search through objects in a Tk::Canvas widget, but have +since used it in other non-Tk programs successfully. It is a classic +memory/speed trade-off. -Lots of information about QTAs can be found on the web. But, very briefly, a -quadtree is a hierarchical data model that recursively decomposes a map into -smaller regions. Each node in the tree has 4 children nodes, each of which -represents one quarter of the area that the parent represents. So, the root node -represents the complete map. This map is then split into 4 equal quarters, each -of which is represented by one child node. Each of these children is now treated -as a parent, and its area is recursively split up into 4 equal areas, and so on -up to a desired depth. +Lots of information about QTAs can be found on the web. But, very briefly, +a quadtree is a hierarchical data model that recursively decomposes a map +into smaller regions. Each node in the tree has 4 children nodes, each of +which represents one quarter of the area that the parent represents. So, +the root node represents the complete map. This map is then split into 4 +equal quarters, each of which is represented by one child node. Each of +these children is now treated as a parent, and its area is recursively +split up into 4 equal areas, and so on up to a desired depth. + +Here is a somewhat crude diagram: + + ------------------------------ + |AAA|AAB| | | + |___AA__| AB | | + |AAC|AAD| | | + |___|___A_______| B | + | | | | + | | | | + | AC | AD | | + | | | | + -------------ROOT------------- + | | | + | | | + | | | + | C | D | + | | | + | | | + | | | + ------------------------------ + +Which corresponds to the following quadtree: + + __ROOT_ + / / \ \ + / / \ \ + _____A_ B C D + / / \ \ + / / \ \ + _____AA AB AC AD + / / \ \ + / / \ \ + AAA AAB AAC AAD + +In the above diagrams I show only the nodes through the first branch of +each level. The same structure exists under each node. This quadtree has a +depth of 4. + +Each object in the map is assigned to the nodes that it intersects. For +example, if we have an object that overlaps regions _AAA_ and _AAC_, it +will be assigned to the nodes _ROOT_, _A_, _AA_, _AAA_ and _AAC_. Now, +suppose we want to find all the objects that intersect a given area. +Instead of checking all objects, we check to see which children of the ROOT +node intersect the area. For each of those nodes, we recursively check +_their_ children nodes, and so on until we reach the leaves of the tree. +Finally, we find all the objects that are assigned to those leaf nodes and +check them for overlap with the initial area. %prep -%setup -q -n QuadTree +%autosetup -n %{cpan_name}-%{version} %build -perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall" -make +perl Makefile.PL INSTALLDIRS=vendor +%make_build %check make test %install -make DESTDIR=$RPM_BUILD_ROOT install_vendor +%perl_make_install %perl_process_packlist +%perl_gen_filelist -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root) -%doc README Changes -%doc %{_mandir}/man3/* -%{perl_vendorlib}/Algorithm -#%{perl_vendorarch}/auto/Algorithm +%files -f %{name}.files +%doc Changes README.md %changelog