structure AAA = struct fun xToNdc (xOffset, xpos, scale, halfWidth) = ((xpos * scale + xOffset) - halfWidth) / halfWidth fun endXToNdc (xOffset, startX, endX, scale, halfWidth) = (((endX - startX) * scale + xOffset) - halfWidth) / halfWidth fun yToNdc (yOffset, ypos, scale, halfHeight) = ~(((ypos * scale + yOffset) - halfHeight) / halfHeight) fun endYToNdc (yOffset, startY, endY, scale, halfHeight) = ~((((endY - startY) * scale + yOffset) - halfHeight) / halfHeight) fun lerp (xOffset, yOffset, scale, windowWidth, windowHeight) = let val windowWidth = Real32.fromInt windowWidth val halfWidth = windowWidth / 2.0 val windowHeight = Real32.fromInt windowHeight val halfHeight = windowHeight / 2.0 in #[ xToNdc (xOffset, 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 30.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 0.000000000000000, scale, halfWidth), 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 30.000000000000000, scale, halfHeight), xToNdc (xOffset, 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), xToNdc (xOffset, 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 0.000000000000000, scale, halfWidth), 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 30.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 0.000000000000000, scale, halfWidth), 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), xToNdc (xOffset, 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 0.000000000000000, scale, halfWidth), 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), xToNdc (xOffset, 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), xToNdc (xOffset, 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 0.000000000000000, scale, halfWidth), 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 0.000000000000000, scale, halfWidth), 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), xToNdc (xOffset, 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 30.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 0.000000000000000, scale, halfWidth), 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 30.000000000000000, scale, halfHeight), xToNdc (xOffset, 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 29.000000000000000, scale, halfHeight), xToNdc (xOffset, 0.000000000000000, scale, halfWidth), yToNdc (yOffset, 29.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 0.000000000000000, scale, halfWidth), 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 30.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 0.000000000000000, scale, halfWidth), 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 29.000000000000000, scale, halfHeight), xToNdc (xOffset, 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 30.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 29.000000000000000, scale, halfWidth), 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 30.000000000000000, scale, halfHeight), xToNdc (xOffset, 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), xToNdc (xOffset, 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 29.000000000000000, scale, halfWidth), 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 30.000000000000000, scale, halfHeight), endXToNdc (xOffset, xToNdc (xOffset, 29.000000000000000, scale, halfWidth), 29.000000000000000, scale, halfWidth), yToNdc (yOffset, 0.000000000000000, scale, halfHeight) ] end end