gloss-1.7.8.1: Painless 2D vector graphics, animations and simulations.

Safe HaskellNone

Graphics.Gloss.Algorithms.RayCast

Description

Various ray casting algorithms.

Synopsis

Documentation

castSegIntoCellularQuadTreeSource

Arguments

:: forall a .  
=> Point

(P1) Starting point of seg.

-> Point

(P2) Final point of seg.

-> Extent

Extent convering the whole tree.

-> QuadTree a

The tree.

-> Maybe (Point, Extent, a)

Intersection point, extent of cell, value of cell (if any).

The quadtree contains cells of unit extent (NetHack style). Given a line segement (P1-P2) through the tree, get the cell closest to P1 that intersects the segment, if any.

TODO: This currently uses a naive algorithm. It just calls traceSegIntoCellularQuadTree and sorts the results to get the one closest to P1. It'd be better to do a proper walk over the tree in the direction of the ray.

traceSegIntoCellularQuadTreeSource

Arguments

:: forall a .  
=> Point

(P1) Starting point of seg.

-> Point

(P2) Final point of seg.

-> Extent

Extent covering the whole tree.

-> QuadTree a

The tree.

-> [(Point, Extent, a)]

Intersection point, extent of cell, value of cell.

The quadtree contains cells of unit extent (NetHack style). Given a line segment (P1-P2) through the tree, return the list of cells that intersect the segment.