vectors
	operations:
		*
		x
		+
		-
		<
matrices (with extended matrices) (at least 4x4).
perspective correction
textures
3D ooz triangle texture mapping.
2D blitting with alpha transparency.
mipmapping.
area cache.

world:
	coordinate system? Zylinder | Cartesian | Spherical. Newton is using Cartesian.
	euclidian vector space?
	current time.
	total energy.
	array of fields.
	field:
		kind = spherical|?
		center = ?
		force = math-function.

	array(map?) of objects (with refcount??)

	object (mutable by its own translation or rotation?):
		charge?
		potential energy (per field?).
		impulse.
		mass.
		[derived: kinetic energy = p²/2m]
		how can the object change (in size, form... etc)? How stable is it?
		how can the object move? can only parts of the object move?
		object symmetry?
		where is the object('s center of gravity?) in the world.
		which direction does the object currently face (unit vector, not some arbitrary angle).
		array of triangles.
		triangle:
			texture-ref
			vector-refs(??? + try-locked projection cache) (3).
			normal vector.

projection:
	world
	array of views (per eye).
	view:
		focus (z+ )
		position in world
		direction facing in world
		projection cache[vector] => projection (if that makes sense?).