예제 #1
0
        public void Run()
        {
            var projectile  = new Projectile(new RtPoint(0, 1, 0), new RtVector(1, 1.8, 0).Normalize() * 11.3);
            var environment = new RtEnvironment(new RtVector(0, -0.1, 0), new RtVector(-0.01, 0, 0));
            var canvas      = new Canvas(900, 550);

            while (projectile.Position.Y >= 0)
            {
                Draw(canvas, projectile.Position);
                projectile = Tick(projectile, environment);
            }

            PpmOutput.WriteToFile("file.ppm", canvas.GetPPMContent());
        }
예제 #2
0
        public void Run()
        {
            var projectile  = new Projectile(new RtPoint(0, 1, 0), new RtVector(1, 1, 0).Normalize());
            var environment = new RtEnvironment(new RtVector(0, -0.1, 0), new RtVector(-0.01, 0, 0));

            int i = 0;

            while (projectile.Position.Y >= 0)
            {
                i++;
                Console.WriteLine($"{i} - {projectile}");
                projectile = new Projectile(projectile.Position + projectile.Velocity,
                                            projectile.Velocity + environment.Gravity + environment.Wind);
            }
        }
예제 #3
0
 private static Projectile Tick(Projectile projectile, RtEnvironment environment)
 {
     return(new Projectile(projectile.Position + projectile.Velocity,
                           projectile.Velocity + environment.Gravity + environment.Wind));
 }