Exemple #1
0
        public ISurface Move(Vector3 v)
        {
            var res = new FlatPlane
            {
                _outer  = _outer.Select(edge => edge.Move(v)).ToList(),
                _inners = _inners
                          .Select(inner => inner.Select(edge => edge.Move(v)).ToList())
                          .ToList()
            };

            return(res);
        }
Exemple #2
0
        public Prism(FlatPlane plane, Vector3 backward, Vector3 forward)
        {
            _surfaces = new List <ISurface>();
            if (plane.Normal != (forward - backward).Normalize())
            {
                plane.Reverse();
            }
            _surfaces.AddRange(plane.Outer.Select(edge => new RuledSurface(edge, backward, forward)));
            _surfaces.AddRange(plane.Inners.SelectMany(inner => inner.Select(edge => new RuledSurface(edge, backward, forward))));
            _surfaces.Add(plane.Move(backward));
            var top = plane.Move(forward) as FlatPlane;

            top.Reverse();
            _surfaces.Add(top);
        }