Here's a program I wrote to show you what's going on. It still has some bugs but it should give you the idea. The equation the top refers to is
Distance * 2D Radius = K
2D radius is how big the 3d object is on your screen from the center of the object. I used my mouse position to calculate this. Here's the program:
`DOING THE EQUATION I GOT 341 AND 301 AS THE ENDPOINTS OF THE 2D CIRCLE MADE UP BY THE 3D SPHERE. I GOT THIS BY
`SETTING THE MOUSE AT THE ENDPOINTS OF THE SPHERE AND PRINTING THE MOUSE POSITION ON THE SCREEN. THEREFORE
`THE RADIUS IS`.5(341-301)=25 AT A DISTANCE OF 40 (EQUATION SHOWN BELOW). MY K IS THEREFORE =25*40=1000.
`THEREFORE, AT ANY DISTANCE MY 2D RADIUS OF THE OBJECT IS 1000/DISTANCE.
`SELECTSTATE - TRUE IF SPHERE "SELECTED"
SYNC ON
AUTOCAM OFF
MAKE OBJECT SPHERE 1,5
POSITION OBJECT 1,0,0,0
POSITION CAMERA 30,30,30
POINT CAMERA 0,0,0
SELECTSTATE=0
DO
DISTANCE=SQRT((CAMERA POSITION X()-OBJECT POSITION X(1))^2+(CAMERA POSITION Y()-OBJECT POSITION Y(1))^2+(CAMERA POSITION Z()-OBJECT POSITION Z(1))^2)
K=1000/DISTANCE
SET CURSOR 0,0
PRINT "MOUSE POSITION X> ",MOUSEX()
PRINT "MOUSE POSITION Y> ",MOUSEY()
PRINT "DISTANCE> ",DISTANCE
IF MOUSECLICK()=1
IF MOUSEX()<OBJECT SCREEN X(1)+K AND MOUSEX()>OBJECT SCREEN X(1)-K AND MOUSEY()<OBJECT SCREEN Y(1)+k AND MOUSEY()>OBJECT SCREEN Y(1)-K
SELECTSTATE=1
HIDE MOUSE
ELSE
SELECTSTATE=0
SHOW MOUSE
ENDIF
ENDIF
IF SELECTSTATE=1
POSITION OBJECT 1,OBJECT POSITION X(1)-MOUSEMOVEX(),OBJECT POSITION Y(1),OBJECT POSITION Z(1)-MOUSEMOVEY()
POSITION MOUSE OBJECT SCREEN X(1),OBJECT SCREEN Y(1)
ENDIF
SYNC
LOOP
Hope it helps.
"It's against my programming to impersonate a deity!"~C-3P0