# Blob conversion

## Read original documentation

Understand how the Wyvill paper uses data structures, in particular - the relationship between big and small cubes.

This will help decide on key objects and methods. UML diagrams?

## Decide on objects

Use the CRC card method - what are the key objects and methods? Remember to use the OO approach throughout.

Remember to separate BcubeTable from a BcubeList. In fact BcubeTable should be renamed BcubeListTable.

## Define relationship between big cubes and little cubes.

See page 7, section 6.3.2 in 'Soft Objects and Iso-surface modelling'. The big cubes ('voxels') are used to speed up the calculating the field value of the smaller cubes (Vquints or small voxels). For any small cube we are only interested in the the Keypoints that can influence the field values of the small cubes vertices. But how to determine which Keypoints lie within range R of any Keypoint. This is where the larger cubes/voxels come in. We keep a hash of list of Big cubes. See Fig. 2 page 230 of the Wyvill paper. The hash consists of an integer index to a Big cube which is a Linked List of Keypoints that **are** within range of the Big cube. As any given small cube/Vquint fits **exactly** into a Big cube (because the size of a Big Cube S is a multiple of the Small Cube size D), then any small cube that is not within a big cube affected by Keypoint k, cannot be affected by it. This saves checking for the field value for all Keypoints for any given small cube. Of course it does **not** follow that because a given small cube **is** inside a big cube affected by a Keypoint k, then it too must also be affected. Some small cubes will be affected, some small cubes will not.

### Small to Big cube index Conversion

Test that when you create small cube/Vquint, the index of the enclosing Big cube is correct. That is the key to matching the 2 co-ordinate systems.

# Rendering

## Blender

## OpenGL

## SurfaceCube

This should be a LinkedList as you need to be able to add to it as you are looping thru it. Check and see if SurfaceCube is still implemented as a LinkedList and restore. SurfaceCube is not simply a SmallCube because the this fact.