All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.IQuadtree.kt Maven / Gradle / Ivy

The newest version!
package org.openrndr.extra.quadtree

import org.openrndr.math.Vector2

interface IQuadtree {
    /**
     * Clears the whole tree
     */
    fun clear()

    /**
     * Finds the nearest and neighbouring objects within a radius
     * (needs to have a different name so there is no ambiguity when the generic object type is Vector2)
     *
     * @param element
     * @param radius
     * @return
     */
    fun nearestToPoint(point: Vector2, radius: Double): QuadtreeQuery?

    /**
     * Finds the nearest and neighbouring points within a radius
     *
     * @param element
     * @param radius
     * @return
     */
    fun nearest(element: T, radius: Double): QuadtreeQuery?

    /**
     * Inserts the element in the appropriate node
     *
     * @param element
     * @return
     */
    fun insert(element: T): Boolean

    /**
     * Remove the given element
     *
     * @param element
     * @return true if the element was present
     */
    fun remove(element: T): Boolean

    /**
     * Finds which node the element is within (but not necessarily belonging to)
     *
     * @param element
     * @return
     */
    fun findNode(element: T): Quadtree?
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy