@@ -0,0 +1,137 @@
1+[38;2;117;113;94m--[0m[38;2;117;113;94m elm install elm-explorations/linear-algebra[0m
2+[38;2;117;113;94m--[0m[38;2;117;113;94m elm install elm-explorations/webgl[0m
3+
4+
5+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[38;2;248;248;242mBrowser[0m
6+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[38;2;248;248;242mBrowser.Events[0m[38;2;248;248;242m [0m[38;2;249;38;114mas[0m[38;2;248;248;242m [0m[38;2;248;248;242mE[0m
7+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[38;2;248;248;242mHtml[0m[38;2;248;248;242m [0m[38;2;249;38;114mexposing[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mHtml[0m[38;2;248;248;242m)[0m
8+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[38;2;248;248;242mHtml.Attributes[0m[38;2;248;248;242m [0m[38;2;249;38;114mexposing[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;166;226;46mwidth[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;166;226;46mheight[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;166;226;46mstyle[0m[38;2;248;248;242m)[0m
9+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[38;2;248;248;242mMath.Matrix4[0m[38;2;248;248;242m [0m[38;2;249;38;114mas[0m[38;2;248;248;242m [0m[38;2;248;248;242mMat4[0m[38;2;248;248;242m [0m[38;2;249;38;114mexposing[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mMat4[0m[38;2;248;248;242m)[0m
10+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[38;2;248;248;242mMath.Vector3[0m[38;2;248;248;242m [0m[38;2;249;38;114mas[0m[38;2;248;248;242m [0m[38;2;248;248;242mVec3[0m[38;2;248;248;242m [0m[38;2;249;38;114mexposing[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[3;38;2;102;217;239mVec3[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;166;226;46mvec3[0m[38;2;248;248;242m)[0m
11+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[38;2;248;248;242mWebGL[0m
12+
13+
14+
15+[38;2;117;113;94m--[0m[38;2;117;113;94m MAIN[0m
16+
17+
18+[38;2;166;226;46mmain [0m[38;2;249;38;114m=[0m
19+[38;2;248;248;242m [0m[38;2;190;132;255mBrowser[0m[38;2;249;38;114m.[0m[38;2;248;248;242melement[0m
20+[38;2;248;248;242m [0m[38;2;102;217;239m{[0m[38;2;248;248;242m init [0m[38;2;249;38;114m=[0m[38;2;248;248;242m init[0m
21+[38;2;248;248;242m [0m[38;2;102;217;239m,[0m[38;2;248;248;242m view [0m[38;2;249;38;114m=[0m[38;2;248;248;242m view[0m
22+[38;2;248;248;242m [0m[38;2;102;217;239m,[0m[38;2;248;248;242m update [0m[38;2;249;38;114m=[0m[38;2;248;248;242m update[0m
23+[38;2;248;248;242m [0m[38;2;102;217;239m,[0m[38;2;248;248;242m subscriptions [0m[38;2;249;38;114m=[0m[38;2;248;248;242m subscriptions[0m
24+[38;2;248;248;242m [0m[38;2;102;217;239m}[0m
25+
26+
27+
28+[38;2;117;113;94m--[0m[38;2;117;113;94m MODEL[0m
29+
30+
31+[38;2;249;38;114mtype alias [0m[38;2;166;226;46mModel[0m[38;2;248;248;242m [0m[38;2;249;38;114m=[0m
32+[38;2;248;248;242m [0m[38;2;190;132;255mFloat[0m
33+
34+
35+[38;2;166;226;46minit[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[38;2;102;217;239m()[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m ([0m[3;38;2;102;217;239mModel[0m[38;2;248;248;242m, [0m[3;38;2;102;217;239mCmd[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mMsg[0m[38;2;248;248;242m)[0m
36+[38;2;166;226;46minit [0m[38;2;190;132;255m()[0m[38;2;248;248;242m [0m[38;2;249;38;114m=[0m
37+[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;102;217;239m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mCmd[0m[38;2;249;38;114m.[0m[38;2;248;248;242mnone [0m[38;2;249;38;114m)[0m
38+
39+
40+
41+[38;2;117;113;94m--[0m[38;2;117;113;94m UPDATE[0m
42+
43+
44+[38;2;249;38;114mtype [0m[38;2;166;226;46mMsg[0m
45+[38;2;248;248;242m [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255mTimeDelta[0m[38;2;248;248;242m [0m[38;2;190;132;255mFloat[0m
46+
47+
48+[38;2;166;226;46mupdate[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mMsg[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mModel[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m ([0m[3;38;2;102;217;239mModel[0m[38;2;248;248;242m, [0m[3;38;2;102;217;239mCmd[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mMsg[0m[38;2;248;248;242m)[0m
49+[38;2;166;226;46mupdate [0m[38;2;248;248;242mmsg currentTime [0m[38;2;249;38;114m=[0m
50+[38;2;248;248;242m [0m[38;2;249;38;114mcase [0m[38;2;248;248;242mmsg [0m[38;2;249;38;114mof[0m
51+[38;2;248;248;242m [0m[38;2;190;132;255mTimeDelta[0m[38;2;248;248;242m delta [0m[38;2;249;38;114m->[0m
52+[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242m delta [0m[38;2;249;38;114m+[0m[38;2;248;248;242m currentTime[0m[38;2;102;217;239m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mCmd[0m[38;2;249;38;114m.[0m[38;2;248;248;242mnone [0m[38;2;249;38;114m)[0m
53+
54+
55+
56+[38;2;117;113;94m--[0m[38;2;117;113;94m SUBSCRIPTIONS[0m
57+
58+
59+[38;2;166;226;46msubscriptions[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mModel[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mSub[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mMsg[0m
60+[38;2;166;226;46msubscriptions [0m[38;2;248;248;242m_ [0m[38;2;249;38;114m=[0m
61+[38;2;248;248;242m [0m[38;2;190;132;255mE[0m[38;2;249;38;114m.[0m[38;2;248;248;242monAnimationFrameDelta [0m[38;2;190;132;255mTimeDelta[0m
62+
63+
64+
65+[38;2;117;113;94m--[0m[38;2;117;113;94m VIEW[0m
66+
67+
68+[38;2;166;226;46mview[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mModel[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mHtml[0m[38;2;248;248;242m [0m[38;2;255;255;255mmsg[0m
69+[38;2;166;226;46mview [0m[38;2;248;248;242mt [0m[38;2;249;38;114m=[0m
70+[38;2;248;248;242m [0m[38;2;190;132;255mWebGL[0m[38;2;249;38;114m.[0m[38;2;248;248;242mtoHtml[0m
71+[38;2;248;248;242m [0m[38;2;102;217;239m[[0m[38;2;248;248;242m width [0m[38;2;190;132;255m400[0m[38;2;102;217;239m,[0m[38;2;248;248;242m height [0m[38;2;190;132;255m400[0m[38;2;102;217;239m,[0m[38;2;248;248;242m style [0m[38;2;230;219;116m"[0m[38;2;230;219;116mdisplay[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mblock[0m[38;2;230;219;116m"[0m
72+[38;2;248;248;242m [0m[38;2;102;217;239m][0m
73+[38;2;248;248;242m [0m[38;2;102;217;239m[[0m[38;2;248;248;242m [0m[38;2;190;132;255mWebGL[0m[38;2;249;38;114m.[0m[38;2;248;248;242mentity vertexShader fragmentShader mesh [0m[38;2;102;217;239m{[0m[38;2;248;248;242m perspective [0m[38;2;249;38;114m=[0m[38;2;248;248;242m perspective [0m[38;2;249;38;114m([0m[38;2;248;248;242mt [0m[38;2;249;38;114m/[0m[38;2;248;248;242m [0m[38;2;190;132;255m1000[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;102;217;239m}[0m
74+[38;2;248;248;242m [0m[38;2;102;217;239m][0m
75+
76+
77+[38;2;166;226;46mperspective[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mFloat[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mMat4[0m
78+[38;2;166;226;46mperspective [0m[38;2;248;248;242mt [0m[38;2;249;38;114m=[0m
79+[38;2;248;248;242m [0m[38;2;190;132;255mMat4[0m[38;2;249;38;114m.[0m[38;2;248;248;242mmul[0m
80+[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;190;132;255mMat4[0m[38;2;249;38;114m.[0m[38;2;248;248;242mmakePerspective [0m[38;2;190;132;255m45[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;190;132;255m0.01[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m)[0m
81+[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;190;132;255mMat4[0m[38;2;249;38;114m.[0m[38;2;248;248;242mmakeLookAt [0m[38;2;249;38;114m([0m[38;2;248;248;242mvec3 [0m[38;2;249;38;114m([0m[38;2;190;132;255m4[0m[38;2;248;248;242m [0m[38;2;249;38;114m*[0m[38;2;248;248;242m cos t[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;190;132;255m4[0m[38;2;248;248;242m [0m[38;2;249;38;114m*[0m[38;2;248;248;242m sin t[0m[38;2;249;38;114m)[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mvec3 [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mvec3 [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m)[0m[38;2;249;38;114m)[0m
82+
83+
84+
85+[38;2;117;113;94m--[0m[38;2;117;113;94m MESH[0m
86+
87+
88+[38;2;249;38;114mtype alias [0m[38;2;166;226;46mVertex[0m[38;2;248;248;242m [0m[38;2;249;38;114m=[0m
89+[38;2;248;248;242m [0m[38;2;102;217;239m{[0m[38;2;248;248;242m position [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[38;2;190;132;255mVec3[0m
90+[38;2;248;248;242m [0m[38;2;102;217;239m,[0m[38;2;248;248;242m color [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[38;2;190;132;255mVec3[0m
91+[38;2;248;248;242m [0m[38;2;102;217;239m}[0m
92+
93+
94+[38;2;166;226;46mmesh[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mWebGL[0m[38;2;248;248;242m.[0m[3;38;2;102;217;239mMesh[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mVertex[0m
95+[38;2;166;226;46mmesh [0m[38;2;249;38;114m=[0m
96+[38;2;248;248;242m [0m[38;2;190;132;255mWebGL[0m[38;2;249;38;114m.[0m[38;2;248;248;242mtriangles[0m
97+[38;2;248;248;242m [0m[38;2;102;217;239m[[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242m [0m[38;2;190;132;255mVertex[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mvec3 [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mvec3 [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m)[0m
98+[38;2;248;248;242m [0m[38;2;102;217;239m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mVertex[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mvec3 [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mvec3 [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m)[0m
99+[38;2;248;248;242m [0m[38;2;102;217;239m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mVertex[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mvec3 [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mvec3 [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m
100+[38;2;248;248;242m [0m[38;2;249;38;114m)[0m
101+[38;2;248;248;242m [0m[38;2;102;217;239m][0m
102+
103+
104+
105+[38;2;117;113;94m--[0m[38;2;117;113;94m SHADERS[0m
106+
107+
108+[38;2;249;38;114mtype alias [0m[38;2;166;226;46mUniforms[0m[38;2;248;248;242m [0m[38;2;249;38;114m=[0m
109+[38;2;248;248;242m [0m[38;2;102;217;239m{[0m[38;2;248;248;242m perspective [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[38;2;190;132;255mMat4[0m
110+[38;2;248;248;242m [0m[38;2;102;217;239m}[0m
111+
112+
113+[38;2;166;226;46mvertexShader[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mWebGL[0m[38;2;248;248;242m.[0m[3;38;2;102;217;239mShader[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mVertex[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mUniforms[0m[38;2;248;248;242m { [0m[38;2;255;255;255mvcolor[0m[38;2;248;248;242m : [0m[3;38;2;102;217;239mVec3[0m[38;2;248;248;242m }[0m
114+[38;2;166;226;46mvertexShader [0m[38;2;249;38;114m=[0m
115+[38;2;248;248;242m [0m[38;2;249;38;114m[[0m[38;2;102;217;239mglsl[0m[38;2;249;38;114m|[0m
116+[38;2;166;226;46m [0m[38;2;249;38;114mattribute[0m[38;2;166;226;46m [0m[3;38;2;102;217;239mvec3[0m[38;2;166;226;46m position[0m[38;2;166;226;46m;[0m
117+[38;2;166;226;46m [0m[38;2;249;38;114mattribute[0m[38;2;166;226;46m [0m[3;38;2;102;217;239mvec3[0m[38;2;166;226;46m color[0m[38;2;166;226;46m;[0m
118+[38;2;166;226;46m [0m[38;2;249;38;114muniform[0m[38;2;166;226;46m [0m[3;38;2;102;217;239mmat4[0m[38;2;166;226;46m perspective[0m[38;2;166;226;46m;[0m
119+[38;2;166;226;46m [0m[38;2;249;38;114mvarying[0m[38;2;166;226;46m [0m[3;38;2;102;217;239mvec3[0m[38;2;166;226;46m vcolor[0m[38;2;166;226;46m;[0m
120+
121+[38;2;166;226;46m [0m[3;38;2;102;217;239mvoid[0m[38;2;166;226;46m [0m[38;2;166;226;46mmain[0m[38;2;166;226;46m [0m[38;2;166;226;46m([0m[38;2;166;226;46m)[0m[38;2;166;226;46m [0m[38;2;166;226;46m{[0m
122+[38;2;166;226;46m [0m[38;2;255;255;255mgl_Position[0m[38;2;166;226;46m [0m[38;2;249;38;114m=[0m[38;2;166;226;46m perspective [0m[38;2;249;38;114m*[0m[38;2;166;226;46m [0m[3;38;2;102;217;239mvec4[0m[38;2;166;226;46m([0m[38;2;166;226;46mposition[0m[38;2;166;226;46m,[0m[38;2;166;226;46m [0m[38;2;190;132;255m1.0[0m[38;2;166;226;46m)[0m[38;2;166;226;46m;[0m
123+[38;2;166;226;46m vcolor [0m[38;2;249;38;114m=[0m[38;2;166;226;46m color[0m[38;2;166;226;46m;[0m
124+[38;2;166;226;46m [0m[38;2;166;226;46m}[0m
125+[38;2;166;226;46m [0m[38;2;249;38;114m|][0m
126+
127+
128+[38;2;166;226;46mfragmentShader[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mWebGL[0m[38;2;248;248;242m.[0m[3;38;2;102;217;239mShader[0m[38;2;248;248;242m {} [0m[3;38;2;102;217;239mUniforms[0m[38;2;248;248;242m { [0m[38;2;255;255;255mvcolor[0m[38;2;248;248;242m : [0m[3;38;2;102;217;239mVec3[0m[38;2;248;248;242m }[0m
129+[38;2;166;226;46mfragmentShader [0m[38;2;249;38;114m=[0m
130+[38;2;248;248;242m [0m[38;2;249;38;114m[[0m[38;2;102;217;239mglsl[0m[38;2;249;38;114m|[0m
131+[38;2;166;226;46m precision mediump [0m[3;38;2;102;217;239mfloat[0m[38;2;166;226;46m;[0m
132+[38;2;166;226;46m [0m[38;2;249;38;114mvarying[0m[38;2;166;226;46m [0m[3;38;2;102;217;239mvec3[0m[38;2;166;226;46m vcolor[0m[38;2;166;226;46m;[0m
133+
134+[38;2;166;226;46m [0m[3;38;2;102;217;239mvoid[0m[38;2;166;226;46m [0m[38;2;166;226;46mmain[0m[38;2;166;226;46m [0m[38;2;166;226;46m([0m[38;2;166;226;46m)[0m[38;2;166;226;46m [0m[38;2;166;226;46m{[0m
135+[38;2;166;226;46m [0m[38;2;255;255;255mgl_FragColor[0m[38;2;166;226;46m [0m[38;2;249;38;114m=[0m[38;2;166;226;46m [0m[3;38;2;102;217;239mvec4[0m[38;2;166;226;46m([0m[38;2;166;226;46mvcolor[0m[38;2;166;226;46m,[0m[38;2;166;226;46m [0m[38;2;190;132;255m1.0[0m[38;2;166;226;46m)[0m[38;2;166;226;46m;[0m
136+[38;2;166;226;46m [0m[38;2;166;226;46m}[0m
137+[38;2;166;226;46m [0m[38;2;249;38;114m|][0m