VARKON Version 1.16 1998-04-27
all_int_lin_msur - Function
Calculates all intersects between a line and multiple surfaces
Description.
This function calculates all intersects between a line and multiple surfaces. It is basically the same routine as all_int_lin_sur() but with the difference that it operates on a set of surfaces instead of one single surface.all_int_lin_sur() should be used when only one surface is involved and you want to speed up computations by supplying an approximate start value. all_int_lin_msur() does not take a start value as input.
all_int_lin_msur() should be used when multiple surfaces are involved. It will then compute faster than if all_int_lin_sur() was called indivudually for each surface.
Syntax
all_int_lin_msur(sur_in, nsur, p, v, order, nint, uv, xyz, sur_out)
REF sur_in(); INT nsur; VECTOR p; VECTOR v: INT order; INT nint; VECTOR uv( ); VECTOR xyz( ); REF sur_out( ); Principal parameters
su_in - Array of surface id:s nsur - Number of surfaces p - Line start position v - Direction of the line order - Method for the ordering of intersect points. Ordering is always with respect to the distance to the input R*3 point p
but solution points will be omitted for the different cases.
Eq. 1: All intersect points
Eq. 2: Only intersect points in the v (shooting) direction
Eq. 3: As 2 but only intersect points with surface normals that have the same direction as
the v vector (the shooting direction)
Eq. 4: As 2 but only intersect points with surface normals that are in the opposite
direction as the v vector (the shooting direction)
Eq. 5: As 3 but the number of solutions will be zero ( 0 ) if the first solution point has a
surface normal that is in the opposite direction compared to vector v (the shooting
direction)
Eq. 6: As 3 but the number of solutions will be zero ( 0 ) if the first solution point has a
surface normal that is in the same direction as the vector v
nint - Number of output intersects. Optional parameters
uv - Array with output (U,V)-values xyz - Array with corresponding R*3 (X,Y,Z)-values sur - Array with corresponding surface id:s Example
REF sur_in(2);
INT nint;
VECTOR uv (10);sur_in(1) := #5;
sur_in(2) := #35;
all_int_lin_msur(sur_in, 2, vec(100,20,30), vec(1,0,0), 2, nint, uv);
Calculates all intersects between the line defined by point (100,20,30) and the vector (1,0,0)
and the surfaces #5 and #35. All nint intersects in the shooting direction are returned in uv.
VARKON Homepage | Index |