- #1

wiyosaya

- 8

- 1

I have multiple sets of 3, 3D (x, y, z) points in space. They are fixed points in space, and I cannot move them. Each point is weighted with a pressure value. I need to be able to determine if point 1 can view point 3 given that point 2 might prevent point 1 from viewing point 3.

What I am attempting to do is write a triangulation algorithm, only I have to create the triangles between points that are fixed. I cannot move them. The result should look as close as possible to a contour map.

If I look at the system of points as if it were flattened, point 3 might be either too far left or right of point 2 such that drawing a triangle edge either too far left or too far right of point 2 will overlap an edge from an existing triangle, and that causes an incorrect triangulation.

For example, I am using C#, and the Vector3D class, and I figured that I might be able to use the "AngleBetween" function to calculate the angles between point 1 and point 3, and point 1 and point 2 and then determine if the angles are such that point if the angle between point 3 is greater than the angle between point 2, then point 1 will not be able to triangulate with point 3 properly. However, the angle calculated by the AngleBetween function does not give angles that consistently indicate the viewability of point 3 from point 1 given that point 2 might be obstructing. I assume that the AngleBetween function is not calculating the angle that would allow me to solve this problem.

I have had a course in linear algebra, however, I do not use it regularly, so I am having difficulty in determining what to do to make the program work as I would like it to.

Does anyone have an idea how this might be solved? I am really looking for suggestions as to how to set up this problem mathematically as opposed to how to program it in C#, or any language, for that matter. The mathematics is what I need help with, not the programming language.

Thanks in advance.