home *** CD-ROM | disk | FTP | other *** search
- REM name: twoptsvw.cdl
-
- REM date: 030589 simon izraelevitz
-
- REM task: Creates Line of Sight view along two given points
- REM The positive side of the view is the side of the first
- REM selected point.
-
- REM -----------------------------------------------
-
- CLEAR
- ARRAY vm[9]
- minval = .00005
-
- SET mask,1
- :ind_pt1
- REM *** get first point
- defpos = 3
- GETPOS "Indicate first point", defpos
- IF (@KEY <= -2)
- GOTO exit
- p1wx = @XWORLD
- p1wy = @YWORLD
- p1wz = @ZWORLD
-
- :ind_pt2
- REM *** get second point
- defpos = @KEY
- GETPOS "Indicate second point", defpos
- ON (@KEY + 3) GOTO exit,ind_pt1,
- p2wx = @XWORLD
- p2wy = @YWORLD
- p2wz = @ZWORLD
-
- :vect_def
- REM *** define view along axis line
- dx = p2wx - p1wx
- dy = p2wy - p1wy
- dz = p2wz - p1wz
- magn = sqrt(dx*dx + dy*dy + dz*dz)
- IF (magn < minval)
- GOTO error1
- vm[2] = dx/magn
- vm[5] = dy/magn
- vm[8] = dz/magn
-
- CALL dotprod, vm[2],vm[5],vm[8],1,0,0,dotx
- CALL dotprod, vm[2],vm[5],vm[8],0,1,0,doty
- IF (abs(dotx) <= abs(doty))
- GOTO crossx
- GOTO crossy
-
- :crossx
- CALL cross, dx,dy,dz,vm[2],vm[5],vm[8],1,0,0
- magn = sqrt(dx*dx + dy*dy + dz*dz)
- vm[0] = dx/magn
- vm[3] = dy/magn
- vm[6] = dz/magn
- GOTO y_axis
-
- :crossy
- CALL cross, dx,dy,dz,vm[2],vm[5],vm[8],0,1,0
- magn = sqrt(dx*dx + dy*dy + dz*dz)
- vm[0] = dx/magn
- vm[3] = dy/magn
- vm[6] = dz/magn
-
- :y_axis
- CALL cross, vm[1],vm[4],vm[7],vm[2],vm[5],vm[8],vm[0],vm[3],vm[6]
- VIEW 1,vm[0],vm[1],vm[2],vm[3],vm[4],vm[5],vm[6],vm[7],vm[8]
-
- PROMPT "View number %d has been created ...",@LASTVW
- WAIT 2
- GOTO exit
-
- :error1
- PROMPT " Points are coincidental. Please, select again"
- WAIT 2
- GOTO ind_pt1
-
- :exit
- SET mask
- EXIT