public Wing(float width, float length) { var botHalf = Quadrilateral <V> .Trapezoid(length, width, length * 0.75f, 0f) .ExtrudeToScale( depth: 0.1f, targetScale: 0.5f, steepness: 3f, numSteps: 5, includeFrontFace: false, scaleAround: new Vec3(length / 4f, -width / 2f, 0f)) .FilterVertices(v => !v.Facing(Dir3D.Down)); Geometry = Composite.Create( Stacking.StackForward(botHalf, botHalf.ReflectZ())) .RotateX(-MathHelper.PiOver2) .RotateY(MathHelper.PiOver2) .Translate(-2.7f, -0.25f, -7f) .Color(_color); }
public Stabilizer() { var half = Polygon <V> .FromVec2s( new Vec2 (-2f, 0.5f), new Vec2 (0f, 2f), new Vec2 (0f, -0.5f), new Vec2 (-1.75f, -0.5f), new Vec2 (-2f, -0.25f)) .ExtrudeToScale( depth: 0.07f, targetScale: 0.5f, steepness: 3f, numSteps: 5, includeFrontFace: false); Geometry = Composite.Create( Stacking.StackForward(half, half.ReflectZ())) .RotateX(MathHelper.PiOver2) .RotateZ(5f.Radians()) .Translate(-1.1f, -0.1f, -12.8f) .Color(_color); }
public TailFin() { var half = Polygon <V> .FromVec2s( new Vec2 (-4f, 0f), new Vec2 (-1.75f, 0.5f), new Vec2 (0f, 3f), new Vec2 (1.25f, 3f), new Vec2 (0.5f, 0.5f), new Vec2 (0.5f, 0f)) .ExtrudeToScale( depth: 0.1f, targetScale: 0.5f, steepness: 3f, numSteps: 5, includeFrontFace: false); Geometry = Composite.Create( Stacking.StackForward(half, half.ReflectZ())) .RotateY(MathHelper.PiOver2) .Translate(0f, 0.9f, -12.5f) .Color(_color); }
public BottomFin() { var half = Polygon <V> .FromVec2s( new Vec2 (-0.8f, 0f), new Vec2 (0.8f, 0f), new Vec2 (0.6f, -0.5f), new Vec2 (-0f, -0.6f)) .ExtrudeToScale( depth: 0.05f, targetScale: 0.7f, steepness: 3f, numSteps: 2, includeFrontFace: false) .FilterVertices(v => !v.Facing(Dir3D.Up)); Geometry = Composite.Create( Stacking.StackForward(half, half.ReflectZ())) .RotateY(MathHelper.PiOver2) .RotateZ(15f.Radians()) .RotateX(6f.Radians()) .Translate(0.5f, -0.6f, -10.25f) .Color(_color); }