Ejemplo n.º 1
0
        public FighterGeometry()
        {
            var nose            = new Nose(0.5f, 0.6f, 26, 0.4f);
            var cockpitFuselage = new CockpitFuselage(nose, 1.2f, 1.2f, 3f);
            var mainFuselage    = new MainFuselage(cockpitFuselage);
            var intake          = new EngineIntake(cockpitFuselage);
            var underside       = new Underside(intake);
            var canopy          = new Canopy(0.65f, 0.5f, 3f, 16);
            var wing            = new Wing(4.5f, 4.5f);
            var rear            = new Rear(mainFuselage, underside);
            var tailFin         = new TailFin();
            var stabilizer      = new Stabilizer();
            var exhaust         = new Exhaust(rear, 0.6f);
            var bottomFin       = new BottomFin();

            var path      = exhaust.FlangeEndXSection;
            var graySlide = new Vec3(1f).Interpolate(new Vec3(0f), path.Vertices.Length);

            path.Vertices.Color(graySlide);
            Paths = EnumerableExt.Enumerate(path);

            Fighter = Composite.Create(Stacking.StackBackward(cockpitFuselage.Fuselage, mainFuselage.Fuselage)
                                       .Concat(EnumerableExt.Enumerate(intake.Intake, intake.Belly, underside.Geometry, canopy.Geometry,
                                                                       wing.Geometry, wing.Geometry.ReflectX(), rear.Geometry, exhaust.Geometry,
                                                                       exhaust.StabilizerFlange, exhaust.StabilizerFlange.ReflectX(),
                                                                       tailFin.Geometry, stabilizer.Geometry, stabilizer.Geometry.ReflectX(),
                                                                       bottomFin.Geometry, bottomFin.Geometry.ReflectX())))
                      .Smoothen(0.85f)
                      .Center();
        }
Ejemplo n.º 2
0
            public Underside(EngineIntake intake)
            {
                var nodes =
                    from n in intake.RearXSection.ReverseWinding().Vertices
                    where n.position.Y <= -0.2f
                    select n;

                XSection = new Path <P, Vec3> (nodes);
                var firstNode = XSection.Vertices.First();
                var paths     =
                    from s in EnumerableExt.Range(0f, 4f, 1f)
                    let scaleFactor = (0.15f * s).Pow(2f)
                                      select XSection.Transform(
                        Mat.Translation <Mat4> (0f, 0f, -s) *
                        Mat.Scaling <Mat4> (1f - (scaleFactor * 0.25f), 1f - scaleFactor, 1f)
                        .RelativeTo(new Vec3(0f, firstNode.position.Y, 0f)));

                RearXSection = paths.Last();
                Geometry     = paths.Extrude <V, P> (false, false)
                               .Color(_color);
            }