Example #1
0
    public void GetAllNodesTest(int svoNum)
    {
        SVO svo = svos[svoNum];

        int    svoSize        = 0;
        string expectedOutput = "SVO Output for sample type FlatGround, size 0: [Node, Position (-1.0000, -1.0000, -1.0000), Size: 2, Leaf: False, Level: 1], [Node, Position (-1.0000, -1.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, -0.5000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-1.0000, -0.5000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-0.5000, -0.5000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-0.5000, -0.5000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-1.0000, -1.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, -0.5000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-1.0000, -0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-0.5000, -0.5000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-0.5000, -0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, -1.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, -0.5000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, -0.5000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, -0.5000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, -0.5000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, -1.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, -0.5000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, -0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, -0.5000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, -0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2] |||||| SVO Output for sample type Sphere, size 1: [Node, Position (-1.0000, -1.0000, -1.0000), Size: 2, Leaf: False, Level: 1], [Node, Position (-1.0000, -1.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, -1.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, -0.7500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, -0.7500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -0.5000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, -0.5000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, -0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-1.0000, -0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -0.2500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -0.2500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, -0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -1.0000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -0.7500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.7500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -1.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -1.0000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.7500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -1.0000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -1.0000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.5000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -0.5000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.2500, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.5000, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.2500, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -1.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, -1.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, -0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, -0.7500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-1.0000, -0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, -0.5000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -0.5000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, -0.5000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, -0.2500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -1.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -1.0000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.7500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -1.0000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -1.0000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -1.0000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -0.7500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.7500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.5000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -0.5000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.2500, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.5000, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.2500, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, 0.0000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, 0.0000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, 0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-1.0000, 0.0000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.0000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.2500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, 0.2500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, 0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, 0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.0000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.0000, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.0000, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.2500, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.5000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.5000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.5000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.7500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.7500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.7500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, 0.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-1.0000, 0.0000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.0000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, 0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.0000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, 0.0000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, 0.2500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, 0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, 0.5000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.0000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.0000, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.2500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.0000, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.2500, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.5000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.7500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.5000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.5000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.5000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -1.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, -1.0000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -0.7500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.7500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -1.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -1.0000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -1.0000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -1.0000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.7500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.5000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -0.5000, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.2500, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.5000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.2500, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -1.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, -0.7500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.7500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.5000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, -0.5000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, -0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, -0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, -0.2500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, -0.2500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -1.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, -1.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -1.0000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -1.0000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -1.0000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.7500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -1.0000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -0.7500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.7500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.5000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -0.5000, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.2500, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.5000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.2500, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -1.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, -0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.7500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, -0.5000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, -0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, -0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, -0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.5000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, -0.5000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.2500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, 0.0000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.0000, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.2500, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.0000, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.5000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.5000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.5000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.7500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.7500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.7500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.0000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, 0.0000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, 0.2500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, 0.0000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, 0.0000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, 0.2500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, 0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, 0.0000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.0000, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.2500, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.0000, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.2500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.7500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.5000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.5000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.5000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.5000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, 0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, 0.0000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, 0.0000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.7500, 0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.0000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, 0.0000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.2500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, 0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.5000, 0.2500), Size: 0.25, Leaf: True, Level: 3] |||||| SVO Output for sample type Simplex, size 0: [Node, Position (-1.0000, -1.0000, -1.0000), Size: 2, Leaf: False, Level: 1], [Node, Position (-1.0000, -1.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, -0.5000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-0.5000, -1.0000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-1.0000, -1.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, -0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-0.5000, -1.0000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-0.5000, -0.5000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-0.5000, -0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-1.0000, 0.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, 0.0000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-1.0000, 0.0000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-1.0000, 0.5000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-1.0000, 0.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, 0.0000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-1.0000, 0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (-0.5000, 0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, -1.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, -1.0000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, -0.5000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, -0.5000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, -1.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, -1.0000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, -0.5000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, -1.0000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, -1.0000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, -0.5000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, -0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, 0.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, 0.0000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, 0.0000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, 0.5000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, 0.5000, -0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, 0.5000, -1.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, 0.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, 0.0000, 0.0000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, 0.0000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.0000, 0.5000, 0.5000), Size: 0.5, Leaf: True, Level: 2], [Node, Position (0.5000, 0.0000, 0.5000), Size: 0.5, Leaf: True, Level: 2] |||||| SVO Output for sample type RotatedCuboid, size 1: [Node, Position (-1.0000, -1.0000, -1.0000), Size: 2, Leaf: False, Level: 1], [Node, Position (-1.0000, -1.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, -1.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, -0.7500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, -0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, -0.2500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -1.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -0.7500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.7500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.5000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -0.5000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.2500, -1.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.2500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, -1.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, -0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, -0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, -0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -1.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, -0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, -0.5000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, -0.5000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.2500, -0.2500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-0.5000, 0.0000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.2500, 0.0000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.0000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.0000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.2500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.2500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-1.0000, 0.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (-1.0000, 0.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.7500, 0.0000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, 0.0000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, 0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.7500, 0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.5000, 0.0000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (-0.5000, 0.0000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (-0.2500, 0.0000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -1.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, -0.5000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.2500, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, -0.5000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.2500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, -0.2500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -1.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, -1.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.7500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.7500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.7500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.2500, -0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.5000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, -0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.5000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, -0.5000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, -0.2500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.0000, -1.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, 0.0000, -1.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.0000, -0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.2500, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.0000, -0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.2500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.5000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.5000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.0000, -0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, 0.0000, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.2500, -0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.0000, 0.0000), Size: 1, Leaf: False, Level: 1], [Node, Position (0.0000, 0.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.0000, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.2500, 0.2500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.0000, 0.5000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.0000, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.0000, 0.7500), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.2500, 0.5000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.0000, 0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.0000, 0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.2500, 0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.0000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, 0.0000, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.2500, 0.0000), Size: 0.25, Leaf: True, Level: 3], [Node, Position (0.5000, 0.5000, 0.0000), Size: 0.5, Leaf: False, Level: 2], [Node, Position (0.5000, 0.5000, 0.0000), Size: 0.25, Leaf: True, Level: 3] |||||| ";
        string output         = "";

        UtilFuncs.Sampler[] samplers = new UtilFuncs.Sampler[] {
            SampleFunctions.functions[(int)SampleFunctions.Type.FlatGround],
            SampleFunctions.functions[(int)SampleFunctions.Type.Sphere],
            SampleFunctions.functions[(int)SampleFunctions.Type.RotatedCuboid],
            SampleFunctions.functions[(int)SampleFunctions.Type.Simplex],
        };


        foreach (SampleFunctions.Type type in SampleFunctions.Type.GetValues(typeof(SampleFunctions.Type)))
        {
            UtilFuncs.Sampler sample = SampleFunctions.functions[(int)type];

            if (sample != null)
            {
                svo.Create(sample, svoSize + 3);

                string svoOutput = "SVO Output for sample type " + type.ToString() + ", size " + svoSize + ": " + string.Join(", ", svo.GetAllNodes()) + " |||||| ";
                output += svoOutput;

                svoSize = (svoSize + 1) % 2;
            }
        }

        Assert.That(output, Is.EqualTo(expectedOutput).NoClip);
    }
Example #2
0
    public void RaytraceMultipleNodesTest(int svoNum)
    {
        SVO svo = svos[svoNum];

        Ray[] rays = new Ray[6];
        rays[0] = new Ray(new Vector3(-0.6538f, 0.0000f, 0.0000f), new Vector3(0.9999f, 0.0091f, 0.0083f));
        rays[1] = new Ray(new Vector3(-1.2281f, -0.0238f, 0.0000f), new Vector3(0.9998f, 0.0174f, 0.0062f));
        rays[2] = new Ray(new Vector3(1.1388f, -0.0238f, 0.0000f), new Vector3(-0.9588f, 0.2678f, 0.0950f));
        rays[3] = new Ray(new Vector3(1.1388f, -0.0238f, -0.3106f), new Vector3(-0.3909f, 0.1092f, 0.9139f));
        rays[4] = new Ray(new Vector3(1.1388f, -0.4569f, -0.3106f), new Vector3(-0.8954f, 0.3670f, 0.2523f));
        rays[5] = new Ray(new Vector3(0.3325f, 0.3350f, 0.4438f), new Vector3(-0.5412f, -0.5020f, -0.6746f));

        string[] strings = new string[6];
        strings[0] = "[Node, Position (0.8750, 0.0000, 0.0000), Size: 0.125, Leaf: True, Level: 4]";
        strings[1] = "[Node, Position (-1.0000, -0.1250, 0.0000), Size: 0.125, Leaf: True, Level: 4][Node, Position (0.8750, 0.0000, 0.0000), Size: 0.125, Leaf: True, Level: 4]";
        strings[2] = "[Node, Position (0.8750, 0.0000, 0.0000), Size: 0.125, Leaf: True, Level: 4][Node, Position (-0.7500, 0.5000, 0.1250), Size: 0.125, Leaf: True, Level: 4]";
        strings[3] = "[Node, Position (0.8750, 0.0000, 0.0000), Size: 0.125, Leaf: True, Level: 4][Node, Position (0.8750, 0.0000, 0.1250), Size: 0.125, Leaf: True, Level: 4][Node, Position (0.8750, 0.0000, 0.2500), Size: 0.125, Leaf: True, Level: 4][Node, Position (0.7500, 0.0000, 0.3750), Size: 0.125, Leaf: True, Level: 4][Node, Position (0.7500, 0.0000, 0.5000), Size: 0.125, Leaf: True, Level: 4][Node, Position (0.6250, 0.0000, 0.6250), Size: 0.125, Leaf: True, Level: 4]";
        strings[4] = "[Node, Position (0.7500, -0.3750, -0.2500), Size: 0.125, Leaf: True, Level: 4][Node, Position (-0.8750, 0.2500, 0.1250), Size: 0.125, Leaf: True, Level: 4][Node, Position (-0.8750, 0.2500, 0.2500), Size: 0.125, Leaf: True, Level: 4]";
        strings[5] = "[Node, Position (-0.6250, -0.5000, -0.7500), Size: 0.125, Leaf: True, Level: 4]";

        for (int i = 0; i < rays.Length; i++)
        {
            string         result = "";
            List <SVONode> nodes  = svo.Trace(rays[i]);
            foreach (SVONode n in nodes)
            {
                result += n.ToString();
            }

            Assert.That(strings[i], Is.EqualTo(result));
        }
    }
Example #3
0
        void UpdateSVO()
        {
            return;

            if (svoType == SVOType.CompactSVO)
            {
                svo = new CompactSVO(SampleFunctions.functions[(int)sampleType], maxLevel);
            }
            else if (svoType == SVOType.NaiveSVO)
            {
                svo = new NaiveSVO(SampleFunctions.functions[(int)sampleType], maxLevel);
            }
            debugBoxes = svo.GetAllNodes()
                         .Where(node => node.level <= upperNodeDrawBound && node.level >= lowerNodeDrawBound)
                         .Select(node => node.GetColoredBox());
        }