


@ 26,7 +26,7 @@










author: Miloslav "drummyfish" Ciz





license: CC0 1.0





version: 0.907





version: 0.908





*/










#include <stdint.h>




@ 825,18 +825,21 @@ void RCL_castRayMultiHit(RCL_Ray ray, RCL_ArrayFunction arrayFunc,










#if RCL_RECTILINEAR





/* Here we compute the fish eye corrected distance (perpendicular to





the projection plane) as the Euclidean distance divided by the length





of the ray direction vector. This can be computed without actually





computing Euclidean distances as a hypothenuse A (distance) divided





by hypothenuse B (length) is equal to leg A (distance along one axis)





divided by leg B (length along the same axis). */





the projection plane) as the Euclidean distance (of hit from camera





position) divided by the length of the ray direction vector. This can





be computed without actually computing Euclidean distances as a





hypothenuse A (distance) divided by hypothenuse B (length) is equal to





leg A (distance along principal axis) divided by leg B (length along





the same principal axis). */










h.distance =





(((h.position.x  ray.start.x) / 4) *





RCL_UNITS_PER_SQUARE * rayDirXRecip)





/ (RECIP_SCALE / 4);





#define CORRECT(dir1,dir2)\





RCL_Unit tmp = diff / 4; /* 4 to prevent overflow */ \





h.distance = ((tmp / 8) != 0) ? /* prevent a bug with small dists */ \





((tmp * RCL_UNITS_PER_SQUARE * rayDir ## dir1 ## Recip) / (RECIP_SCALE / 4)):\





RCL_abs(h.position.dir2  ray.start.dir2);










CORRECT(X,y)










// ^ / 4 is here to prevent overflow





#endif





}





else




@ 856,10 +859,10 @@ void RCL_castRayMultiHit(RCL_Ray ray, RCL_ArrayFunction arrayFunc,





ray.start.x + (ray.direction.x * diff * rayDirYRecip) / RECIP_SCALE;










#if RCL_RECTILINEAR





h.distance =





(((h.position.y  ray.start.y) / 4) *





RCL_UNITS_PER_SQUARE * rayDirYRecip)





/ (RECIP_SCALE / 4);










CORRECT(Y,x) // same as above but for different axis










#undef CORRECT










// ^ / 4 is here to prevent overflow





#endif




