mirror of
https://github.com/jlengrand/elm-webgl-playground.git
synced 2026-03-10 08:11:18 +00:00
Use Mat4.toRecord
This commit is contained in:
50
CSS3d.elm
50
CSS3d.elm
@@ -6,7 +6,6 @@ import Math.Matrix4 as Mat4 exposing (Mat4, translate3)
|
||||
import Math.Vector3 as Vec3 exposing (Vec3, vec3)
|
||||
import Math.Vector4 as Vec4 exposing (Vec4, vec4)
|
||||
import Mouse
|
||||
import Native.Mat4
|
||||
import Task exposing (Task)
|
||||
import WebGL exposing (Entity, Mesh, Shader)
|
||||
import WebGL.Settings as Settings
|
||||
@@ -124,15 +123,6 @@ square scale color =
|
||||
]
|
||||
|
||||
|
||||
type Tuple16
|
||||
= Tuple16 Float Float Float Float Float Float Float Float Float Float Float Float Float Float Float Float
|
||||
|
||||
|
||||
mat4toTuple : Mat4 -> Tuple16
|
||||
mat4toTuple =
|
||||
Native.Mat4.toTuple
|
||||
|
||||
|
||||
|
||||
-- VIEW
|
||||
|
||||
@@ -188,30 +178,22 @@ view { size, position } =
|
||||
]
|
||||
|
||||
|
||||
cameraMatrix3d : Mat4 -> String
|
||||
cameraMatrix3d matrix =
|
||||
let
|
||||
(Tuple16 a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4 d1 d2 d3 d4) =
|
||||
mat4toTuple matrix
|
||||
in
|
||||
[ a1, -a2, a3, a4, b1, -b2, b3, b4, c1, -c2, c3, c4, d1, -d2, d3, d4 ]
|
||||
|> List.map toString
|
||||
|> List.intersperse ","
|
||||
|> List.foldr (++) ""
|
||||
|> (\s -> "matrix3d(" ++ s ++ ")")
|
||||
cameraMatrix3d : { m11 : Float, m21 : Float, m31 : Float, m41 : Float, m12 : Float, m22 : Float, m32 : Float, m42 : Float, m13 : Float, m23 : Float, m33 : Float, m43 : Float, m14 : Float, m24 : Float, m34 : Float, m44 : Float } -> String
|
||||
cameraMatrix3d { m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44 } =
|
||||
[ m11, -m21, m31, m41, m12, -m22, m32, m42, m13, -m23, m33, m43, m14, -m24, m34, m44 ]
|
||||
|> List.map toString
|
||||
|> List.intersperse ","
|
||||
|> List.foldr (++) ""
|
||||
|> (\s -> "matrix3d(" ++ s ++ ")")
|
||||
|
||||
|
||||
objectMatrix3d : Mat4 -> String
|
||||
objectMatrix3d matrix =
|
||||
let
|
||||
(Tuple16 a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4 d1 d2 d3 d4) =
|
||||
mat4toTuple matrix
|
||||
in
|
||||
[ a1, a2, a3, a4, -b1, -b2, -b3, -b4, c1, c2, c3, c4, d1, d2, d3, d4 ]
|
||||
|> List.map toString
|
||||
|> List.intersperse ","
|
||||
|> List.foldr (++) ""
|
||||
|> (\s -> "matrix3d(" ++ s ++ ")")
|
||||
objectMatrix3d : { m11 : Float, m21 : Float, m31 : Float, m41 : Float, m12 : Float, m22 : Float, m32 : Float, m42 : Float, m13 : Float, m23 : Float, m33 : Float, m43 : Float, m14 : Float, m24 : Float, m34 : Float, m44 : Float } -> String
|
||||
objectMatrix3d { m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44 } =
|
||||
[ m11, m21, m31, m41, -m12, -m22, -m32, -m42, m13, m23, m33, m43, m14, m24, m34, m44 ]
|
||||
|> List.map toString
|
||||
|> List.intersperse ","
|
||||
|> List.foldr (++) ""
|
||||
|> (\s -> "matrix3d(" ++ s ++ ")")
|
||||
|
||||
|
||||
box : Float -> Float -> Mat4 -> Html Action
|
||||
@@ -224,7 +206,7 @@ box width height matrix =
|
||||
, ( "width", toString width ++ "px" )
|
||||
, ( "height", toString height ++ "px" )
|
||||
, ( "transform"
|
||||
, "translate3d(-50%, -50%, 0) " ++ objectMatrix3d matrix
|
||||
, "translate3d(-50%, -50%, 0) " ++ objectMatrix3d (Mat4.toRecord matrix)
|
||||
)
|
||||
]
|
||||
]
|
||||
@@ -244,7 +226,7 @@ camera fov { width, height } matrix =
|
||||
++ "translate3d(0,0,"
|
||||
++ toString fov
|
||||
++ "px)"
|
||||
++ cameraMatrix3d matrix
|
||||
++ cameraMatrix3d (Mat4.toRecord matrix)
|
||||
++ "translate3d("
|
||||
++ toString (toFloat width / 2)
|
||||
++ "px,"
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
var _w0rm$elm_webgl_playground$Native_Mat4 = function () {
|
||||
|
||||
return {
|
||||
toTuple: function (mat) {
|
||||
return {
|
||||
ctor: 'Tuple16',
|
||||
_0: mat[0],
|
||||
_1: mat[1],
|
||||
_2: mat[2],
|
||||
_3: mat[3],
|
||||
_4: mat[4],
|
||||
_5: mat[5],
|
||||
_6: mat[6],
|
||||
_7: mat[7],
|
||||
_8: mat[8],
|
||||
_9: mat[9],
|
||||
_10: mat[10],
|
||||
_11: mat[11],
|
||||
_12: mat[12],
|
||||
_13: mat[13],
|
||||
_14: mat[14],
|
||||
_15: mat[15]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}();
|
||||
@@ -9,7 +9,7 @@
|
||||
"exposed-modules": [],
|
||||
"native-modules": true,
|
||||
"dependencies": {
|
||||
"elm-community/linear-algebra": "1.0.0 <= v < 2.0.0",
|
||||
"elm-community/linear-algebra": "3.1.0 <= v < 4.0.0",
|
||||
"elm-community/webgl": "2.0.0 <= v < 3.0.0",
|
||||
"elm-lang/animation-frame": "1.0.1 <= v < 2.0.0",
|
||||
"elm-lang/core": "5.0.0 <= v < 6.0.0",
|
||||
|
||||
Reference in New Issue
Block a user