structure Ndc = struct (* ndc = normalised device coordinates *) fun ltrbToVertex (left, top, right, bottom) = #[ left, bottom , right, bottom , left, top , left, top , right, bottom , right, top ] fun ltrbToVertexRgb (startX, startY, endX, endY, r, g, b) = #[ startX, endY, r, g, b , endX, endY, r, g, b , startX, startY, r, g, b , startX, startY, r, g, b , endX, endY, r, g, b , endX, startY, r, g, b ] fun fromPixelX (xpos, windowWidth, windowHeight) = let val halfWidth = Real32.fromInt windowWidth / 2.0 in (xpos - halfWidth) / halfWidth end fun fromPixelY (ypos, windowWidth, windowHeight) = let val halfHeight = Real32.fromInt windowHeight / 2.0 in ~((ypos - halfHeight) / halfHeight) end end