Ben build matrix of surface normals

Needs unit testing. 
@benjaminlarson No need for this check, getRequired throws for null input. The correct replacement is 
```
if (needToExecute())
```
I'll make the change