add 'numClickPoints' field to app type, and add parameter with same name to

ClickPoints.generate function
This commit is contained in:
2024-09-20 21:33:35 +01:00
parent 2816ff0875
commit 2098a4eda7
7 changed files with 72 additions and 18 deletions

BIN
dotscape

Binary file not shown.

View File

@@ -1,6 +1,6 @@
signature APP_INIT =
sig
val fromWindowWidthAndHeight: int * int -> AppType.app_type
val fromWindowWidthAndHeight: int * int * int -> AppType.app_type
end
structure AppInit :> APP_INIT =
@@ -8,15 +8,23 @@ struct
open AppType
fun helpFromWidthAndHeight
(windowWidth, windowHeight, wStart, wFinish, hStart, hFinish) : app_type =
( windowWidth
, windowHeight
, wStart
, wFinish
, hStart
, hFinish
, numClickPoints
) : app_type =
let
val xClickPoints = ClickPoints.generate (wStart, wFinish)
val yClickPoints = ClickPoints.generate (hStart, hFinish)
val xClickPoints = ClickPoints.generate (wStart, wFinish, numClickPoints)
val yClickPoints = ClickPoints.generate (hStart, hFinish, numClickPoints)
in
{ triangles = []
, triangleStage = NO_TRIANGLE
, windowWidth = windowWidth
, windowHeight = windowHeight
, numClickPoints = numClickPoints
, xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, undo = []
@@ -29,10 +37,17 @@ struct
}
end
fun fromWindowWidthAndHeight (windowWidth, windowHeight) =
fun fromWindowWidthAndHeight (windowWidth, windowHeight, numClickPoints) =
if windowWidth = windowHeight then
helpFromWidthAndHeight
(windowWidth, windowHeight, 0, windowWidth, 0, windowHeight)
( windowWidth
, windowHeight
, 0
, windowWidth
, 0
, windowHeight
, numClickPoints
)
else if windowWidth > windowHeight then
let
val difference = windowWidth - windowHeight
@@ -40,7 +55,14 @@ struct
val wFinish = wStart + windowHeight
in
helpFromWidthAndHeight
(windowWidth, windowHeight, wStart, wFinish, 0, windowHeight)
( windowWidth
, windowHeight
, wStart
, wFinish
, 0
, windowHeight
, numClickPoints
)
end
else
let
@@ -49,6 +71,13 @@ struct
val hFinish = hStart + windowWidth
in
helpFromWidthAndHeight
(windowWidth, windowHeight, 0, windowWidth, hStart, hFinish)
( windowWidth
, windowHeight
, 0
, windowWidth
, hStart
, hFinish
, numClickPoints
)
end
end

View File

@@ -15,12 +15,12 @@ sig
, y3: Real32.real
}
type app_type =
{ triangles: triangle list
, triangleStage: triangle_stage
, windowWidth: int
, windowHeight: int
, numClickPoints: int
, xClickPoints: Real32.real vector
, yClickPoints: Real32.real vector
, undo: (Real32.real * Real32.real) list
@@ -63,6 +63,7 @@ struct
, triangleStage: triangle_stage
, windowWidth: int
, windowHeight: int
, numClickPoints: int
, xClickPoints: Real32.real vector
, yClickPoints: Real32.real vector
, undo: (Real32.real * Real32.real) list

View File

@@ -65,6 +65,7 @@ struct
val
{ triangleStage = _
, triangles
, numClickPoints
, xClickPoints
, yClickPoints
, windowWidth
@@ -84,6 +85,7 @@ struct
, undo = newUndo
, redo = []
, triangles = triangles
, numClickPoints = numClickPoints
, xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, windowWidth = windowWidth
@@ -103,6 +105,7 @@ struct
val
{ triangles
, triangleStage = _
, numClickPoints
, xClickPoints
, yClickPoints
, windowWidth
@@ -124,6 +127,7 @@ struct
, triangles = newTriangles
, undo = newUndo
, redo = []
, numClickPoints = numClickPoints
, xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, windowWidth = windowWidth
@@ -141,6 +145,7 @@ struct
val
{ xClickPoints
, yClickPoints
, numClickPoints
, windowWidth
, windowHeight
, triangles
@@ -156,6 +161,7 @@ struct
in
{ xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, numClickPoints = numClickPoints
, triangles = triangles
, triangleStage = triangleStage
, windowWidth = windowWidth
@@ -175,6 +181,7 @@ struct
val
{ xClickPoints
, yClickPoints
, numClickPoints
, windowWidth
, windowHeight
, triangles
@@ -190,6 +197,7 @@ struct
in
{ xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, numClickPoints = numClickPoints
, triangles = triangles
, triangleStage = triangleStage
, windowWidth = windowWidth
@@ -211,6 +219,7 @@ struct
val
{ xClickPoints = _
, yClickPoints = _
, numClickPoints
, windowWidth = _
, windowHeight = _
, triangles
@@ -224,11 +233,12 @@ struct
, arrowY
} = app
val xClickPoints = ClickPoints.generate (wStart, wFinish)
val yClickPoints = ClickPoints.generate (hStart, hFinish)
val xClickPoints = ClickPoints.generate (wStart, wFinish, numClickPoints)
val yClickPoints = ClickPoints.generate (hStart, hFinish, numClickPoints)
in
{ xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, numClickPoints = numClickPoints
, triangles = triangles
, triangleStage = triangleStage
, windowWidth = windowWidth
@@ -273,6 +283,7 @@ struct
, mouseY = _
, triangles
, triangleStage
, numClickPoints
, xClickPoints
, yClickPoints
, windowWidth
@@ -288,6 +299,7 @@ struct
, mouseY = mouseY
, triangles = triangles
, triangleStage = triangleStage
, numClickPoints = numClickPoints
, xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, windowWidth = windowWidth
@@ -306,6 +318,7 @@ struct
val
{ triangleStage = _
, triangles = _
, numClickPoints
, xClickPoints
, yClickPoints
, windowWidth
@@ -330,6 +343,7 @@ struct
, triangles = newTriangles
, undo = newUndo
, redo = newRedo
, numClickPoints = numClickPoints
, xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, windowWidth = windowWidth
@@ -348,6 +362,7 @@ struct
val
{ triangleStage = _
, triangles = _
, numClickPoints
, xClickPoints
, yClickPoints
, windowWidth
@@ -371,6 +386,7 @@ struct
, triangles = newTriangles
, undo = newUndo
, redo = newRedo
, numClickPoints = numClickPoints
, xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, windowWidth = windowWidth
@@ -388,6 +404,7 @@ struct
val
{ triangleStage
, triangles
, numClickPoints
, xClickPoints
, yClickPoints
, windowWidth
@@ -406,6 +423,7 @@ struct
, triangles = triangles
, undo = undo
, redo = redo
, numClickPoints = numClickPoints
, xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, windowWidth = windowWidth
@@ -422,6 +440,7 @@ struct
val
{ xClickPoints
, yClickPoints
, numClickPoints
, windowWidth
, windowHeight
, undo
@@ -442,6 +461,7 @@ struct
, undo = []
, redo = []
, showGraph = showGraph
, numClickPoints = numClickPoints
, xClickPoints = xClickPoints
, yClickPoints = yClickPoints
, windowWidth = windowWidth

View File

@@ -1,6 +1,6 @@
signature CLICK_POINTS =
sig
val generate: int * int -> Real32.real vector
val generate: int * int * int -> Real32.real vector
val getClickPositionFromMouse: AppType.app_type -> (int * int) option
val getDrawDot:
Real32.real
@@ -18,13 +18,14 @@ end
structure ClickPoints :> CLICK_POINTS =
struct
fun generate (start, finish) =
fun generate (start, finish, numPoints) =
let
val difference = finish - start
val increment = Real32.fromInt difference / 40.0
val increment = Real32.fromInt difference / Real32.fromInt numPoints
val start = Real32.fromInt start
in
Vector.tabulate (41, fn idx => (Real32.fromInt idx * increment) + start)
Vector.tabulate (numPoints + 1, fn idx =>
(Real32.fromInt idx * increment) + start)
end
(*

View File

@@ -2,6 +2,7 @@ structure Constants =
struct
val windowWidth = 1000
val windowHeight = 900
val initialNumClickPoints = 26
val graphVertexShaderString =
"#version 300 es\n\

View File

@@ -15,9 +15,11 @@ struct
val _ = Glfw.makeContextCurrent window
val _ = Gles3.loadGlad ()
val initialModel =
AppInit.fromWindowWidthAndHeight
(Constants.windowWidth, Constants.windowHeight)
val initialModel = AppInit.fromWindowWidthAndHeight
( Constants.windowWidth
, Constants.windowHeight
, Constants.initialNumClickPoints
)
val graphLines = GraphLines.generate initialModel
val graphDrawObject = AppDraw.initGraphLines ()