C3D.get_3d_point |
Value = C3D.get_3d_point( Fid AS HANDLE, nFrameNo AS INTEGER, nPointNo AS INTEGER, nItem AS INTEGER ) AS VARIAMT
nStatus = C3D.get_3d_point( Fid AS HANDLE, nFrameNo AS INTEGER, nPointNo AS INTEGER, outArr AS REFERENCE ) AS INTEGER
The first syntax returns the 3D point value specified by nItem.
Defined Constants for nItem. Note; You can only use one at a time wit this function
CONST C3D_ITEM_X = 0x00000001 ' Return Pos X as REAL CONST C3D_ITEM_Y = 0x00000002 ' Return Pos Y as REAL CONST C3D_ITEM_Z = 0x00000004 ' Return Pos Z as REAL CONST C3D_ITEM_RESID = 0x00000008 ' Residuals as REAL CONST C3D_ITEM_MASK = 0x00000010 ' Camera Mask as INTEGER
The second syntax returns the 3D point value in an array of REAL. The values returned depends on the dimension of the REAL array. The array should be declared as one of the following
DIM outArr( 1 ) AS REAL ' Returns Pos X + DIM outArr( 2 ) AS REAL ' Returns Pos Y + DIM outArr( 3 ) AS REAL ' Returns Pos Z + DIM outArr( 4 ) AS REAL ' Residual + DIM outArr( 5 ) AS REAL ' Camera Mask as INTEGER coded as REAL
Invalid 3D values will have the Residual set to -1 (C3D_INVALID_RESID) and then 3D data is set to 3.402823466e38 (C3D_INVALID_VALUE).
Example:
' Using the first Syntax s = FORMAT( "Frame %3d: %10.3f, %10.3f, %10.3f, %10.3f, 0x%08x", i,_ C3D.GET_3D_POINT( fid, i, 1, C3D_item_x ),_ C3D.GET_3D_POINT( fid, i, 1, C3D_item_y ),_ C3D.GET_3D_POINT( fid, i, 1, C3D_item_z ),_ C3D.GET_3D_POINT( fid, i, 1, C3D_item_resid ),_ C3D.GET_3D_POINT( fid, i, 1, C3D_item_mask ) ) ' Second Syntax DIM p(5) AS REAL
IF C3D.GET_3D_POINT( hFid, i, 1, REF( p ) ) = C3D_SUCCESS THEN s = FORMAT( "Frame %3d: %10.3f, %10.3f, %10.3f, %10.3f, 0x%08x", i, p(0), p(1), p(2), p(3), INT( p(4) ) ) ENDIF
|