I have an object, that is facing a particular direction with (for instance) a 45 degree field of view, and a limit view range. I have done all the initial checks (Quadtree node,
I've worked in the video game industry, and I can say that doing trig functions like arccos every frame is less than ideal. Instead, you precompute the cosine of the angle for the cone:
float cos_angle = cos(PI/4); // 45 degrees, for example
Then, each frame you can quickly check if a point falls inside that cone by comparing that with the dot product of the cone and the .
vector test_point_vector = normalize(test_point_loc - cone_origin);
float dot_product = dot(normalized_cone_vector, text_point_vector);
bool inside_code = dot_product > cos_angle;
There are no trig functions, just some multiplication, division, and addition. Most game engines have an optimized normalize() function for vectors.
This works because of this equation:
A · B = |A| * |B| * cos(Θ)
If you normalize the vectors (A -> An), the equation is simplified:
An · Bn = cos(Θ)