Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: chrome/browser/android/vr_shell/vr_math.h

Issue 2795793002: Implementation of elbow model for the controller position and rotation. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_VR_MATH_H_ 5 #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_VR_MATH_H_
6 #define CHROME_BROWSER_ANDROID_VR_SHELL_VR_MATH_H_ 6 #define CHROME_BROWSER_ANDROID_VR_SHELL_VR_MATH_H_
7 7
8 #include <array> 8 #include <array>
9 9
10 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/ gvr_types.h" 10 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/ gvr_types.h"
(...skipping 24 matching lines...) Expand all
35 } RotationAxisAngle; 35 } RotationAxisAngle;
36 36
37 typedef struct Colorf { 37 typedef struct Colorf {
38 float r; 38 float r;
39 float g; 39 float g;
40 float b; 40 float b;
41 float a; 41 float a;
42 } Colorf; 42 } Colorf;
43 43
44 void SetIdentityM(gvr::Mat4f& mat); 44 void SetIdentityM(gvr::Mat4f& mat);
45 // Left multiply a translation matrix.
45 void TranslateM(gvr::Mat4f& tmat, gvr::Mat4f& mat, float x, float y, float z); 46 void TranslateM(gvr::Mat4f& tmat, gvr::Mat4f& mat, float x, float y, float z);
47 // Left multiply a scale matrix.
46 void ScaleM(gvr::Mat4f& tmat, const gvr::Mat4f& mat, float x, float y, float z); 48 void ScaleM(gvr::Mat4f& tmat, const gvr::Mat4f& mat, float x, float y, float z);
47 49
50 float Clampf(float value, float min, float max);
51 float ToDegrees(float radians);
52
53 // Spherical Linear Interpolation
cjgrant 2017/04/03 19:25:00 // Spherical linear interpolation.
acondor_ 2017/04/19 18:44:27 Done.
54 gvr::Vec3f QuatSlerp(gvr::Vec3f start, gvr::Vec3f end, float percent);
cjgrant 2017/04/03 19:25:00 Pass start and end by const&?
acondor_ 2017/04/19 18:44:27 Done.
55
48 // Util functions that are copied from the treasure_hunt NDK demo in 56 // Util functions that are copied from the treasure_hunt NDK demo in
49 // third_party/gvr-andoir-sdk/ folder. 57 // third_party/gvr-andoir-sdk/ folder.
58 // Rotation only, ignore translation components.
50 gvr::Vec3f MatrixVectorMul(const gvr::Mat4f& m, const gvr::Vec3f& v); 59 gvr::Vec3f MatrixVectorMul(const gvr::Mat4f& m, const gvr::Vec3f& v);
51 gvr::Vec3f MatrixVectorRotate(const gvr::Mat4f& m, const gvr::Vec3f& v); 60 gvr::Vec3f MatrixVectorRotate(const gvr::Mat4f& m, const gvr::Vec3f& v);
52 gvr::Mat4f MatrixMul(const gvr::Mat4f& matrix1, const gvr::Mat4f& matrix2); 61 gvr::Mat4f MatrixMul(const gvr::Mat4f& matrix1, const gvr::Mat4f& matrix2);
53 gvr::Mat4f PerspectiveMatrixFromView(const gvr::Rectf& fov, 62 gvr::Mat4f PerspectiveMatrixFromView(const gvr::Rectf& fov,
54 float z_near, 63 float z_near,
55 float z_far); 64 float z_far);
56 65
57 // Provides the direction the head is looking towards as a 3x1 unit vector. 66 // Provides the direction the head is looking towards as a 3x1 unit vector.
58 gvr::Vec3f GetForwardVector(const gvr::Mat4f& matrix); 67 gvr::Vec3f GetForwardVector(const gvr::Mat4f& matrix);
59 68
60 gvr::Vec3f GetTranslation(const gvr::Mat4f& matrix); 69 gvr::Vec3f GetTranslation(const gvr::Mat4f& matrix);
61 70
62 gvr::Mat4f QuatToMatrix(const gvr::Quatf& quat); 71 gvr::Mat4f QuatToMatrix(const gvr::Quatf& quat);
63 72
73 float VectorLengthSquared(const gvr::Vec3f& vec);
64 float VectorLength(const gvr::Vec3f& vec); 74 float VectorLength(const gvr::Vec3f& vec);
65 gvr::Vec3f VectorSubtract(const gvr::Vec3f& a, const gvr::Vec3f& b); 75 gvr::Vec3f VectorSubtract(const gvr::Vec3f& a, const gvr::Vec3f& b);
76 gvr::Vec3f VectorAdd(const gvr::Vec3f& a, const gvr::Vec3f& b);
cjgrant 2017/04/03 19:25:00 If you're adding comments to methods above, certai
acondor_ 2017/04/19 18:44:27 Done.
66 float VectorDot(const gvr::Vec3f& a, const gvr::Vec3f& b); 77 float VectorDot(const gvr::Vec3f& a, const gvr::Vec3f& b);
78 gvr::Vec3f VectorCross(const gvr::Vec3f& a, const gvr::Vec3f& b);
79 gvr::Vec3f PointwiseVectorMul(const gvr::Vec3f& a, const gvr::Vec3f& b);
80 gvr::Vec3f VectorScalarMul(const gvr::Vec3f& a, float s);
81 float VectorAngleDegrees(const gvr::Vec3f& a, const gvr::Vec3f& b);
67 82
68 // Normalize a vector, and return its original length. 83 // Normalize a vector, and return its original length.
69 float NormalizeVector(gvr::Vec3f& vec); 84 float NormalizeVector(gvr::Vec3f& vec);
70 85
71 void NormalizeQuat(gvr::Quatf& quat); 86 void NormalizeQuat(gvr::Quatf& quat);
72 87
88 gvr::Quatf QuatMultiply(const gvr::Quatf& a, const gvr::Quatf& b);
89 gvr::Quatf QuatAdd(const gvr::Quatf& a, const gvr::Quatf& b);
90 gvr::Quatf QuatScalarMul(const gvr::Quatf& quat, float s);
91 gvr::Quatf QuatInverted(const gvr::Quatf& quat);
92 float QuatAngleDegrees(const gvr::Quatf& a, const gvr::Quatf& b);
93 gvr::Quatf QuatLerp(const gvr::Quatf& a, const gvr::Quatf& b, float t);
94
73 gvr::Quatf QuatFromAxisAngle(const gvr::Vec3f& axis, float angle); 95 gvr::Quatf QuatFromAxisAngle(const gvr::Vec3f& axis, float angle);
96 gvr::Quatf FromToRotation(const gvr::Vec3f& from, const gvr::Vec3f& to);
cjgrant 2017/04/03 19:25:00 From the name, I have no idea what this method doe
acondor_ 2017/04/19 18:44:27 Done.
74 97
75 gvr::Vec3f GetRayPoint(const gvr::Vec3f& rayOrigin, 98 gvr::Vec3f GetRayPoint(const gvr::Vec3f& rayOrigin,
76 const gvr::Vec3f& rayVector, 99 const gvr::Vec3f& rayVector,
77 float scale); 100 float scale);
78 101
79 float Distance(const gvr::Vec3f& vec1, const gvr::Vec3f& vec2); 102 float Distance(const gvr::Vec3f& vec1, const gvr::Vec3f& vec2);
80 103
81 // Angle between the vectors' projections to the XZ plane. 104 // Angle between the vectors' projections to the XZ plane.
82 bool XZAngle(const gvr::Vec3f& vec1, const gvr::Vec3f& vec2, float* angle); 105 bool XZAngle(const gvr::Vec3f& vec1, const gvr::Vec3f& vec2, float* angle);
83 106
84 } // namespace vr_shell 107 } // namespace vr_shell
85 108
86 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_MATH_H_ 109 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_MATH_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698