The 3d-spaces Reference Manual

This is the 3d-spaces Reference Manual, version 1.0.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 14:29:06 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 3d-spaces

A library implementing spatial query structures

Maintainer

Yukari Hafner <>

Author

Yukari Hafner <>

Home Page

https://shirakumo.github.io/3d-spaces/

Source Control

(GIT https://github.com/shirakumo/3d-spaces.git)

Bug Tracker

https://github.com/shirakumo/3d-spaces/issues

License

zlib

Version

1.0.0

Dependencies
  • documentation-utils (system).
  • 3d-math (system).
  • trivial-extensible-sequences (system).
  • for (system).
Source

3d-spaces.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


3.1 Lisp


3.1.1 3d-spaces/3d-spaces.asd

Source

3d-spaces.asd.

Parent Component

3d-spaces (system).

ASDF Systems

3d-spaces.


3.1.3 3d-spaces/toolkit.lisp

Dependency

package.lisp (file).

Source

3d-spaces.asd.

Parent Component

3d-spaces (system).

Internals

3.1.4 3d-spaces/protocol.lisp

Dependency

toolkit.lisp (file).

Source

3d-spaces.asd.

Parent Component

3d-spaces (system).

Public Interface
Internals

3.1.5 3d-spaces/bvh2.lisp

Dependency

protocol.lisp (file).

Source

3d-spaces.asd.

Parent Component

3d-spaces (system).

Public Interface
Internals

3.1.6 3d-spaces/quadtree.lisp

Dependency

bvh2.lisp (file).

Source

3d-spaces.asd.

Parent Component

3d-spaces (system).

Public Interface
Internals

3.1.7 3d-spaces/grid3.lisp

Dependency

quadtree.lisp (file).

Source

3d-spaces.asd.

Parent Component

3d-spaces (system).

Public Interface
Internals

3.1.8 3d-spaces/kd-tree.lisp

Dependency

grid3.lisp (file).

Source

3d-spaces.asd.

Parent Component

3d-spaces (system).

Public Interface
Internals

3.1.9 3d-spaces/documentation.lisp

Dependency

kd-tree.lisp (file).

Source

3d-spaces.asd.

Parent Component

3d-spaces (system).


4 Packages

Packages are listed by definition order.


4.1 org.shirakumo.fraf.trial.space

Source

package.lisp.

Use List
  • common-lisp.
  • org.shirakumo.fraf.math.
Used By List
Public Interface
Internals

4.2 org.shirakumo.fraf.trial.space.bvh2

Source

package.lisp.

Use List
Public Interface
Internals

4.3 org.shirakumo.fraf.trial.space.kd-tree

Source

package.lisp.

Use List
Public Interface
Internals

4.4 org.shirakumo.fraf.trial.space.grid3

Source

package.lisp.

Use List
Public Interface
Internals

4.5 org.shirakumo.fraf.trial.space.quadtree

Source

package.lisp.

Use List
Public Interface
Internals

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


5.1 Public Interface


5.1.1 Macros

Macro: do-all ((element container &optional result) &body body)

Convenience macro to iterate over all objects in the container.

Returns the RETURN value, and executes BODY in a BLOCK NIL context.

See CALL-WITH-ALL

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Macro: do-candidates ((element container region &optional result) &body body)

Convenience macro to iterate over objects that approximate overlap the region.

Returns the RETURN value, and executes BODY in a BLOCK NIL context.

See CALL-WITH-CANDIDATES

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Macro: do-contained ((element container region &optional result) &body body)

Convenience macro to iterate over objects contained in the region.

Returns the RETURN value, and executes BODY in a BLOCK NIL context.

See CALL-WITH-CONTAINED

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Macro: do-intersecting ((element container ray-origin ray-direction &optional result) &body body)

Convenience macro to iterate over objects intersecting the ray.

Returns the RETURN value, and executes BODY in a BLOCK NIL context.

See CALL-WITH-INTERSECTING

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Macro: do-overlapping ((element container region &optional result) &body body)

Convenience macro to iterate over objects overlapping the region.

Returns the RETURN value, and executes BODY in a BLOCK NIL context.

See CALL-WITH-OVERLAPPING

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.


5.1.2 Ordinary functions

Function: bvh-insert (bvh object)

Fast track for ENTER.

See BVH (type)
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:ENTER

Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: bvh-lines (bvh)

Debug function.

Returns a list of lists where every two entries constitute a line. Each entry is made up of a VEC3 for its position and a VEC4 for its color.

The lines draw up the BVH nodes with the colour corresponding to the node depth.

See BVH (type)

Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: bvh-remove (bvh object)

Fast track for LEAVE.

See BVH (type)
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:LEAVE

Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: bvh-update (bvh object)

Fast track for UPDATE.

See BVH (type)
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:UPDATE

Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: container-p (object)

Returns true if the given object is a container instance.

See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: find-region (objects)

Returns a region that encompasses all objects passed as tightly as possible.

Every object must implement a method for at least LOCATION and BSIZE.

See REGION (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: grid-insert (object grid)

Fast track for ENTER.

See GRID (type)
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:ENTER

Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Function: grid-move (grid location)

Moves the grid’s center to the specified location.

Note that this will not change the grid’s half-size or cell size.

See GRID (type)

Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Function: grid-remove (object grid)

Fast track for LEAVE.

See GRID (type)
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:LEAVE

Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Function: grid-resize (grid &key bsize cell-size)

Resizes the grid to the specified half-size and cell size.

See GRID (type)

Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Function: grid-update (object grid)

Fast track for UPDATE.

See GRID (type)
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:UPDATE

Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Function: kd-tree-call-with-nearest (function location tree)

Iteratively find the nearest objects to a location

Calls FUNCTION with objects that iteratively lie closer to the LOCATION and that object’s current squared distance to the target location. The FUNCTION must return a new radius to use to narrow the search.

See KD-TREE-NEAREST
See KD-TREE-K-NEAREST
See KD-TREE (type)

Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: kd-tree-insert (object tree)

Fast track for ENTER.

See KD-TREE (type)
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:ENTER

Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: kd-tree-k-nearest (k location tree &key test)

Find the K nearest objects to a location

You may also specify TEST, which should be a function of one argument that returns true if the candidate object passed in should be considered a neighbour or not.

Returns two values:
- A simple-vector of size K containing the nearest objects in order of nearest to farthest.
- A counter of how many entries in the vector are set.

See KD-TREE-NEAREST
See KD-TREE-CALL-WITH-NEAREST
See KD-TREE (type)

Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: kd-tree-nearest (location tree &key reject max-radius)

Find the nearest object to a location

You may also specify REJECT to ensure that the object you’re searching a nearest neighbour to isn’t itself selected.

If MAX-RADIUS is specified, the closest candidate is only returned if it is within MAX-RADIUS to the location.

See KD-TREE-K-NEAREST
See KD-TREE-CALL-WITH-NEAREST
See KD-TREE (type)

Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: kd-tree-remove (object tree)

Fast track for LEAVE.

See KD-TREE (type)
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:LEAVE

Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: make-bvh ()

Creates a fresh BVH2.

See BVH (type)

Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: make-grid (cell-size &key location bsize)

Creates a new grid.

If no LOCATION is passed, it is centered at the origin. If no BSIZE is passed, it is sized to a half-size of 100 in every direction.

See GRID (type)

Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Function: make-kd-tree (&key dimensions split-size max-depth)

Creates a new grid.

If no LOCATION is passed, it is centered at the origin. If no BSIZE is passed, it is sized to a half-size of 100 in every direction.

See KD-TREE (type)

Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: make-quadtree ()

Creates an empty QUADTREE for [0,0] to [100,100] coordinate space with 1 as the minimum length of an edge and 1 as the threshold number of items before the node is split.

See QUADTREE (type)
See MAKE-QUADTREE-AT

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: make-quadtree-at (location size &key min-size threshold)

Creates an empty QUADTREE for the defined section of space with wanted minimum node edge size (defaults to 1) and the item count threshold before a node splits (defaults to 1).

See QUADTREE (type)
See MAKE-QUADTREE

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-find-all (tree &optional vector)

Finds every object in the tree and pushes them into the passed vector which is then returned.

See QUADTREE (type)

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-find-contained (tree region &optional vector)

Finds every object in the tree that is completely contained by
the passed region and pushes them into the vector which is then returned.

The region is defined by a VEC4 where VX and VY represent the top-left point of the region, and VZ and VW the bottom-right point of the region.

See QUADTREE (type)
See QUADTREE-FIND-CONTAINED-IN
See QUADTREE-FIND-OVERLAPS

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-find-contained-in (tree location size &optional vector)

Finds every object in the tree that is completely contained by
the passed region and pushes them into the vector which is then returned.

The region is defined by a VEC2 where VX and VY represent the top-left point of the region, and a second VEC2 where VX and VY are the width and height respectively of the region.

See QUADTREE (type)
See QUADTREE-FIND-CONTAINED
See QUADTREE-FIND-OVERLAPS-IN

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-find-for (tree object &optional vector)

Finds every object in the tree that overlaps with the passed object that holds location and size information to it.

The object must implement a method for at least LOCATION and BSIZE.

See QUADTREE (type)
See QUADTREE-FIND-OVERLAPS-IN

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-find-overlaps (tree region &optional vector)

Finds every object in the tree that overlaps with the passed region and pushes them into the vector which is then returned.

The region is defined by a VEC4 where VX and VY represent the top-left point of the region, and VZ and VW the bottom-right point of the region.

See QUADTREE (type)
See QUADTREE-FIND-OVERLAPS-IN
See QUADTREE-FIND-CONTAINED

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-find-overlaps-in (tree location size &optional vector)

Finds every object in the tree that overlaps with the passed region and pushes them into the vector which is then returned.

The region is defined by a VEC2 where VX and VY represent the top-left point of the region, and a second VEC2 where VX and VY are the width and height respectively of the region.

See QUADTREE (type)
See QUADTREE-FIND-OVERLAPS
See QUADTREE-FIND-CONTAINED-IN

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-insert (tree object)

Fast track for ENTER. If the passed object already exists in the tree its holding node is updated.

See QUADTREE (type)
See QUADTREE-UPDATE
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:ENTER

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-lines (tree)

Debug function.

Returns a list of lists where every two entries constitute a line. Each entry is made up of a VEC3 for its position and a VEC4 for its color.

The lines draw up the quadtree nodes with the colour corresponding to the node depth.

See QUADTREE (type)

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-remove (tree object)

Fast track for LEAVE. The holder node’s state is updated if necessary.

See QUADTREE (type)
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:LEAVE

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: quadtree-update (tree object)

Fast track for UPDATE. Checks if the passed object’s holding node in the tree should be changed and updates it accordingly.

See QUADTREE (type)
See QUADTREE-INSERT
See QUADTREE-REMOVE
See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:UPDATE

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: region (x y z w h d)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: region-contains-p (object region)

Returns true if the region entirely contains the object’s axis aligned bounding box.

The object must implement a method for at least LOCATION and BSIZE.

See REGION (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: region-overlaps-p (object region)

Returns true if the region overlaps with the object’s axis aligned bounding box.

The object must implement a method for at least LOCATION and BSIZE.

See REGION (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Reader: region-size (instance)

Accesses the region’s size.

NOTE: unlike BSIZE, this is the *full size* and not a half-size.

See 3D-VECTORS:VEC3 (type)
See REGION (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Target Slot

size.

Writer: (setf region-size) (instance)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Target Slot

size.

Function: sphere (x y z r)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Reader: sphere-radius (instance)
Writer: (setf sphere-radius) (instance)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Target Slot

radius.


5.1.3 Generic functions

Generic Function: bsize (object)

Returns a vec2 or vec3 representing the half-size of the object’s axis-aligned bounding box.

Users should extend this function with methods to provide the correct
value for their own object representations.

See LOCATION
See RADIUS

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: bsize ((grid grid))
Source

grid3.lisp.

Method: bsize ((region region))
Method: bsize ((sphere sphere))
Generic Function: call-with-all (function container)

Calls FUNCTION with every object contained in CONTAINER.

See DO-ALL
See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: call-with-all (function (tree kd-tree))
Source

kd-tree.lisp.

Method: call-with-all (function (grid grid))
Source

grid3.lisp.

Method: call-with-all (function (tree quadtree))
Source

quadtree.lisp.

Method: call-with-all (function (bvh bvh))
Source

bvh2.lisp.

Method: call-with-all (function (container container))
Generic Function: call-with-candidates (function container region)

Calls FUNCTION with every object which approximately overlaps REGION.

The region is coerced to a region via ENSURE-REGION.

FUNCTION *may* be called with any object contained in
CONTAINER. However, depending on the type of CONTAINER, the set of objects with which FUNCTION is actually called is usually a moderate superset of the objects that in CONTAINER that overlap REGION.

See DO-CANDIDATES
See ENSURE-REGION
See REGION (type)
See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: call-with-candidates (function (grid grid) (region region))
Source

grid3.lisp.

Method: call-with-candidates (function (container container) thing)
Method: call-with-candidates (function (container container) (region region))
Generic Function: call-with-contained (function container region)

Calls FUNCTION with every object contained in REGION.

The region is coerced to a region via ENSURE-REGION.
The function *will* be called with objects that lie entirely inside the specified region. The function *may* be called with objects that overlap but do not lie entirely inside the region. The function *will not* be called with objects that lie entirely outside the region.

See DO-CONTAINED
See ENSURE-REGION
See REGION (type)
See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: call-with-contained (function (grid grid) (region region))
Source

grid3.lisp.

Method: call-with-contained (function (tree quadtree) (region region))
Source

quadtree.lisp.

Method: call-with-contained (function (bvh bvh) (region region))
Source

bvh2.lisp.

Method: call-with-contained (function (container container) thing)
Method: call-with-contained (function (container container) (region region))
Generic Function: call-with-intersecting (function container ray-origin ray-direction)

Calls FUNCTION with every object that *may* intersect the ray.

It is up to you to implement the fine grained intersection test between the ray and the object, this will only approximate the lookup based on the container’s internal acceleration structures.

Depending on the container, RAY-ORIGIN and RAY-DIRECTION should be either VEC3s or VEC2s.

See DO-INTERSECTING
See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: call-with-intersecting (function (tree kd-tree) ray-origin ray-direction)
Source

kd-tree.lisp.

Method: call-with-intersecting (function (grid grid) ray-origin ray-direction)
Source

grid3.lisp.

Method: call-with-intersecting (function (container container) ray-origin ray-direction)
Generic Function: call-with-overlapping (function container region)

Calls FUNCTION with every object which overlaps REGION.

The region is coerced to a region via ENSURE-REGION.
The function *will* be called with objects that overlap the specified region (including objects that lie entirely inside the region). The function *will not* be called with objects that lie entirely outside the region.

See DO-OVERLAPPING
See ENSURE-REGION
See REGION (type)
See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: call-with-overlapping (function (tree kd-tree) (sphere sphere))
Source

kd-tree.lisp.

Method: call-with-overlapping (function (tree kd-tree) (region region))
Source

kd-tree.lisp.

Method: call-with-overlapping (function (grid grid) (region region))
Source

grid3.lisp.

Method: call-with-overlapping (function (tree quadtree) (region region))
Source

quadtree.lisp.

Method: call-with-overlapping (function (bvh bvh) (region region))
Source

bvh2.lisp.

Method: call-with-overlapping (function (container container) thing)
Generic Function: check (container)

Checks the container for validity.

Signals an error if there are problems with the container’s internal invariants.

See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: check ((tree quadtree))
Source

quadtree.lisp.

Method: check ((bvh bvh))
Source

bvh2.lisp.

Method: check ((container container))
Generic Function: clear (container)

Clears the container and removes all objects from it.

See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: clear ((tree kd-tree))
Source

kd-tree.lisp.

Method: clear ((grid grid))
Source

grid3.lisp.

Method: clear ((tree quadtree))
Source

quadtree.lisp.

Method: clear ((bvh bvh))
Source

bvh2.lisp.

Generic Function: deserialize (container file id->object)

Deserialize CONTAINER from FILE.

ID->OBJECT is called for every object that was added to the container that was used to serialize to the given file. The function should accept the strings that were previously returned by OBJECT->ID and return the corresponding object.

It is expected that the size and location of the returned objects is the same as it was when SERIALIZE was called. Or in other words, it is still up to you to ensure object properties are persisted separately or that the container is updated appropriately after deserialization.

Consequences are undefined if the function returns NIL, or the same (EQ) object for two different (EQUAL) IDs, or returning different objects for the same (EQUAL) IDS.

See SERIALIZE
See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: deserialize ((container container) (file pathname) id->object)
Method: deserialize ((container container) file (id->object symbol))
Generic Function: ensure-region (object &optional region)

Coerces the object to a REGION instance.

If the optional region is passed, the data in that region is updated instead of creating a new region instance.

See REGION (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: ensure-region ((object vec3) &optional region)
Method: ensure-region ((object vec2) &optional region)
Method: ensure-region (object &optional region)
Method: ensure-region ((object sphere) &optional region)
Method: ensure-region ((object region) &optional region)
Generic Function: enter (object container)

Adds objects to the container.

You may pass an object or a sequence of objects.
Passing a sequence may be more efficient that passing the objects individually.

Entering the same object twice is safe.

Every object must implement a method for at least LOCATION and BSIZE.

See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: enter (object (tree kd-tree))
Source

kd-tree.lisp.

Method: enter (object (grid grid))
Source

grid3.lisp.

Method: enter (object (tree quadtree))
Source

quadtree.lisp.

Method: enter (object (bvh bvh))
Source

bvh2.lisp.

Method: enter ((object sequence) (container container))
Generic Function: leave (object container)

Removes an object from the container.

You may pass an object or a sequence of objects.
Passing a sequence may be more efficient that passing the objects individually.

Removing the same object twice is safe.

See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: leave (object (tree kd-tree))
Source

kd-tree.lisp.

Method: leave (object (grid grid))
Source

grid3.lisp.

Method: leave (object (tree quadtree))
Source

quadtree.lisp.

Method: leave (object (bvh bvh))
Source

bvh2.lisp.

Method: leave ((object sequence) (container container))
Generic Function: location (object)

Returns a vec2 or vec3 representing the center of the object.

Users should extend this function with methods to provide the correct value for their own object representations.

See BSIZE
See RADIUS

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: location ((grid grid))
Source

grid3.lisp.

Method: location ((region region))
Method: location ((sphere sphere))
Generic Function: object-count (container)

Computes the number of objects in the container.

Note that this is usually not a constant-time operation.

See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: object-count ((container container))
Generic Function: radius (object)

Returns a single-float representing the radius of the object’s bounding sphere.

Users should extend this function with methods to provide the correct
value for their own object representations.

If no method is provided it is computed automatically from the BSIZE.

See LOCATION
See BSIZE

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: radius (object)
Method: radius ((sphere sphere))
Generic Function: reoptimize (container &key location bsize cell-size rounds)

Reoptimizes the container to fit its objects better.

Each container type may accept specific arguments to control the optimization.

See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: reoptimize ((tree kd-tree) &key)
Source

kd-tree.lisp.

Method: reoptimize ((grid grid) &key location bsize cell-size)
Source

grid3.lisp.

Method: reoptimize ((tree quadtree) &key)
Source

quadtree.lisp.

Method: reoptimize ((bvh bvh) &key rounds)
Source

bvh2.lisp.

Method: reoptimize ((container container) &key)
Generic Function: serialize (container file object->id)

Serialise CONTAINER to FILE.

OBJECT->ID is called for every object that was added to the container during the serialisation process. Value returned from the function must be a string.

Consequences are undefined if the function returns the same (EQUAL) ID string for two different (EQ) objects, or returns different (EQUAL) ID strings for the same (EQ) object.

See DESERIALIZE
See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: serialize ((container container) (file pathname) object->id)
Method: serialize ((container container) (file string) object->id)
Method: serialize ((container container) file (object->id symbol))
Generic Function: update (object container)

Updates the objects in the container.

You may pass an object or a sequence of objects.
Passing a sequence may be more efficient that passing the objects individually.

You should call this function whenever the position or bounding size of the object changes. If you do not notify the container of changes like this, range queries may not give correct results.

Calling UPDATE on an object that is not currently in the container has undefined consequences.

See CONTAINER (type)

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Methods
Method: update (object (grid grid))
Source

grid3.lisp.

Method: update (object (tree quadtree))
Source

quadtree.lisp.

Method: update (object (bvh bvh))
Source

bvh2.lisp.

Method: update (object (container container))
Method: update ((object sequence) (container container))

5.1.4 Standalone methods

Method: describe-object ((bvh bvh) stream)
Source

bvh2.lisp.

Method: describe-object ((tree kd-tree) stream)
Source

kd-tree.lisp.

Method: describe-object ((tree quadtree) stream)
Source

quadtree.lisp.

Method: make-iterator ((bvh bvh) &key in)
Package

for-iterator.

Source

bvh2.lisp.

Method: make-iterator ((tree quadtree) &key region contain)
Package

for-iterator.

Source

quadtree.lisp.

Method: make-load-form ((sphere sphere) &optional environment)
Source

protocol.lisp.

Method: make-load-form ((region region) &optional environment)
Source

protocol.lisp.

Method: print-object ((sphere sphere) stream)
Source

protocol.lisp.

Method: print-object ((object region) stream)
Source

protocol.lisp.

Method: print-object ((node bvh-node) stream)
Source

bvh2.lisp.

Method: print-object ((tree kd-tree) stream)
Source

kd-tree.lisp.

Method: print-object ((node node) stream)
Source

kd-tree.lisp.

Method: print-object ((grid grid) stream)
Source

grid3.lisp.

Method: print-object ((node quadtree-node) stream)
Source

quadtree.lisp.

Method: step-functions ((bvh bvh))
Package

for-iterator.

Source

bvh2.lisp.

Method: step-functions ((iterator bvh-iterator))
Package

for-iterator.

Source

bvh2.lisp.

Method: step-functions ((iterator quadtree-iterator))
Package

for-iterator.

Source

quadtree.lisp.


5.1.5 Structures

Structure: bvh

A binary Bounding Volume Hierarchy in 2D.

Each node in the tree is represented by an axis aligned bounding box and may either contain a single object or two child nodes.

The tree does not automatically rebalance when objects move and may not be optimal after all objects are inserted. Calling REOPTIMIZE will attempt to shuffle the tree around for better search traversal time. It is recommended to call REOPTIMIZE with :ROUNDS 10 or similar, to optimise the tree after first building it.

There is no limit to the area that the tree can span and no canonical center to it. The tree will automatically expand and contract as needed to fit all objects.

See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:CONTAINER
See MAKE-BVH
See BVH-INSERT
See BVH-REMOVE
See BVH-UPDATE
See BVH-LINES

Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Direct superclasses

container.

Direct methods
Direct slots
Slot: root
Type

org.shirakumo.fraf.trial.space.bvh2::bvh-node

Initform

(org.shirakumo.fraf.trial.space.bvh2::%make-bvh-node (make-array 4 :element-type (quote single-float) :initial-element 0.0) 0 nil nil nil nil)

Readers

bvh-root.

Writers

(setf bvh-root).

Slot: table
Type

hash-table

Initform

(make-hash-table :test (quote eq))

Readers

bvh-table.

Writers

(setf bvh-table).

Structure: container

Supertype for all containers.

All container types must implement the following functions in addition to implementing the iteration protocol of FOR (meaning you can use FOR:OVER to iterate over a container as well).

See CONTAINER-P
See CHECK
See CLEAR
See REOPTIMIZE
See OBJECT-COUNT
See ENTER
See LEAVE
See UPDATE
See CALL-WITH-ALL
See CALL-WITH-CONTAINED
See CALL-WITH-OVERLAPPING

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Direct superclasses

structure-object.

Direct subclasses
Direct methods
Structure: grid

A uniform bounded grid in 3D.

This is one of the simplest possible spatial structures, with constant-time insertion, and in the general case constant-time removal and update.

However, the structure does not automatically tune itself and ensuring good performance requires user input. Specifically, the search time performance is very sensitive to the cell size. Too coarse and too many objects need to be searched. Too fine and a lot of space is wasted and objects may be missed for fine searches.

If an object is bigger than the cell size, it may be missed for certain searches, as the search only guarantees finding the objects in the immediate neighbourhood of a cell.

The implementation here uses a dense array, meaning it requires
at least W*H*D+N storage.

You can update all properties of the grid, with REOPTIMIZE or GRID-RESIZE and GRID-MOVE. Doing so is equivalent to creating a new grid and inserting all previous entities into it. If REOPTIMIZE is called without any arguments, the grid will recenter and refit itself to the computed ideal bounds for all contained objects and the cell size will adjust itself to be as big as the largest object (if any).

Thus it can be a valid strategy to just create a grid, insert all your objects, and then call REOPTIMIZE to determine the best parameters.

Objects that are outside the grid’s limits will simply be clamped to the nearest cell within the grid. Beware of degenerating performance if your objects do not fit within the grid’s size.

See QUADTREE (type)

Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Direct superclasses

container.

Direct methods
Direct slots
Slot: location
Package

org.shirakumo.fraf.trial.space.

Type

org.shirakumo.fraf.math.vectors:vec3

Initform

(org.shirakumo.fraf.math.vectors:vec 0 0 0)

Readers

grid-location.

Writers

(setf grid-location).

Slot: w
Type

(unsigned-byte 32)

Initform

0

Readers

grid-w.

Writers

(setf grid-w).

Slot: h
Type

(unsigned-byte 32)

Initform

0

Readers

grid-h.

Writers

(setf grid-h).

Slot: d
Type

(unsigned-byte 32)

Initform

0

Readers

grid-d.

Writers

(setf grid-d).

Slot: cell
Type

single-float

Initform

0.0

Readers

grid-cell.

Writers

(setf grid-cell).

Slot: data
Type

simple-vector

Initform

#()

Readers

grid-data.

Writers

(setf grid-data).

Slot: table
Type

hash-table

Initform

(make-hash-table :test (quote eq))

Readers

grid-table.

Writers

(setf grid-table).

Structure: kd-tree

A k-dimensional tree

This is not a fully generalised implementation and is restricted to either 1, 2, or 3 dimensions. You can also specify the maximum tree depth and default splitting size to optimise the tree structure.

See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:CONTAINER
See MAKE-KD-TREE
See KD-TREE-INSERT
See KD-TREE-REMOVE
See KD-TREE-NEAREST
See KD-TREE-K-NEAREST
See KD-TREE-CALL-WITH-NEAREST
See QUADTREE (type)

Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Direct superclasses

container.

Direct methods
Direct slots
Slot: dimensions
Type

(unsigned-byte 8)

Initform

0

Readers

kd-tree-dimensions.

Writers

(setf kd-tree-dimensions).

Slot: split-size
Type

(unsigned-byte 8)

Initform

0

Readers

kd-tree-split-size.

Writers

(setf kd-tree-split-size).

Slot: max-depth
Type

(unsigned-byte 8)

Initform

0

Readers

kd-tree-max-depth.

Writers

(setf kd-tree-max-depth).

Slot: root
Type

org.shirakumo.fraf.trial.space.kd-tree::node

Readers

kd-tree-root.

Writers

(setf kd-tree-root).

Structure: quadtree

A spatial tree data structure in 2D similar to BVH2.

Each node of a quad-tree splits space into four equal sections that intersect in the middle of the node’s space. Each of these quarters may be represented by a child-node or nothing each of which tries to hold as few items as possible. If an item overlaps with the space of multiple child nodes, it is not passed to any of them and kept in the parent node.

The node automatically splits into sub-sections when an item count threshold is met upon insertion and checks the need for rebalancing at removal. Calling REOPTIMIZE manually will shuffle the tree around for better search traversal, but it is not recommended as the searches are should remain fast enough. Calling UPDATE will also rebalance the tree automatically in previous and current space relative to the passed object.

Like with BVH2, there is no limit to the area that the tree can span and it may cover any arbitrary area. The tree will also automatically expand as needed to fit all objects, but it will not contract.

See ORG.SHIRAKUMO.FRAF.TRIAL.SPACE:CONTAINER
See MAKE-QUADTREE
See MAKE-QUADTREE-AT
See QUADTREE-INSERT
See QUADTREE-REMOVE
See QUADTREE-UPDATE
See QUADTREE-FIND-ALL
See QUADTREE-FIND-OVERLAPS
See QUADTREE-FIND-OVERLAPS-IN
See QUADTREE-FIND-CONTAINED
See QUADTREE-FIND-CONTAINED-IN
See QUADTREE-FIND-FOR
See QUADTREE-LINES

Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Direct superclasses

container.

Direct methods
Direct slots
Slot: root
Type

org.shirakumo.fraf.trial.space.quadtree::quadtree-node

Initform

(org.shirakumo.fraf.trial.space.quadtree::%make-quadtree-node 0.0 0.0 100.0 100.0 0 1 1 nil nil nil nil nil)

Readers

quadtree-root.

Writers

(setf quadtree-root).

Slot: table
Type

hash-table

Initform

(make-hash-table :test (quote eq))

Readers

quadtree-table.

Writers

(setf quadtree-table).

Structure: region

Encompasses an axis-aligned region.

This is a VEC3, wherein the coordinates designate the "bottom left" corner of the region and its SIZE designates the width height and depth of the region.

NOTE: The region, unlike is required of other objects, does not keep the data as center and half-size. However, it does implement LOCATION and BSIZE to provide those quantities as defined.

See 3D-VECTORS:VEC3 (type)
See REGION-SIZE
See FIND-REGION
See REGION-OVERLAPS-P
See REGION-CONTAINS-P

Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Direct superclasses

vec3.

Direct methods
Direct slots
Slot: size
Type

org.shirakumo.fraf.math.vectors:vec3

Readers

region-size.

Writers

(setf region-size).

Structure: sphere
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Direct superclasses

vec3.

Direct methods
Direct slots
Slot: radius
Type

single-float

Initform

0.0

Readers

sphere-radius.

Writers

(setf sphere-radius).


5.2 Internals


5.2.1 Constants

Constant: +ray-intersection-scan-extent+
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.


5.2.2 Macros

Macro: %with-grid-coordinates ((x y z &key clamp) (grid xv yv zv) &body body)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Macro: for-node-active-children ((function node &rest arguments))
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Macro: for-node-children ((function node &rest arguments))
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Macro: with-array ((array vec) &body body)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Macro: with-nesting (&body body)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Macro: with-node-children ((top-left top-right bottom-left bottom-right) node &body body)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Macro: with-region ((var) &body body)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.


5.2.3 Ordinary functions

Function: %%make-quadtree-node (varr4 depth min-size threshold parent top-left top-right bottom-left bottom-right)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: %make-bvh-node (varr4 d p l r o)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: %make-grid (location cell)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Function: %make-kd-tree (dimensions split-size max-depth root)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: %make-quadtree-node (x y z w depth min-size threshold parent top-left top-right bottom-left bottom-right)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: %region (varr3 size)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: %region-contains-p (region other)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: %region-overlaps-p (region other)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: %sphere (varr3 radius)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: %visit-bbox (f node center bsize volume)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: %visit-sphere (f node center radius volume)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: better-fit (a b object)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Reader: bvh-iterator-bvh (instance)
Writer: (setf bvh-iterator-bvh) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Target Slot

bvh.

Reader: bvh-iterator-region (instance)
Writer: (setf bvh-iterator-region) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Target Slot

region.

Reader: bvh-node-d (instance)
Writer: (setf bvh-node-d) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Target Slot

d.

Reader: bvh-node-l (instance)
Writer: (setf bvh-node-l) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Target Slot

l.

Reader: bvh-node-o (instance)
Writer: (setf bvh-node-o) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Target Slot

o.

Reader: bvh-node-p (instance)
Writer: (setf bvh-node-p) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Target Slot

p.

Reader: bvh-node-r (instance)
Writer: (setf bvh-node-r) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Target Slot

r.

Function: bvh-node-varr4 (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: (setf bvh-node-varr4) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: bvh-refit (bvh)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Reader: bvh-root (instance)
Writer: (setf bvh-root) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Target Slot

root.

Reader: bvh-table (instance)
Writer: (setf bvh-table) (instance)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Target Slot

table.

Function: clamp (min x max)
Package

org.shirakumo.fraf.trial.space.

Source

toolkit.lisp.

Function: cost (x y z w)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: describe-tree (node children-fun stream)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: ensure-child-nodes (node)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: ensure-function (function-designator)
Package

org.shirakumo.fraf.trial.space.

Source

toolkit.lisp.

Reader: grid-cell (instance)
Writer: (setf grid-cell) (instance)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Target Slot

cell.

Reader: grid-d (instance)
Writer: (setf grid-d) (instance)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Target Slot

d.

Reader: grid-data (instance)
Writer: (setf grid-data) (instance)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Target Slot

data.

Reader: grid-h (instance)
Writer: (setf grid-h) (instance)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Target Slot

h.

Reader: grid-location (instance)
Writer: (setf grid-location) (instance)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Target Slot

location.

Reader: grid-table (instance)
Writer: (setf grid-table) (instance)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Target Slot

table.

Reader: grid-w (instance)
Writer: (setf grid-w) (instance)
Package

org.shirakumo.fraf.trial.space.grid3.

Source

grid3.lisp.

Target Slot

w.

Reader: kd-tree-dimensions (instance)
Writer: (setf kd-tree-dimensions) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

dimensions.

Reader: kd-tree-max-depth (instance)
Writer: (setf kd-tree-max-depth) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

max-depth.

Reader: kd-tree-root (instance)
Writer: (setf kd-tree-root) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

root.

Reader: kd-tree-split-size (instance)
Writer: (setf kd-tree-split-size) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

split-size.

Function: make-bvh-iterator (bvh region)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: make-bvh-node-for (object parent)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: make-node (&optional children)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: make-object-vector (&optional initial-size)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: make-quadtree-iterator (tree region contain-p)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-active-children (node)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-active-children-p (node)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-active-p (node)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Reader: node-axis (instance)
Writer: (setf node-axis) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

axis.

Function: node-check-activity (node)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Reader: node-children (instance)
Writer: (setf node-children) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

children.

Function: node-children (node)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-clear (node vector)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-clear-objects (node)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-contains-p (node object)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-contains-p* (node region)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-cost (node)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-direction (node object)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-direction* (node loc)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-empty-p (node)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-extend (node direction)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Reader: node-far (instance)
Writer: (setf node-far) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

far.

Function: node-find (node region vector)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-find-all (node vector)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-find-best-reinsertion-position (node bvh)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-fit (node l r)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-increase-depth (node)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-insert (node object)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-insert (node object table)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-insert-extend (node object table)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Reader: node-near (instance)
Writer: (setf node-near) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

near.

Function: node-overlaps-p (node region)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-pop-objects (node &optional vector)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Reader: node-position (instance)
Writer: (setf node-position) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

position.

Function: node-priority (node)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-push-objects-into (node vector)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-refit (node)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-refit-object (node object)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-reinsert-to-best (node bvh)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-remove (node)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-remove (node object table)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-remove-and-reinsert (bvh node out)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-remove-children (node &key recurse)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-reorder (node table)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-set-min-size (node min-size)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-set-threshold (node threshold)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-sibling (node)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-split (node object)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-split (node table)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: node-sub-p (node sub)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: node-transfer (target source)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Reader: node-tree-depth (instance)
Writer: (setf node-tree-depth) (instance)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Target Slot

tree-depth.

Function: perimiter-heuristic (x y z w)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Reader: quadtree-iterator-contain-p (instance)
Writer: (setf quadtree-iterator-contain-p) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

contain-p.

Reader: quadtree-iterator-region (instance)
Writer: (setf quadtree-iterator-region) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

region.

Reader: quadtree-iterator-tree (instance)
Writer: (setf quadtree-iterator-tree) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

tree.

Reader: quadtree-node-active-p (instance)
Writer: (setf quadtree-node-active-p) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

active-p.

Reader: quadtree-node-bottom-left (instance)
Writer: (setf quadtree-node-bottom-left) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

bottom-left.

Reader: quadtree-node-bottom-right (instance)
Writer: (setf quadtree-node-bottom-right) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

bottom-right.

Reader: quadtree-node-depth (instance)
Writer: (setf quadtree-node-depth) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

depth.

Reader: quadtree-node-min-size (instance)
Writer: (setf quadtree-node-min-size) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

min-size.

Reader: quadtree-node-objects (instance)
Writer: (setf quadtree-node-objects) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

objects.

Reader: quadtree-node-parent (instance)
Writer: (setf quadtree-node-parent) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

parent.

Reader: quadtree-node-threshold (instance)
Writer: (setf quadtree-node-threshold) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

threshold.

Reader: quadtree-node-top-left (instance)
Writer: (setf quadtree-node-top-left) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

top-left.

Reader: quadtree-node-top-right (instance)
Writer: (setf quadtree-node-top-right) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

top-right.

Function: quadtree-node-varr4 (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: (setf quadtree-node-varr4) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Reader: quadtree-root (instance)
Writer: (setf quadtree-root) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

root.

Reader: quadtree-table (instance)
Writer: (setf quadtree-table) (instance)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Target Slot

table.

Function: ray-intersects-box-p (ray-origin ray-direction box-min box-max &key eps)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: ray-scan-region (ray-origin ray-direction)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: recompute-subtree (node max-depth split-size dims)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: region-contains-area-p (region center size/2)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: region-contains-object-p (region object)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: region-overlaps-area-p (region center size/2)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: region-overlaps-object-p (region object)
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Function: region-varr3 (instance)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: (setf region-varr3) (instance)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: set-depth (node d)
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Function: sphere-varr3 (instance)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: (setf sphere-varr3) (instance)
Package

org.shirakumo.fraf.trial.space.

Source

protocol.lisp.

Function: split-node (node dims split-size)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: split-node-axis (node children axis other-axes split-size)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: sqrdist (a b)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: transfer-node (source target)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: visit-bbox (f node center bsize)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Function: visit-sphere (f node center radius)
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.


5.2.4 Generic functions

Generic Function: dserialize (container file id->object)
Package

org.shirakumo.fraf.trial.space.

Methods
Method: dserialize ((container container) (file string) id->object)
Source

protocol.lisp.


5.2.5 Structures

Structure: bvh-iterator
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Direct superclasses

structure-object.

Direct methods

step-functions.

Direct slots
Slot: bvh
Type

org.shirakumo.fraf.trial.space.bvh2:bvh

Readers

bvh-iterator-bvh.

Writers

(setf bvh-iterator-bvh).

Slot: region
Package

org.shirakumo.fraf.trial.space.

Type

org.shirakumo.fraf.math.vectors:vec4

Readers

bvh-iterator-region.

Writers

(setf bvh-iterator-region).

Structure: bvh-node
Package

org.shirakumo.fraf.trial.space.bvh2.

Source

bvh2.lisp.

Direct superclasses

vec4.

Direct methods

print-object.

Direct slots
Slot: d
Type

(unsigned-byte 16)

Initform

0

Readers

bvh-node-d.

Writers

(setf bvh-node-d).

Slot: p
Type

(or null org.shirakumo.fraf.trial.space.bvh2::bvh-node)

Readers

bvh-node-p.

Writers

(setf bvh-node-p).

Slot: l
Type

(or null org.shirakumo.fraf.trial.space.bvh2::bvh-node)

Readers

bvh-node-l.

Writers

(setf bvh-node-l).

Slot: r
Type

(or null org.shirakumo.fraf.trial.space.bvh2::bvh-node)

Readers

bvh-node-r.

Writers

(setf bvh-node-r).

Slot: o
Readers

bvh-node-o.

Writers

(setf bvh-node-o).

Structure: node
Package

org.shirakumo.fraf.trial.space.kd-tree.

Source

kd-tree.lisp.

Direct superclasses

structure-object.

Direct methods

print-object.

Direct slots
Slot: near
Type

(or null org.shirakumo.fraf.trial.space.kd-tree::node)

Readers

node-near.

Writers

(setf node-near).

Slot: far
Type

(or null org.shirakumo.fraf.trial.space.kd-tree::node)

Readers

node-far.

Writers

(setf node-far).

Slot: children
Type

(and (vector t) (not simple-vector))

Initform

(make-array 0 :adjustable t :fill-pointer t)

Readers

node-children.

Writers

(setf node-children).

Slot: axis
Type

(unsigned-byte 8)

Initform

0

Readers

node-axis.

Writers

(setf node-axis).

Slot: position
Package

common-lisp.

Type

single-float

Initform

0.0

Readers

node-position.

Writers

(setf node-position).

Slot: tree-depth
Type

(unsigned-byte 8)

Initform

0

Readers

node-tree-depth.

Writers

(setf node-tree-depth).

Structure: quadtree-iterator
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Direct superclasses

structure-object.

Direct methods

step-functions.

Direct slots
Slot: tree
Type

org.shirakumo.fraf.trial.space.quadtree:quadtree

Readers

quadtree-iterator-tree.

Writers

(setf quadtree-iterator-tree).

Slot: region
Package

org.shirakumo.fraf.trial.space.

Type

org.shirakumo.fraf.math.vectors:vec4

Readers

quadtree-iterator-region.

Writers

(setf quadtree-iterator-region).

Slot: contain-p
Type

boolean

Readers

quadtree-iterator-contain-p.

Writers

(setf quadtree-iterator-contain-p).

Structure: quadtree-node
Package

org.shirakumo.fraf.trial.space.quadtree.

Source

quadtree.lisp.

Direct superclasses

vec4.

Direct methods

print-object.

Direct slots
Slot: depth
Type

(unsigned-byte 32)

Initform

0

Readers

quadtree-node-depth.

Writers

(setf quadtree-node-depth).

Slot: min-size
Type

(unsigned-byte 16)

Initform

1

Readers

quadtree-node-min-size.

Writers

(setf quadtree-node-min-size).

Slot: threshold
Type

(unsigned-byte 16)

Initform

1

Readers

quadtree-node-threshold.

Writers

(setf quadtree-node-threshold).

Slot: parent
Type

(or null org.shirakumo.fraf.trial.space.quadtree::quadtree-node)

Readers

quadtree-node-parent.

Writers

(setf quadtree-node-parent).

Slot: top-left
Type

(or null org.shirakumo.fraf.trial.space.quadtree::quadtree-node)

Readers

quadtree-node-top-left.

Writers

(setf quadtree-node-top-left).

Slot: top-right
Type

(or null org.shirakumo.fraf.trial.space.quadtree::quadtree-node)

Readers

quadtree-node-top-right.

Writers

(setf quadtree-node-top-right).

Slot: bottom-left
Type

(or null org.shirakumo.fraf.trial.space.quadtree::quadtree-node)

Readers

quadtree-node-bottom-left.

Writers

(setf quadtree-node-bottom-left).

Slot: bottom-right
Type

(or null org.shirakumo.fraf.trial.space.quadtree::quadtree-node)

Readers

quadtree-node-bottom-right.

Writers

(setf quadtree-node-bottom-right).

Slot: active-p
Type

boolean

Readers

quadtree-node-active-p.

Writers

(setf quadtree-node-active-p).

Slot: objects
Type

(vector t)

Initform

(org.shirakumo.fraf.trial.space.quadtree::make-object-vector)

Readers

quadtree-node-objects.

Writers

(setf quadtree-node-objects).


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
B   C   D   E   F   G   K   L   M   N   O   P   Q   R   S   T   U   V   W  
Index Entry  Section

%
%%make-quadtree-node: Private ordinary functions
%make-bvh-node: Private ordinary functions
%make-grid: Private ordinary functions
%make-kd-tree: Private ordinary functions
%make-quadtree-node: Private ordinary functions
%region: Private ordinary functions
%region-contains-p: Private ordinary functions
%region-overlaps-p: Private ordinary functions
%sphere: Private ordinary functions
%visit-bbox: Private ordinary functions
%visit-sphere: Private ordinary functions
%with-grid-coordinates: Private macros

(
(setf bvh-iterator-bvh): Private ordinary functions
(setf bvh-iterator-region): Private ordinary functions
(setf bvh-node-d): Private ordinary functions
(setf bvh-node-l): Private ordinary functions
(setf bvh-node-o): Private ordinary functions
(setf bvh-node-p): Private ordinary functions
(setf bvh-node-r): Private ordinary functions
(setf bvh-node-varr4): Private ordinary functions
(setf bvh-root): Private ordinary functions
(setf bvh-table): Private ordinary functions
(setf grid-cell): Private ordinary functions
(setf grid-d): Private ordinary functions
(setf grid-data): Private ordinary functions
(setf grid-h): Private ordinary functions
(setf grid-location): Private ordinary functions
(setf grid-table): Private ordinary functions
(setf grid-w): Private ordinary functions
(setf kd-tree-dimensions): Private ordinary functions
(setf kd-tree-max-depth): Private ordinary functions
(setf kd-tree-root): Private ordinary functions
(setf kd-tree-split-size): Private ordinary functions
(setf node-axis): Private ordinary functions
(setf node-children): Private ordinary functions
(setf node-far): Private ordinary functions
(setf node-near): Private ordinary functions
(setf node-position): Private ordinary functions
(setf node-tree-depth): Private ordinary functions
(setf quadtree-iterator-contain-p): Private ordinary functions
(setf quadtree-iterator-region): Private ordinary functions
(setf quadtree-iterator-tree): Private ordinary functions
(setf quadtree-node-active-p): Private ordinary functions
(setf quadtree-node-bottom-left): Private ordinary functions
(setf quadtree-node-bottom-right): Private ordinary functions
(setf quadtree-node-depth): Private ordinary functions
(setf quadtree-node-min-size): Private ordinary functions
(setf quadtree-node-objects): Private ordinary functions
(setf quadtree-node-parent): Private ordinary functions
(setf quadtree-node-threshold): Private ordinary functions
(setf quadtree-node-top-left): Private ordinary functions
(setf quadtree-node-top-right): Private ordinary functions
(setf quadtree-node-varr4): Private ordinary functions
(setf quadtree-root): Private ordinary functions
(setf quadtree-table): Private ordinary functions
(setf region-size): Public ordinary functions
(setf region-varr3): Private ordinary functions
(setf sphere-radius): Public ordinary functions
(setf sphere-varr3): Private ordinary functions

B
better-fit: Private ordinary functions
bsize: Public generic functions
bsize: Public generic functions
bsize: Public generic functions
bsize: Public generic functions
bvh-insert: Public ordinary functions
bvh-iterator-bvh: Private ordinary functions
bvh-iterator-region: Private ordinary functions
bvh-lines: Public ordinary functions
bvh-node-d: Private ordinary functions
bvh-node-l: Private ordinary functions
bvh-node-o: Private ordinary functions
bvh-node-p: Private ordinary functions
bvh-node-r: Private ordinary functions
bvh-node-varr4: Private ordinary functions
bvh-refit: Private ordinary functions
bvh-remove: Public ordinary functions
bvh-root: Private ordinary functions
bvh-table: Private ordinary functions
bvh-update: Public ordinary functions

C
call-with-all: Public generic functions
call-with-all: Public generic functions
call-with-all: Public generic functions
call-with-all: Public generic functions
call-with-all: Public generic functions
call-with-all: Public generic functions
call-with-candidates: Public generic functions
call-with-candidates: Public generic functions
call-with-candidates: Public generic functions
call-with-candidates: Public generic functions
call-with-contained: Public generic functions
call-with-contained: Public generic functions
call-with-contained: Public generic functions
call-with-contained: Public generic functions
call-with-contained: Public generic functions
call-with-contained: Public generic functions
call-with-intersecting: Public generic functions
call-with-intersecting: Public generic functions
call-with-intersecting: Public generic functions
call-with-intersecting: Public generic functions
call-with-overlapping: Public generic functions
call-with-overlapping: Public generic functions
call-with-overlapping: Public generic functions
call-with-overlapping: Public generic functions
call-with-overlapping: Public generic functions
call-with-overlapping: Public generic functions
call-with-overlapping: Public generic functions
check: Public generic functions
check: Public generic functions
check: Public generic functions
check: Public generic functions
clamp: Private ordinary functions
clear: Public generic functions
clear: Public generic functions
clear: Public generic functions
clear: Public generic functions
clear: Public generic functions
container-p: Public ordinary functions
cost: Private ordinary functions

D
describe-object: Public standalone methods
describe-object: Public standalone methods
describe-object: Public standalone methods
describe-tree: Private ordinary functions
deserialize: Public generic functions
deserialize: Public generic functions
deserialize: Public generic functions
do-all: Public macros
do-candidates: Public macros
do-contained: Public macros
do-intersecting: Public macros
do-overlapping: Public macros
dserialize: Private generic functions
dserialize: Private generic functions

E
ensure-child-nodes: Private ordinary functions
ensure-function: Private ordinary functions
ensure-region: Public generic functions
ensure-region: Public generic functions
ensure-region: Public generic functions
ensure-region: Public generic functions
ensure-region: Public generic functions
ensure-region: Public generic functions
enter: Public generic functions
enter: Public generic functions
enter: Public generic functions
enter: Public generic functions
enter: Public generic functions
enter: Public generic functions

F
find-region: Public ordinary functions
for-node-active-children: Private macros
for-node-children: Private macros
Function, %%make-quadtree-node: Private ordinary functions
Function, %make-bvh-node: Private ordinary functions
Function, %make-grid: Private ordinary functions
Function, %make-kd-tree: Private ordinary functions
Function, %make-quadtree-node: Private ordinary functions
Function, %region: Private ordinary functions
Function, %region-contains-p: Private ordinary functions
Function, %region-overlaps-p: Private ordinary functions
Function, %sphere: Private ordinary functions
Function, %visit-bbox: Private ordinary functions
Function, %visit-sphere: Private ordinary functions
Function, (setf bvh-iterator-bvh): Private ordinary functions
Function, (setf bvh-iterator-region): Private ordinary functions
Function, (setf bvh-node-d): Private ordinary functions
Function, (setf bvh-node-l): Private ordinary functions
Function, (setf bvh-node-o): Private ordinary functions
Function, (setf bvh-node-p): Private ordinary functions
Function, (setf bvh-node-r): Private ordinary functions
Function, (setf bvh-node-varr4): Private ordinary functions
Function, (setf bvh-root): Private ordinary functions
Function, (setf bvh-table): Private ordinary functions
Function, (setf grid-cell): Private ordinary functions
Function, (setf grid-d): Private ordinary functions
Function, (setf grid-data): Private ordinary functions
Function, (setf grid-h): Private ordinary functions
Function, (setf grid-location): Private ordinary functions
Function, (setf grid-table): Private ordinary functions
Function, (setf grid-w): Private ordinary functions
Function, (setf kd-tree-dimensions): Private ordinary functions
Function, (setf kd-tree-max-depth): Private ordinary functions
Function, (setf kd-tree-root): Private ordinary functions
Function, (setf kd-tree-split-size): Private ordinary functions
Function, (setf node-axis): Private ordinary functions
Function, (setf node-children): Private ordinary functions
Function, (setf node-far): Private ordinary functions
Function, (setf node-near): Private ordinary functions
Function, (setf node-position): Private ordinary functions
Function, (setf node-tree-depth): Private ordinary functions
Function, (setf quadtree-iterator-contain-p): Private ordinary functions
Function, (setf quadtree-iterator-region): Private ordinary functions
Function, (setf quadtree-iterator-tree): Private ordinary functions
Function, (setf quadtree-node-active-p): Private ordinary functions
Function, (setf quadtree-node-bottom-left): Private ordinary functions
Function, (setf quadtree-node-bottom-right): Private ordinary functions
Function, (setf quadtree-node-depth): Private ordinary functions
Function, (setf quadtree-node-min-size): Private ordinary functions
Function, (setf quadtree-node-objects): Private ordinary functions
Function, (setf quadtree-node-parent): Private ordinary functions
Function, (setf quadtree-node-threshold): Private ordinary functions
Function, (setf quadtree-node-top-left): Private ordinary functions
Function, (setf quadtree-node-top-right): Private ordinary functions
Function, (setf quadtree-node-varr4): Private ordinary functions
Function, (setf quadtree-root): Private ordinary functions
Function, (setf quadtree-table): Private ordinary functions
Function, (setf region-size): Public ordinary functions
Function, (setf region-varr3): Private ordinary functions
Function, (setf sphere-radius): Public ordinary functions
Function, (setf sphere-varr3): Private ordinary functions
Function, better-fit: Private ordinary functions
Function, bvh-insert: Public ordinary functions
Function, bvh-iterator-bvh: Private ordinary functions
Function, bvh-iterator-region: Private ordinary functions
Function, bvh-lines: Public ordinary functions
Function, bvh-node-d: Private ordinary functions
Function, bvh-node-l: Private ordinary functions
Function, bvh-node-o: Private ordinary functions
Function, bvh-node-p: Private ordinary functions
Function, bvh-node-r: Private ordinary functions
Function, bvh-node-varr4: Private ordinary functions
Function, bvh-refit: Private ordinary functions
Function, bvh-remove: Public ordinary functions
Function, bvh-root: Private ordinary functions
Function, bvh-table: Private ordinary functions
Function, bvh-update: Public ordinary functions
Function, clamp: Private ordinary functions
Function, container-p: Public ordinary functions
Function, cost: Private ordinary functions
Function, describe-tree: Private ordinary functions
Function, ensure-child-nodes: Private ordinary functions
Function, ensure-function: Private ordinary functions
Function, find-region: Public ordinary functions
Function, grid-cell: Private ordinary functions
Function, grid-d: Private ordinary functions
Function, grid-data: Private ordinary functions
Function, grid-h: Private ordinary functions
Function, grid-insert: Public ordinary functions
Function, grid-location: Private ordinary functions
Function, grid-move: Public ordinary functions
Function, grid-remove: Public ordinary functions
Function, grid-resize: Public ordinary functions
Function, grid-table: Private ordinary functions
Function, grid-update: Public ordinary functions
Function, grid-w: Private ordinary functions
Function, kd-tree-call-with-nearest: Public ordinary functions
Function, kd-tree-dimensions: Private ordinary functions
Function, kd-tree-insert: Public ordinary functions
Function, kd-tree-k-nearest: Public ordinary functions
Function, kd-tree-max-depth: Private ordinary functions
Function, kd-tree-nearest: Public ordinary functions
Function, kd-tree-remove: Public ordinary functions
Function, kd-tree-root: Private ordinary functions
Function, kd-tree-split-size: Private ordinary functions
Function, make-bvh: Public ordinary functions
Function, make-bvh-iterator: Private ordinary functions
Function, make-bvh-node-for: Private ordinary functions
Function, make-grid: Public ordinary functions
Function, make-kd-tree: Public ordinary functions
Function, make-node: Private ordinary functions
Function, make-object-vector: Private ordinary functions
Function, make-quadtree: Public ordinary functions
Function, make-quadtree-at: Public ordinary functions
Function, make-quadtree-iterator: Private ordinary functions
Function, node-active-children: Private ordinary functions
Function, node-active-children-p: Private ordinary functions
Function, node-active-p: Private ordinary functions
Function, node-axis: Private ordinary functions
Function, node-check-activity: Private ordinary functions
Function, node-children: Private ordinary functions
Function, node-children: Private ordinary functions
Function, node-clear: Private ordinary functions
Function, node-clear-objects: Private ordinary functions
Function, node-contains-p: Private ordinary functions
Function, node-contains-p*: Private ordinary functions
Function, node-cost: Private ordinary functions
Function, node-direction: Private ordinary functions
Function, node-direction*: Private ordinary functions
Function, node-empty-p: Private ordinary functions
Function, node-extend: Private ordinary functions
Function, node-far: Private ordinary functions
Function, node-find: Private ordinary functions
Function, node-find-all: Private ordinary functions
Function, node-find-best-reinsertion-position: Private ordinary functions
Function, node-fit: Private ordinary functions
Function, node-increase-depth: Private ordinary functions
Function, node-insert: Private ordinary functions
Function, node-insert: Private ordinary functions
Function, node-insert-extend: Private ordinary functions
Function, node-near: Private ordinary functions
Function, node-overlaps-p: Private ordinary functions
Function, node-pop-objects: Private ordinary functions
Function, node-position: Private ordinary functions
Function, node-priority: Private ordinary functions
Function, node-push-objects-into: Private ordinary functions
Function, node-refit: Private ordinary functions
Function, node-refit-object: Private ordinary functions
Function, node-reinsert-to-best: Private ordinary functions
Function, node-remove: Private ordinary functions
Function, node-remove: Private ordinary functions
Function, node-remove-and-reinsert: Private ordinary functions
Function, node-remove-children: Private ordinary functions
Function, node-reorder: Private ordinary functions
Function, node-set-min-size: Private ordinary functions
Function, node-set-threshold: Private ordinary functions
Function, node-sibling: Private ordinary functions
Function, node-split: Private ordinary functions
Function, node-split: Private ordinary functions
Function, node-sub-p: Private ordinary functions
Function, node-transfer: Private ordinary functions
Function, node-tree-depth: Private ordinary functions
Function, perimiter-heuristic: Private ordinary functions
Function, quadtree-find-all: Public ordinary functions
Function, quadtree-find-contained: Public ordinary functions
Function, quadtree-find-contained-in: Public ordinary functions
Function, quadtree-find-for: Public ordinary functions
Function, quadtree-find-overlaps: Public ordinary functions
Function, quadtree-find-overlaps-in: Public ordinary functions
Function, quadtree-insert: Public ordinary functions
Function, quadtree-iterator-contain-p: Private ordinary functions
Function, quadtree-iterator-region: Private ordinary functions
Function, quadtree-iterator-tree: Private ordinary functions
Function, quadtree-lines: Public ordinary functions
Function, quadtree-node-active-p: Private ordinary functions
Function, quadtree-node-bottom-left: Private ordinary functions
Function, quadtree-node-bottom-right: Private ordinary functions
Function, quadtree-node-depth: Private ordinary functions
Function, quadtree-node-min-size: Private ordinary functions
Function, quadtree-node-objects: Private ordinary functions
Function, quadtree-node-parent: Private ordinary functions
Function, quadtree-node-threshold: Private ordinary functions
Function, quadtree-node-top-left: Private ordinary functions
Function, quadtree-node-top-right: Private ordinary functions
Function, quadtree-node-varr4: Private ordinary functions
Function, quadtree-remove: Public ordinary functions
Function, quadtree-root: Private ordinary functions
Function, quadtree-table: Private ordinary functions
Function, quadtree-update: Public ordinary functions
Function, ray-intersects-box-p: Private ordinary functions
Function, ray-scan-region: Private ordinary functions
Function, recompute-subtree: Private ordinary functions
Function, region: Public ordinary functions
Function, region-contains-area-p: Private ordinary functions
Function, region-contains-object-p: Private ordinary functions
Function, region-contains-p: Public ordinary functions
Function, region-overlaps-area-p: Private ordinary functions
Function, region-overlaps-object-p: Private ordinary functions
Function, region-overlaps-p: Public ordinary functions
Function, region-size: Public ordinary functions
Function, region-varr3: Private ordinary functions
Function, set-depth: Private ordinary functions
Function, sphere: Public ordinary functions
Function, sphere-radius: Public ordinary functions
Function, sphere-varr3: Private ordinary functions
Function, split-node: Private ordinary functions
Function, split-node-axis: Private ordinary functions
Function, sqrdist: Private ordinary functions
Function, transfer-node: Private ordinary functions
Function, visit-bbox: Private ordinary functions
Function, visit-sphere: Private ordinary functions

G
Generic Function, bsize: Public generic functions
Generic Function, call-with-all: Public generic functions
Generic Function, call-with-candidates: Public generic functions
Generic Function, call-with-contained: Public generic functions
Generic Function, call-with-intersecting: Public generic functions
Generic Function, call-with-overlapping: Public generic functions
Generic Function, check: Public generic functions
Generic Function, clear: Public generic functions
Generic Function, deserialize: Public generic functions
Generic Function, dserialize: Private generic functions
Generic Function, ensure-region: Public generic functions
Generic Function, enter: Public generic functions
Generic Function, leave: Public generic functions
Generic Function, location: Public generic functions
Generic Function, object-count: Public generic functions
Generic Function, radius: Public generic functions
Generic Function, reoptimize: Public generic functions
Generic Function, serialize: Public generic functions
Generic Function, update: Public generic functions
grid-cell: Private ordinary functions
grid-d: Private ordinary functions
grid-data: Private ordinary functions
grid-h: Private ordinary functions
grid-insert: Public ordinary functions
grid-location: Private ordinary functions
grid-move: Public ordinary functions
grid-remove: Public ordinary functions
grid-resize: Public ordinary functions
grid-table: Private ordinary functions
grid-update: Public ordinary functions
grid-w: Private ordinary functions

K
kd-tree-call-with-nearest: Public ordinary functions
kd-tree-dimensions: Private ordinary functions
kd-tree-insert: Public ordinary functions
kd-tree-k-nearest: Public ordinary functions
kd-tree-max-depth: Private ordinary functions
kd-tree-nearest: Public ordinary functions
kd-tree-remove: Public ordinary functions
kd-tree-root: Private ordinary functions
kd-tree-split-size: Private ordinary functions

L
leave: Public generic functions
leave: Public generic functions
leave: Public generic functions
leave: Public generic functions
leave: Public generic functions
leave: Public generic functions
location: Public generic functions
location: Public generic functions
location: Public generic functions
location: Public generic functions

M
Macro, %with-grid-coordinates: Private macros
Macro, do-all: Public macros
Macro, do-candidates: Public macros
Macro, do-contained: Public macros
Macro, do-intersecting: Public macros
Macro, do-overlapping: Public macros
Macro, for-node-active-children: Private macros
Macro, for-node-children: Private macros
Macro, with-array: Private macros
Macro, with-nesting: Private macros
Macro, with-node-children: Private macros
Macro, with-region: Private macros
make-bvh: Public ordinary functions
make-bvh-iterator: Private ordinary functions
make-bvh-node-for: Private ordinary functions
make-grid: Public ordinary functions
make-iterator: Public standalone methods
make-iterator: Public standalone methods
make-kd-tree: Public ordinary functions
make-load-form: Public standalone methods
make-load-form: Public standalone methods
make-node: Private ordinary functions
make-object-vector: Private ordinary functions
make-quadtree: Public ordinary functions
make-quadtree-at: Public ordinary functions
make-quadtree-iterator: Private ordinary functions
Method, bsize: Public generic functions
Method, bsize: Public generic functions
Method, bsize: Public generic functions
Method, call-with-all: Public generic functions
Method, call-with-all: Public generic functions
Method, call-with-all: Public generic functions
Method, call-with-all: Public generic functions
Method, call-with-all: Public generic functions
Method, call-with-candidates: Public generic functions
Method, call-with-candidates: Public generic functions
Method, call-with-candidates: Public generic functions
Method, call-with-contained: Public generic functions
Method, call-with-contained: Public generic functions
Method, call-with-contained: Public generic functions
Method, call-with-contained: Public generic functions
Method, call-with-contained: Public generic functions
Method, call-with-intersecting: Public generic functions
Method, call-with-intersecting: Public generic functions
Method, call-with-intersecting: Public generic functions
Method, call-with-overlapping: Public generic functions
Method, call-with-overlapping: Public generic functions
Method, call-with-overlapping: Public generic functions
Method, call-with-overlapping: Public generic functions
Method, call-with-overlapping: Public generic functions
Method, call-with-overlapping: Public generic functions
Method, check: Public generic functions
Method, check: Public generic functions
Method, check: Public generic functions
Method, clear: Public generic functions
Method, clear: Public generic functions
Method, clear: Public generic functions
Method, clear: Public generic functions
Method, describe-object: Public standalone methods
Method, describe-object: Public standalone methods
Method, describe-object: Public standalone methods
Method, deserialize: Public generic functions
Method, deserialize: Public generic functions
Method, dserialize: Private generic functions
Method, ensure-region: Public generic functions
Method, ensure-region: Public generic functions
Method, ensure-region: Public generic functions
Method, ensure-region: Public generic functions
Method, ensure-region: Public generic functions
Method, enter: Public generic functions
Method, enter: Public generic functions
Method, enter: Public generic functions
Method, enter: Public generic functions
Method, enter: Public generic functions
Method, leave: Public generic functions
Method, leave: Public generic functions
Method, leave: Public generic functions
Method, leave: Public generic functions
Method, leave: Public generic functions
Method, location: Public generic functions
Method, location: Public generic functions
Method, location: Public generic functions
Method, make-iterator: Public standalone methods
Method, make-iterator: Public standalone methods
Method, make-load-form: Public standalone methods
Method, make-load-form: Public standalone methods
Method, object-count: Public generic functions
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, radius: Public generic functions
Method, radius: Public generic functions
Method, reoptimize: Public generic functions
Method, reoptimize: Public generic functions
Method, reoptimize: Public generic functions
Method, reoptimize: Public generic functions
Method, reoptimize: Public generic functions
Method, serialize: Public generic functions
Method, serialize: Public generic functions
Method, serialize: Public generic functions
Method, step-functions: Public standalone methods
Method, step-functions: Public standalone methods
Method, step-functions: Public standalone methods
Method, update: Public generic functions
Method, update: Public generic functions
Method, update: Public generic functions
Method, update: Public generic functions
Method, update: Public generic functions

N
node-active-children: Private ordinary functions
node-active-children-p: Private ordinary functions
node-active-p: Private ordinary functions
node-axis: Private ordinary functions
node-check-activity: Private ordinary functions
node-children: Private ordinary functions
node-children: Private ordinary functions
node-clear: Private ordinary functions
node-clear-objects: Private ordinary functions
node-contains-p: Private ordinary functions
node-contains-p*: Private ordinary functions
node-cost: Private ordinary functions
node-direction: Private ordinary functions
node-direction*: Private ordinary functions
node-empty-p: Private ordinary functions
node-extend: Private ordinary functions
node-far: Private ordinary functions
node-find: Private ordinary functions
node-find-all: Private ordinary functions
node-find-best-reinsertion-position: Private ordinary functions
node-fit: Private ordinary functions
node-increase-depth: Private ordinary functions
node-insert: Private ordinary functions
node-insert: Private ordinary functions
node-insert-extend: Private ordinary functions
node-near: Private ordinary functions
node-overlaps-p: Private ordinary functions
node-pop-objects: Private ordinary functions
node-position: Private ordinary functions
node-priority: Private ordinary functions
node-push-objects-into: Private ordinary functions
node-refit: Private ordinary functions
node-refit-object: Private ordinary functions
node-reinsert-to-best: Private ordinary functions
node-remove: Private ordinary functions
node-remove: Private ordinary functions
node-remove-and-reinsert: Private ordinary functions
node-remove-children: Private ordinary functions
node-reorder: Private ordinary functions
node-set-min-size: Private ordinary functions
node-set-threshold: Private ordinary functions
node-sibling: Private ordinary functions
node-split: Private ordinary functions
node-split: Private ordinary functions
node-sub-p: Private ordinary functions
node-transfer: Private ordinary functions
node-tree-depth: Private ordinary functions

O
object-count: Public generic functions
object-count: Public generic functions

P
perimiter-heuristic: Private ordinary functions
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods

Q
quadtree-find-all: Public ordinary functions
quadtree-find-contained: Public ordinary functions
quadtree-find-contained-in: Public ordinary functions
quadtree-find-for: Public ordinary functions
quadtree-find-overlaps: Public ordinary functions
quadtree-find-overlaps-in: Public ordinary functions
quadtree-insert: Public ordinary functions
quadtree-iterator-contain-p: Private ordinary functions
quadtree-iterator-region: Private ordinary functions
quadtree-iterator-tree: Private ordinary functions
quadtree-lines: Public ordinary functions
quadtree-node-active-p: Private ordinary functions
quadtree-node-bottom-left: Private ordinary functions
quadtree-node-bottom-right: Private ordinary functions
quadtree-node-depth: Private ordinary functions
quadtree-node-min-size: Private ordinary functions
quadtree-node-objects: Private ordinary functions
quadtree-node-parent: Private ordinary functions
quadtree-node-threshold: Private ordinary functions
quadtree-node-top-left: Private ordinary functions
quadtree-node-top-right: Private ordinary functions
quadtree-node-varr4: Private ordinary functions
quadtree-remove: Public ordinary functions
quadtree-root: Private ordinary functions
quadtree-table: Private ordinary functions
quadtree-update: Public ordinary functions

R
radius: Public generic functions
radius: Public generic functions
radius: Public generic functions
ray-intersects-box-p: Private ordinary functions
ray-scan-region: Private ordinary functions
recompute-subtree: Private ordinary functions
region: Public ordinary functions
region-contains-area-p: Private ordinary functions
region-contains-object-p: Private ordinary functions
region-contains-p: Public ordinary functions
region-overlaps-area-p: Private ordinary functions
region-overlaps-object-p: Private ordinary functions
region-overlaps-p: Public ordinary functions
region-size: Public ordinary functions
region-varr3: Private ordinary functions
reoptimize: Public generic functions
reoptimize: Public generic functions
reoptimize: Public generic functions
reoptimize: Public generic functions
reoptimize: Public generic functions
reoptimize: Public generic functions

S
serialize: Public generic functions
serialize: Public generic functions
serialize: Public generic functions
serialize: Public generic functions
set-depth: Private ordinary functions
sphere: Public ordinary functions
sphere-radius: Public ordinary functions
sphere-varr3: Private ordinary functions
split-node: Private ordinary functions
split-node-axis: Private ordinary functions
sqrdist: Private ordinary functions
step-functions: Public standalone methods
step-functions: Public standalone methods
step-functions: Public standalone methods

T
transfer-node: Private ordinary functions

U
update: Public generic functions
update: Public generic functions
update: Public generic functions
update: Public generic functions
update: Public generic functions
update: Public generic functions

V
visit-bbox: Private ordinary functions
visit-sphere: Private ordinary functions

W
with-array: Private macros
with-nesting: Private macros
with-node-children: Private macros
with-region: Private macros


A.3 Variables

Jump to:   +  
A   B   C   D   F   H   L   M   N   O   P   R   S   T   W  
Index Entry  Section

+
+ray-intersection-scan-extent+: Private constants

A
active-p: Private structures
axis: Private structures

B
bottom-left: Private structures
bottom-right: Private structures
bvh: Private structures

C
cell: Public structures
children: Private structures
Constant, +ray-intersection-scan-extent+: Private constants
contain-p: Private structures

D
d: Public structures
d: Private structures
data: Public structures
depth: Private structures
dimensions: Public structures

F
far: Private structures

H
h: Public structures

L
l: Private structures
location: Public structures

M
max-depth: Public structures
min-size: Private structures

N
near: Private structures

O
o: Private structures
objects: Private structures

P
p: Private structures
parent: Private structures
position: Private structures

R
r: Private structures
radius: Public structures
region: Private structures
region: Private structures
root: Public structures
root: Public structures
root: Public structures

S
size: Public structures
Slot, active-p: Private structures
Slot, axis: Private structures
Slot, bottom-left: Private structures
Slot, bottom-right: Private structures
Slot, bvh: Private structures
Slot, cell: Public structures
Slot, children: Private structures
Slot, contain-p: Private structures
Slot, d: Public structures
Slot, d: Private structures
Slot, data: Public structures
Slot, depth: Private structures
Slot, dimensions: Public structures
Slot, far: Private structures
Slot, h: Public structures
Slot, l: Private structures
Slot, location: Public structures
Slot, max-depth: Public structures
Slot, min-size: Private structures
Slot, near: Private structures
Slot, o: Private structures
Slot, objects: Private structures
Slot, p: Private structures
Slot, parent: Private structures
Slot, position: Private structures
Slot, r: Private structures
Slot, radius: Public structures
Slot, region: Private structures
Slot, region: Private structures
Slot, root: Public structures
Slot, root: Public structures
Slot, root: Public structures
Slot, size: Public structures
Slot, split-size: Public structures
Slot, table: Public structures
Slot, table: Public structures
Slot, table: Public structures
Slot, threshold: Private structures
Slot, top-left: Private structures
Slot, top-right: Private structures
Slot, tree: Private structures
Slot, tree-depth: Private structures
Slot, w: Public structures
split-size: Public structures

T
table: Public structures
table: Public structures
table: Public structures
threshold: Private structures
top-left: Private structures
top-right: Private structures
tree: Private structures
tree-depth: Private structures

W
w: Public structures


A.4 Data types

Jump to:   3  
B   C   D   F   G   K   N   O   P   Q   R   S   T  
Index Entry  Section

3
3d-spaces: The 3d-spaces system
3d-spaces.asd: The 3d-spaces/3d-spaces․asd file

B
bvh: Public structures
bvh-iterator: Private structures
bvh-node: Private structures
bvh2.lisp: The 3d-spaces/bvh2․lisp file

C
container: Public structures

D
documentation.lisp: The 3d-spaces/documentation․lisp file

F
File, 3d-spaces.asd: The 3d-spaces/3d-spaces․asd file
File, bvh2.lisp: The 3d-spaces/bvh2․lisp file
File, documentation.lisp: The 3d-spaces/documentation․lisp file
File, grid3.lisp: The 3d-spaces/grid3․lisp file
File, kd-tree.lisp: The 3d-spaces/kd-tree․lisp file
File, package.lisp: The 3d-spaces/package․lisp file
File, protocol.lisp: The 3d-spaces/protocol․lisp file
File, quadtree.lisp: The 3d-spaces/quadtree․lisp file
File, toolkit.lisp: The 3d-spaces/toolkit․lisp file

G
grid: Public structures
grid3.lisp: The 3d-spaces/grid3․lisp file

K
kd-tree: Public structures
kd-tree.lisp: The 3d-spaces/kd-tree․lisp file

N
node: Private structures

O
org.shirakumo.fraf.trial.space: The org․shirakumo․fraf․trial․space package
org.shirakumo.fraf.trial.space.bvh2: The org․shirakumo․fraf․trial․space․bvh2 package
org.shirakumo.fraf.trial.space.grid3: The org․shirakumo․fraf․trial․space․grid3 package
org.shirakumo.fraf.trial.space.kd-tree: The org․shirakumo․fraf․trial․space․kd-tree package
org.shirakumo.fraf.trial.space.quadtree: The org․shirakumo․fraf․trial․space․quadtree package

P
Package, org.shirakumo.fraf.trial.space: The org․shirakumo․fraf․trial․space package
Package, org.shirakumo.fraf.trial.space.bvh2: The org․shirakumo․fraf․trial․space․bvh2 package
Package, org.shirakumo.fraf.trial.space.grid3: The org․shirakumo․fraf․trial․space․grid3 package
Package, org.shirakumo.fraf.trial.space.kd-tree: The org․shirakumo․fraf․trial․space․kd-tree package
Package, org.shirakumo.fraf.trial.space.quadtree: The org․shirakumo․fraf․trial․space․quadtree package
package.lisp: The 3d-spaces/package․lisp file
protocol.lisp: The 3d-spaces/protocol․lisp file

Q
quadtree: Public structures
quadtree-iterator: Private structures
quadtree-node: Private structures
quadtree.lisp: The 3d-spaces/quadtree․lisp file

R
region: Public structures

S
sphere: Public structures
Structure, bvh: Public structures
Structure, bvh-iterator: Private structures
Structure, bvh-node: Private structures
Structure, container: Public structures
Structure, grid: Public structures
Structure, kd-tree: Public structures
Structure, node: Private structures
Structure, quadtree: Public structures
Structure, quadtree-iterator: Private structures
Structure, quadtree-node: Private structures
Structure, region: Public structures
Structure, sphere: Public structures
System, 3d-spaces: The 3d-spaces system

T
toolkit.lisp: The 3d-spaces/toolkit․lisp file