Method
lookAt
(float[] eye, float[] at, float[] up, float[] m16)
Source from the content-addressed store, hash-verified
| 298 | } |
| 299 | |
| 300 | private static void lookAt(float[] eye, float[] at, float[] up, float[] m16) { |
| 301 | float[] x; |
| 302 | float[] y; |
| 303 | float[] z; |
| 304 | float[] tmp = new float[3]; |
| 305 | |
| 306 | tmp[0] = eye[0] - at[0]; |
| 307 | tmp[1] = eye[1] - at[1]; |
| 308 | tmp[2] = eye[2] - at[2]; |
| 309 | z = normalize(tmp); |
| 310 | y = normalize(up); |
| 311 | |
| 312 | tmp = cross(y, z); |
| 313 | x = normalize(tmp); |
| 314 | |
| 315 | tmp = cross(z, x); |
| 316 | y = normalize(tmp); |
| 317 | |
| 318 | m16[0] = x[0]; |
| 319 | m16[1] = y[0]; |
| 320 | m16[2] = z[0]; |
| 321 | m16[3] = 0.0f; |
| 322 | m16[4] = x[1]; |
| 323 | m16[5] = y[1]; |
| 324 | m16[6] = z[1]; |
| 325 | m16[7] = 0.0f; |
| 326 | m16[8] = x[2]; |
| 327 | m16[9] = y[2]; |
| 328 | m16[10] = z[2]; |
| 329 | m16[11] = 0.0f; |
| 330 | m16[12] = -dot(x, eye); |
| 331 | m16[13] = -dot(y, eye); |
| 332 | m16[14] = -dot(z, eye); |
| 333 | m16[15] = 1.0f; |
| 334 | } |
| 335 | } |
Tested by
no test coverage detected