Files
sml-projects/fcore/ndc.sml

41 lines
873 B
Standard ML
Raw Normal View History

2025-07-06 02:49:38 +01:00
structure Ndc =
struct
(* ndc = normalised device coordinates *)
2025-07-06 03:21:18 +01:00
2025-07-06 02:49:38 +01:00
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
2025-07-06 02:49:38 +01:00
, startX, startY, r, g, b
, endX, endY, r, g, b
, endX, startY, r, g, b
2025-07-06 02:49:38 +01:00
]
2025-07-06 03:21:18 +01:00
fun fromPixelX (xpos, windowWidth, windowHeight) =
let
val halfWidth = Real32.fromInt windowWidth / 2.0
2025-07-06 03:21:18 +01:00
val xpos = xpos - halfWidth
in
xpos / halfWidth
2025-07-06 03:21:18 +01:00
end
fun fromPixelY (ypos, windowWidth, windowHeight) =
let
val halfHeight = Real32.fromInt windowHeight / 2.0
2025-07-06 03:21:18 +01:00
val ypos = ~(ypos - halfHeight)
in
ypos / halfHeight
2025-07-06 03:21:18 +01:00
end
2025-07-06 02:49:38 +01:00
end