Ejemplo n.º 1
0
        public static List <DS.Surface> SurfacesFromPointAndDirection(List <DS.Surface> surfaces, DS.Point viewPoint, DS.Point targetPoint)
        {
            DS.Vector         viewVector      = DS.Vector.ByTwoPoints(viewPoint, targetPoint).Normalized();
            List <DS.Surface> visibleSurfaces = new List <DS.Surface>();

            foreach (var surface in surfaces)
            {
                DS.Vector normal = surface.NormalAtParameter(0.5, 0.5);
                double    dot    = normal.Dot(viewVector);
                if (Math.Round(dot, 6) <= 0)
                {
                    visibleSurfaces.Add(surface);
                }
            }

            return(visibleSurfaces);
        }