open Impact //let redLine(x, y, m, xlen) = // while (x < x+xlen) do // dot(x,y) red // x <- x + 0.5 // y <- y + m*0.5 let vline(x,height) = let mutable numDots = 0.0 let mutable y = 0.0 if d > 0.0 then while y < d do dot (x,y) lightgray y <- y + 1. numDots <- numDots + 1.0 else while y > d do dot (x,y) pink y <- y - 1.; numDots <- numDots - 1. numDots let rect(xstart,ystart,width, height) = let mutable x = xstart let mutable sum = 0.0 while x < xstart + width do sum <- sum + vline(x,height) x <- x + 1.0 sum clear() e <- 2.71828 //let f0(x) = sin(x/20.0) * 50.0 //let f1(x) = cos(x/20.0) * 50.0 //let f2(x) = 100.0/((2.0**(-(x-40.0)/4.0)) + 1.0) - 45.0 //let f3(x) = (-25.0) + (0.2 *x) + 100.*(2.**(-(((x-100.)/50.)**2.)) - (2.*(2.**(-(((x-100.)/25.)**2.))))) //let f4(x) = x*x/100.0 //let f5(x) = 100.0/(1.+e**(-(x-100.0)/2.)) //let f6(x) = -50. + 100.0/(1.+e**(-(x-100.0)/2.)) //let f7(x) = 2.0*x-80.0 let f8(x) = x let f = f8 let deltaX = 10. //let diff(x) = (f(x+deltaX) - f(x))/deltaX clear() x <- 0.0 s <- 0.0 while x < 50. do d <- f(x) s <- s + rect(x,0.0,deltaX,d) dot (x, d) green x <- x+deltaX print(s)