private IntersectionInfo GetFirstIntersection(Ray r) { IntersectionInfo result = null; double distance = Double.MaxValue; IEnumerator <IGraphicsObject3D> graphicsObjects = scene.GraphicsObjects; graphicsObjects.Reset(); while (graphicsObjects.MoveNext()) { IGraphicsObject3D obj = graphicsObjects.Current; IntersectionInfo info = obj.Intersection(r); if (info != null) { if (VectorOperations.Distance(info.CrossPoint, r.Origin) < distance) { distance = VectorOperations.Distance(info.CrossPoint, r.Origin); result = info; } } } return(result); }
public void AddGraphicsObject(IGraphicsObject3D obj) { graphicObjects.Add(obj); }