Class Terrain-Node

A terrain node in the bisecting quad tree.
The *terrain-root* is the master root node for these.
There are nodes in the hierachy all the way down to ‘master’ level,
then ‘master’ node has a terrain-patch associated with it to contain the actual geometry
at various levels of detail.

Part of:

package terrain

Slot

childrenType:(simple-array terrain-node (4)).
cull-centre
The the vertex which lies at the midpoint in the x-y plane and mid-way between the highest and lowest actual z values of other vertices (I think it only looks at the current value, probably not all children at the moment).
Initform:(make-array 3 element-type 'single-float); Type:(simple-array single-float (3)).
cull-radius
The distance between the cull-centre and the furthest vertex in this node's vertices (just the corners of this node, again, I think, and not the childrens' geometry.
Type:single-float.
east
Neighbour patch to the east.
Accessors:east-of; Type:terrain-patch.
height
The base height for this node. These will be all the same for each other node in the same hierachical level. Each successive level has half of the height of the former. Ie. root node level 0 has *base-height*, level 1 *base-height*/2, level 2 *base-height*/4, etc.
Initform:*base-height*, Initargs::height; Type:single-float.
level
The level of this node in the hierachy, 0 is root, 1 next, etc.
Initform:0; Accessors:level; Type:integer.
master
Whether this node is at the ‘master’ level, ie. has a terrain patch. This might not be necessary actually, as we could just check whether or not terrain-patch is bound.
Initargs::master; Accessors:master; Type:boolean.
ne
The coordinate location of the actual north-east vertex of this node. The z value has been ‘compressed’ here.
Initform:(make-array 3 element-type 'single-float); Type:(simple-array single-float (3)).
north
Neighbour patch to the north.
Accessors:north-of; Type:terrain-patch.
nw
The coordinate location of the actual north-west vertex of this node. The z value has been ‘compressed’ here.
Initform:(make-array 3 element-type 'single-float); Type:(simple-array single-float (3)).
rne
The raw ‘seed’ or ‘uncompressed’ heightmap value for the north-east vertex of the node. Used to calculate child heights.
Type:single-float.
rnw
The raw ‘seed’ or ‘uncompressed’ heightmap value for the north-west vertex of the node. Used to calculate child heights.
Type:single-float.
rse
The raw ‘seed’ or ‘uncompressed’ heightmap value for the south-east vertex of the node. Used to calculate child heights.
Type:single-float.
rsw
The raw ‘seed’ or ‘uncompressed’ heightmap value for the south-west vertex of the node. Used to calculate child heights.
Type:single-float.
se
The coordinate location of the actual south-east vertex of this node. The z value has been ‘compressed’ here.
Initform:(make-array 3 element-type 'single-float); Type:(simple-array single-float (3)).
south
Neighbour patch to the south.
Accessors:south-of; Type:terrain-patch.
sw
The coordinate location of the actual south-west vertex of this node. The z value has been ‘compressed’ here.
Initform:(make-array 3 element-type 'single-float); Type:(simple-array single-float (3)).
terrain-patch
The terrain patch related to this node.
Initargs::terrain-patch; Accessors:terrain-patch-of; Type:terrain-patch.
west
Neighbour patch to the west.
Accessors:west-of; Type:terrain-patch.
x
The longitudinal index of this node in its level.
Initform:0, Initargs::x; Reader:x; Type:(unsigned-byte 16).
y
The latitudinal index of this node in its level.
Initform:0, Initargs::y; Reader:y; Type:(unsigned-byte 16).

Direct Method

for-each-visible-triangle
size-x
size-y
x
y