Well, if your array was 10x10 and each "block" is 10 wide, then your position would be:
100-(x*10)-5,10,(y*10)-5
The -5's are there to get a central point, as when objects are position it is the centre that is positioned.
With that code I get no gaps.
Now, onto collision.
Automatic camera does nothing except not work over here so you will have to have a workaround. With DBP this is easy, quick and fast:
rem Set collision
set global collision on
rem make sphere for camera collision
make object sphere 1,3
hide object 1
rem 3D VIEW OF LEVEL----------------------------------------------
do
oldx# = camera position x()
oldz# = camera position z()
control camera using arrowkeys 0,2,3
rem position collision sphere at camera
position object 1,camera position x(),camera position y(),camera position z()
rem collision
if object collision(1,0)>0 then POSITION CAMERA oldx#,10,oldz#
sync
loop
Basically you make a sphere to go round the camera and position this at the camera. Then check for collision with this sphere. Checking for collision with the camera's position is too late as when the camera overlaps a shape it will be able to see inside.
Hope this helps.
I love Star Trek.
Especially the Episodes with Starships in.