Skip to content
This repository has been archived by the owner on Mar 29, 2021. It is now read-only.
/ quadtree Public archive

A flexible Point Quadtree visualizer

License

Notifications You must be signed in to change notification settings

agcom/quadtree

Repository files navigation

⚠️ No longer maintained, BUT, feel free to fork it! ⚠️

Point Quadtree visualizer

An application which offers a Point Quadtree implementation within a flexible visualizer.

You can learn more about the Quadtrees at Wikipedia.

This application was made for an assessment during a data structures and algorithms college course.

Have a look,

Application screenshot

Ingredients

Built on top of Java virtual machine with help of the following awesome tools,

  • JavaFX

    The desktop application platform.

  • Kotlin

    To eliminate the boilerplate codes.

  • RxJava

    To handle user input events.

  • Gradle

    The build automation tool, handles compilation and dependencies.

  • ❤️

Getting started

To get a local copy up and running follow these simple steps,

  1. Make sure Java 11 or higher is installed.

    Word Java is used as a substitution for JVM; Java virtual machine.

  2. Clone the repository.

    You can do this either by using the git command,

    git clone https://github.com/agcom/quadtree.git

    or downloading and extracting the project's zip artifact.

  3. Run the application.

    You need to invoke the Gradle run task to get the application running.

    You can use the pre-made Gradle scripts even if you don't have the required Gradle bundle installed.

    • On Linux,

      ./gradlew run
    • On Windows,

      ./gradlew.bat run

      For more information on running batch files on Windows visit this tutorial.

Usage

Let's review the application's interesting features,

  • Cursor interactions

    Click and drag on the quadtree, eventually finding yourself drawing a home!

  • Change the quadtree specifications,

    You can change the tree dimensions, width and height.

    Also, adjust the capacity; The amount of points each tree will hold before dividing.

  • Spray random points

    Your tree feeling lonely?

    Either drag your cursor on top of the tree, or let us add some random points.

  • Change query area

    The quadtree implementation uses abstractions for areas. Currently, two shapes are implemented, circle and rectangle.

  • Erase!

    This may seem strange, but trust me, it's a cool feature!

    Check the eraser box and click/drag the cursor on top of some points. This is where the magic happens! Division undo!

  • Adjust the input processing delays

    Being eager isn't always the best option.

    Delays are necessary to guarantee a lag free experience!

    If you're feeling lags, try increasing the delays, especially the draw delay.

  • Some cool statistics about your query efficiency!

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire and create.

Any contributions you make are greatly appreciated.

Bug? Feature?

Create an issue, we'll investigate it ASAP.

If you've gone far, share your code with us. Pull requests are appreciated.

Unfamiliar with pull requests? Checkout this tutorial.

Contact us

Got questions? Two ways, just for you.

  • Create an issue with the question-lable label.
  • Directly contact the project owner.