diff --git a/WebGLHelloAPI.js b/WebGLHelloAPI.js
index 9f5d80e43de0d3b5e61c59c5e3161afc6e18b1fc..81ce32a898fa2554a0864540799cd37e0d3646cf 100644
--- a/WebGLHelloAPI.js
+++ b/WebGLHelloAPI.js
@@ -163,6 +163,90 @@ function initialiseShaders() {
 
 var rot_z = 0.0;
 
+// --------------  HW3 Function  --------------
+// 4 x 4 행렬과 벡터는  모두 1차원 행렬로 표현되며 Column Major 이다. 
+
+// m에  [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] 을 넣는다.
+function idMatrix(m) {
+    m = [
+        1, 0, 0, 0,
+        0, 1, 0, 0,
+        0, 0, 1, 0,
+        0, 0, 0, 1
+    ];
+    return m;
+}
+
+// 4x4 행렬 m과 k를 곱한 결과를 m에 넣는다.
+function mulMatrix(m, k) {
+    var res =[
+        0, 0, 0, 0,
+        0, 0, 0, 0,
+        0, 0, 0, 0,
+        0, 0, 0, 0
+    ];
+    for (var i = 0; i < 4; i++) {
+        for (var j = 0; j < 4; j++) {
+            for (var l = 0; l < 4; l++) {
+                res[4*i+j] += m[j+4*l]*k[4*i+l];
+                // console.log("res["+(4*i+j)+"] += m["+(j+4*l)+"] * k["+(4*i+l)+"]")
+            }
+        }
+    }
+    m = res;
+    return m;
+}
+
+// 4x4 행렬 m과 k를 곱한 결과를 r에 넣는다.  
+// Changed to mulStore
+function mulStoreMatrix(r, m, k) {
+    var r =[
+        0, 0, 0, 0,
+        0, 0, 0, 0,
+        0, 0, 0, 0,
+        0, 0, 0, 0
+    ];
+    for (var i = 0; i < 4; i++) {
+        for (var j = 0; j < 4; j++) {
+            for (var l = 0; l < 4; l++) {
+                r[4*i+j] += m[j+4*l]*k[4*i+l];
+            }
+        }
+    }
+    return r;
+}
+
+// 4x4 행렬 m 과 1x4 벡터 v를 곱한 결과를 rv에 넣는다.
+function mulMatrixVec(rv, m, v) {
+    rv = [0,0,0,0];
+    for (var j = 0; j < 4; j++) {
+        for (var l = 0; l < 4; l++) {
+            rv[j] += m[j+4*l]*v[l];
+            // console.log("rv["+(j)+"] += m["+(j+4*l)+"] * v["+(l)+"]")
+        }
+    }
+    return rv;
+}
+
+// var a = [
+//     0, 1, 2, 3,
+//     4, 5, 6, 7,
+//     8, 9, 10, 11,
+//     12, 13, 14, 15
+// ];
+// var b = [
+//     1, 0, 1, 0,
+//     0, 1, 1, 0,
+//     0, 0, 1, 0,
+//     0, 0, 0, 1
+// ];
+// var v=[1,1,1,1];
+
+// var c;
+// c = mulMatrixVec(c,a,v);
+// console.log(c);
+// --------------------------------------------
+
 function renderScene() {
 
     gl.clearColor(0.2, 0.2, 0.2, 1.0);