port 'addCoordinates' function to app-update.sml
This commit is contained in:
@@ -139,4 +139,37 @@ struct
|
|||||||
else
|
else
|
||||||
getDrawDotMsgWhenArrowIsAtBoundary model
|
getDrawDotMsgWhenArrowIsAtBoundary model
|
||||||
end
|
end
|
||||||
|
|
||||||
|
fun realToInt x = Real32.toInt IEEEReal.TO_NEAREST x
|
||||||
|
|
||||||
|
fun addCoordinates (model: app_type, hIdx, vIdx) =
|
||||||
|
let
|
||||||
|
val
|
||||||
|
{ windowWidth
|
||||||
|
, windowHeight
|
||||||
|
, xClickPoints
|
||||||
|
, yClickPoints
|
||||||
|
, canvasWidth
|
||||||
|
, canvasHeight
|
||||||
|
, ...
|
||||||
|
} = model
|
||||||
|
|
||||||
|
val xpos = Vector.sub (xClickPoints, hIdx)
|
||||||
|
val ypos = Vector.sub (yClickPoints, vIdx)
|
||||||
|
|
||||||
|
val model = AppWith.addSquare (model, realToInt xpos, realToInt ypos, hIdx, vIdx)
|
||||||
|
val squares = #squares model
|
||||||
|
|
||||||
|
val dotVec = getDotVecFromIndices (model, hIdx, vIdx)
|
||||||
|
|
||||||
|
val halfWidth = Real32.fromInt (windowWidth div 2)
|
||||||
|
val halfHeight = Real32.fromInt (windowHeight div 2)
|
||||||
|
|
||||||
|
val maxSide = Int.max (canvasWidth, canvasHeight)
|
||||||
|
val squares =
|
||||||
|
CollisionTree.toTriangles (windowWidth, windowHeight, squares, maxSide)
|
||||||
|
val drawMsg = DRAW_SQUARES_AND_DOTS {squares = squares, dots = dotVec}
|
||||||
|
in
|
||||||
|
(model, drawMsg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -245,6 +245,11 @@ struct
|
|||||||
case squares of
|
case squares of
|
||||||
{x, y, ex, ey, data = _} :: tl =>
|
{x, y, ex, ey, data = _} :: tl =>
|
||||||
let
|
let
|
||||||
|
val x = Real32.fromInt x
|
||||||
|
val y = Real32.fromInt y
|
||||||
|
val ex = Real32.fromInt ex
|
||||||
|
val ey = Real32.fromInt ey
|
||||||
|
|
||||||
val startX = Ndc.fromPixelX (x, windowWidth, windowHeight)
|
val startX = Ndc.fromPixelX (x, windowWidth, windowHeight)
|
||||||
val endX = Ndc.fromPixelX (ex, windowWidth, windowHeight)
|
val endX = Ndc.fromPixelX (ex, windowWidth, windowHeight)
|
||||||
val startY = Ndc.fromPixelY (y, windowWidth, windowHeight)
|
val startY = Ndc.fromPixelY (y, windowWidth, windowHeight)
|
||||||
@@ -256,7 +261,12 @@ struct
|
|||||||
end
|
end
|
||||||
| [] => Vector.concat acc
|
| [] => Vector.concat acc
|
||||||
in
|
in
|
||||||
fun toTriangles (windowWidth, windowHeight, squares) =
|
fun toTriangles (windowWidth, windowHeight, squares, size) =
|
||||||
|
let
|
||||||
|
val qtree = build (0, 0, size, squares)
|
||||||
|
val squares = toList qtree
|
||||||
|
in
|
||||||
loop (windowWidth, windowHeight, squares, [])
|
loop (windowWidth, windowHeight, squares, [])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user