65 lines
1.9 KiB
Text
65 lines
1.9 KiB
Text
import "graphics" for Canvas, ImageData, Color
|
|
import "dome" for Window
|
|
import "math" for Point
|
|
|
|
class PlotCoordinates {
|
|
construct new(width, height) {
|
|
Window.title = "Plot coordinates"
|
|
Window.resize(width, height)
|
|
Canvas.resize(width, height)
|
|
_width = width
|
|
_height = height
|
|
}
|
|
|
|
init() {
|
|
var x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
var y = [2.7, 2.8, 31.4, 38.1, 58.0, 76.2, 100.5, 130.0, 149.3, 180.0]
|
|
plotCoordinates(x, y)
|
|
}
|
|
|
|
plotCoordinates(x, y) {
|
|
var n = x.count
|
|
// draw axes
|
|
Canvas.line(40, _height - 40, _width - 40, _height - 40, Color.blue, 2)
|
|
Canvas.line(40, _height - 40, 40, 40, Color.blue, 2)
|
|
var length = 40 * n
|
|
var div = length / 10
|
|
var j = 0
|
|
for (i in 0..9) {
|
|
var p = Point.new(40 + j, _height - 40)
|
|
Canvas.print(i.toString, p.x - 4, p.y + 4, Color.white)
|
|
j = j + div
|
|
}
|
|
j = div
|
|
for (i in 1..9) {
|
|
var p = Point.new(10, _height - 40 - j)
|
|
var s = (i * 20).toString
|
|
if (s.count == 2) s = " " + s
|
|
Canvas.print(s, p.x, p.y, Color.white)
|
|
j = j + div
|
|
}
|
|
Canvas.print("X", _width - 44, _height - 36, Color.green)
|
|
Canvas.print("Y", 20, 40, Color.green)
|
|
|
|
// plot points
|
|
var xStart = 40
|
|
var xScale = 40
|
|
var yStart = 40
|
|
var yScale = 2
|
|
var points = List.filled(n, null)
|
|
for (i in 0...n) {
|
|
points[i] = Point.new(xStart + x[i]*xScale, _height - yStart - y[i]*yScale)
|
|
}
|
|
Canvas.circlefill(points[0].x, points[0].y, 3, Color.red)
|
|
for (i in 1...n) {
|
|
Canvas.line(points[i-1].x, points[i-1].y, points[i].x, points[i].y, Color.red)
|
|
Canvas.circlefill(points[i].x, points[i].y, 3, Color.red)
|
|
}
|
|
}
|
|
|
|
update() {}
|
|
|
|
draw(alpha) {}
|
|
}
|
|
|
|
var Game = PlotCoordinates.new(500, 500)
|