Hello.. I have translated a freebasic Code to o2 only the Print result makes trouble.
' inBetween exists for 3 variants, one dimensional number line ,
' for 2-dimensional also for a 3-dimensional field.
' oxygen
uses console
TYPE Coord
X AS DOUBLE
Y AS DOUBLE
END TYPE
TYPE Vector
X AS DOUBLE
Y AS DOUBLE
Z AS DOUBLE
END TYPE
dim cr as string = chr(13,10)
FUNCTION InBetween1D(A AS DOUBLE, B AS DOUBLE, P AS DOUBLE) AS BYTE
IF A < B THEN
IF (A <= P) AND (P <= B) THEN
RETURN -1
ELSE
RETURN 0
END IF
ELSEIF A > B THEN
IF (B <= P) AND (P <= A) THEN
RETURN -1
ELSE
RETURN 0
END IF
END IF
END FUNCTION
FUNCTION InBetween2D(A AS Coord, B AS Coord, P AS Coord) AS BYTE
IF inBetween1D(A.X, B.X, P.X) THEN
IF inBetween1D(A.Y, B.Y, P.Y) THEN
RETURN -1
ELSE
RETURN 0
END IF
ELSE
RETURN 0
END IF
END FUNCTION
FUNCTION InBetween3D(A AS Vector, B AS Vector, P AS Vector) AS BYTE
IF inBetween1D(A.X, B.X, P.X) THEN
IF inBetween1D(A.Y, B.Y, P.Y) THEN
IF inBetween1D(A.Z, B.Z, P.Z) THEN
RETURN -1
ELSE
RETURN 0
END IF
ELSE
RETURN 0
END IF
ELSE
RETURN 0
END IF
END FUNCTION
'test
dim ax as vector
'PRINT InbetWeen3D(ax.x(10,10,10),ax.y(20,20,20),ax.z(15,15,9)) cr ' no go
' how to translate this function including a type statement ? better using a class ?
PRINT InBetween3D(ax(10,10,10),ax(20,20,20),ax(15,15,9)) cr
PRINT InBetween3D(ax(10,10,10),ax(20,20,20),ax(15,15,15)) cr
PRINT InBetween3D(ax(10,10,10),ax(20,20,20),ax(15,15,8)) cr
' original code below freebasic
'PRINT InbetWeen3D(TYPE(10,10,10),TYPE(20,20,20),TYPE(15,15,9)) ' 0 'out
'PRINT InbetWeen3D(TYPE(10,10,10),TYPE(20,20,20),TYPE(15,15,15)) ' -1 'in
'PRINT InBetween3D(TYPE(10,10,10),TYPE(20,20,20),TYPE(15,15,8)) ' 0 'out
print "ok"
wait
Hi Frank,
It needs to be split:
'dim ax as vector
dim as vector v1,v2,v3
v1={10,10,10}
v2={20,20,20}
v3={15,15,19} 'was{15,15,19}
print Inbetween3d (v1,v2,v3) cr '255
print Inbetween3d (v1,v3,v2) cr '0