Thread: Bullet Whizz
View Single Post
KoST
Senior Member
Join Date: Jul 2005
Old 06-14-2006 , 15:42  
Reply With Quote #8

[edit]

Code:
--------------<Aim>-------------- plane 1
                ^
                |
                | (me_aim vector)
                |
                |
--------------<Me>-------------- plane 2
you can imagine this like two planes which have me_aim as normal vector. this stock only returns positive values if victim is between them. no need to check for visibility i guess..

Code:
stock get_distance_to_line(Float:pos_start[3], Float:pos_end[3], Float:pos_object[3]) {     new Float:vec_start_end[3], Float:vec_start_object[3], Float:vec_end_object[3], Float:vec_end_start[3]     xs_vec_sub(pos_end, pos_start, vec_start_end) // vector from start to end     xs_vec_sub(pos_object, pos_start, vec_start_object) // vector from end to object     xs_vec_sub(pos_start, pos_end, vec_end_start) // vector from end to start     xs_vec_sub(pos_end, pos_object, vec_end_object) // vector object to end         new Float:len_start_object = getVecLen(vec_start_object)     new Float:angle_start = floatacos(xs_vec_dot(vec_start_end, vec_start_object) / (getVecLen(vec_start_end) * len_start_object), degrees)     new Float:angle_end = floatacos(xs_vec_dot(vec_end_start, vec_end_object) / (getVecLen(vec_end_start) * getVecLen(vec_end_object)), degrees)     if(angle_start <= 90.0 && angle_end <= 90.0)         return floatround(len_start_object * floatsin(angle_start, degrees))     return -1 }

it checks if alpha and beta are <=90 degrees if c is victim. if one of them is larger then we are outside the planes.
__________________
KoST is offline