Ok here's something rough...very rough but you get the idea?
cls rgb(100,20,100)
ink rgb(20,200,20),0
box 2,2,30,30
get image 1,0,0,32,32
bridge_width#=100
bridge_length#=1000
bridge_height#=250
accuracy=20
curve=10
height#=0.0
make matrix 2,bridge_width#,bridge_length#,1,accuracy
for y=0 to accuracy
height#=curvevalue(bridge_height#,height#,curve)
set matrix height 2,0,y,height#
set matrix height 2,1,y,height#
next y
prepare matrix texture 2,1,1,1
update matrix 2
make object sphere 1,40
position object 1,50,0,0
color object 1,rgb(255,0,0)
position camera 200,50,200
move camera -500
point camera 0,0,0
s#=object size y(1)/2
do
xrotate object 1,2.0
x#=object position x(1)
y#=object position y(1)
z#=object position z(1)
if y#<>get ground height(2,x#,z#)+s#
y#=get ground height(2,x#,z#)+s#
position object 1,x#,y#,z#
endif
move object 1,6
loop
ZX Spectrum 48k Issue 3, Radio shack Tape drive, Rank arena 12" T.V. set.