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()); }
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); } }
private static Projectile Tick(Projectile projectile, RtEnvironment environment) { return(new Projectile(projectile.Position + projectile.Velocity, projectile.Velocity + environment.Gravity + environment.Wind)); }