Subject | Hash | Author | Date (UTC) |
---|---|---|---|
different projection matrix built functions for different fov specifications (horizontal, vertical, both) | 0aa5dbb5e22c616a559bb6f6d75b0313db7b3e84 | jp.larry | 2020-01-07 13:53:30 |
normal from 3 points and plane from normal and offset functions | 432070f339b8c48b18c4e2dab4389dc19ffa241c | jp.larry | 2020-01-06 07:27:29 |
check if floating point when converting from degrees | 75397be78960535bca1ec487221b6b46382e0724 | jp.larry | 2020-01-06 07:26:59 |
distance between 2 vectors and intersection line with plane | 1620677672179226ea92affb5e3dc600cd3fa133 | jp.larry | 2020-01-05 03:22:56 |
2D vector rotate function | 049eae7f349cf44bde666b66684a47c8bb4f1300 | jp.larry | 2020-01-01 05:09:07 |
removed nodiscard from matrix *= operator and removed redundant function rotate(axis) | 0dea084c205202125acfe390a248be61c962d393 | jp.larry | 2020-01-01 03:09:48 |
rafactoring update, matrix multiplication now works in different way | 2f2e01d80896cd96428a9c9394382e6f040f92fb | jp.larry | 2019-12-31 11:00:01 |
round_down function | 672a293659a39e29be0d84f28801cf2718070f10 | Jackalope | 2019-12-28 03:02:03 |
migw warning solved | 80dec7906c5fe2dc026d6774fd526df2ded049cc | Jackalope | 2019-12-21 10:22:55 |
refactoring | 8b9c8aef3bcbbe3a3a72160eacd15b2d8397524c | jp.larry | 2019-12-19 08:10:49 |
lookat and projection functions refactoring | f37008f4ad0e4501e89a6a26b4270bc5d6080578 | jp.larry | 2019-12-16 10:58:53 |
gcem correct include | 03e0350e04d3e1b2c9e7d4f58ef473ce9b5cf319 | Your Name | 2019-11-27 04:30:39 |
changed directories layout | abcc3ff61e8246f0519498b755bfe23877626144 | Your Name | 2019-11-26 22:52:02 |
CMakeLists.txt added | 41ddc92280ce3969f8b3f16efce7e63c8c70425a | Your Name | 2019-11-12 10:32:19 |
removed excess definition | 67b8131470fbbf0d87f2f51cea6326fcdab8d180 | Your Name | 2019-07-07 12:24:10 |
gcem updated | ff3d073843c2f3a153de930a3651ad8e02c1b7d1 | jp.larry | 2019-06-19 10:59:53 |
new functions | 46561c6e97aa1ba2d0c41a19ba1977b0427b5f4b | Your Name | 2019-05-07 05:42:45 |
new functions | 61e3c490daf394f07a4b9de2640d9e1b42fc2dd1 | Your Name | 2019-05-05 11:28:57 |
pragma removed | 5843f3d68f0d3c08d5be7d16ef8c05db5bceda89 | jp.larry | 2019-05-01 12:31:57 |
uint replaced with unsigned int | bbde30ca5f66601143ed8862aded9da0cd3aadf8 | Your Name | 2019-04-30 23:30:19 |
File | Lines added | Lines deleted |
---|---|---|
include/math/matrix/matrix_functions.hpp | 22 | 6 |
File include/math/matrix/matrix_functions.hpp changed (mode: 100644) (index 2ea07de..51f69c3) | |||
... | ... | namespace math | |
52 | 52 | return rotation(axis.x, axis.y, axis.z); | return rotation(axis.x, axis.y, axis.z); |
53 | 53 | } | } |
54 | 54 | T_IMPL MATRIX(4) | T_IMPL MATRIX(4) |
55 | projection(T fov_y, T aspect_x_to_y, T z_near, T z_far) | ||
56 | { | ||
57 | const T y_scale = 1 / std::tan(fov_y / 2); | ||
58 | const T x_scale = y_scale / aspect_x_to_y; | ||
55 | projection(const vector<2, T> scale, T z_near, T z_far) { | ||
59 | 56 | const T z_scale = z_far / (z_far - z_near); | const T z_scale = z_far / (z_far - z_near); |
60 | 57 | const T z_shift = - z_scale * z_near; | const T z_shift = - z_scale * z_near; |
61 | return {{{ x_scale, 0, 0, 0 }, | ||
62 | { 0, y_scale, 0, 0 }, | ||
58 | return {{{ scale.x, 0, 0, 0 }, | ||
59 | { 0, scale.y, 0, 0 }, | ||
63 | 60 | { 0, 0, z_scale, 1 }, | { 0, 0, z_scale, 1 }, |
64 | 61 | { 0, 0, z_shift, 0 }}}; | { 0, 0, z_shift, 0 }}}; |
65 | 62 | } | } |
63 | T_IMPL MATRIX(4) | ||
64 | projection_fov_y(T fov_y, T aspect_x_to_y, T z_near, T z_far) { | ||
65 | const T y_scale = 1 / std::tan(fov_y / 2); | ||
66 | const T x_scale = y_scale / aspect_x_to_y; | ||
67 | return projection({x_scale, y_scale}, z_near, z_far); | ||
68 | } | ||
69 | T_IMPL MATRIX(4) | ||
70 | projection_fov_x(T fov_x, T aspect_x_to_y, T z_near, T z_far) { | ||
71 | const T x_scale = 1 / std::tan(fov_x / 2); | ||
72 | const T y_scale = x_scale * aspect_x_to_y; | ||
73 | return projection({x_scale, y_scale}, z_near, z_far); | ||
74 | } | ||
75 | T_IMPL MATRIX(4) | ||
76 | projection_fov_xy(T fov_x, T fov_y, T z_near, T z_far) { | ||
77 | const T x_scale = 1 / std::tan(fov_x / 2); | ||
78 | const T y_scale = 1 / std::tan(fov_y / 2); | ||
79 | return projection({x_scale, y_scale}, z_near, z_far); | ||
80 | } | ||
81 | |||
66 | 82 | T_IMPL MATRIX(3) | T_IMPL MATRIX(3) |
67 | 83 | rotation(const VECTOR(3)& unit, T radians) | rotation(const VECTOR(3)& unit, T radians) |
68 | 84 | { | { |