-
Notifications
You must be signed in to change notification settings - Fork 78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Resolve Inconsistency in Matrix3 and Matrix4 rotateY
Implementations
#317
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lgtm, I think this is quite important to land now when 3D is more and more used in Flutter
void testMatrix3RotationX() { | ||
final rotX = Matrix3.rotationX(math.pi / 2); | ||
final input = Vector3(0.0, 1.0, 0.0); | ||
|
||
relativeTest(rotX.transformed(input), Vector3(0.0, 0.0, 1.0)); | ||
} | ||
|
||
void testMatrix3RotationY() { | ||
final rotY = Matrix3.rotationY(math.pi / 2); | ||
final input = Vector3(0.0, 0.0, 1.0); | ||
|
||
relativeTest(rotY.transformed(input), Vector3(1.0, 0.0, 0.0)); | ||
} | ||
|
||
void testMatrix3RotationZ() { | ||
final rotZ = Matrix3.rotationZ(math.pi / 2); | ||
final input = Vector3(1.0, 0.0, 0.0); | ||
|
||
relativeTest(rotZ.transformed(input), Vector3(0.0, 1.0, 0.0)); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we have the same tests in Matrix4?
Please update this PR to include a change log entry and then I'll merge it. Thanks for the fixes! |
…h, web, webdriver, webkit_inspection_protocol Revisions updated by `dart tools/rev_sdk_deps.dart`. dartdoc (https://github.com/dart-lang/dartdoc/compare/cec45fb..0de8aff): 0de8aff3 2024-03-06 Sam Rawlins Generate docs for enum static methods. (dart-lang/dartdoc#3697) 9eafdc64 2024-03-06 Sam Rawlins Rewrite Library.allOriginalModelElementNames. (dart-lang/dartdoc#3698) e8f36333 2024-03-06 Sam Rawlins Fix SDK GitHub action with some stub headers and footers (dart-lang/dartdoc#3704) 58c065d4 2024-03-05 Sam Rawlins Bump snippets activated to 0.4.3 (dart-lang/dartdoc#3702) http (https://github.com/dart-lang/http/compare/470d2c3..8d3c647): 8d3c647 2024-03-06 Brian Quinlan Add support for negotiating a subprotocol (dart-lang/http#1150) e71e739 2024-03-05 Brian Quinlan Add `WebSocket.connect` as a cross-platform connection method (dart-lang/http#1149) f14b5aa 2024-03-04 Brian Quinlan Include a description and version number in web_socket pubspec (dart-lang/http#1148) 5b656a9 2024-03-04 Brian Quinlan Add a LICENSE file to package:web_socket (dart-lang/http#1147) 557c420 2024-03-04 Brian Quinlan Implement WebSocket for the browser (dart-lang/http#1142) markdown (https://github.com/dart-lang/markdown/compare/dd47c5d..1ca5166): 1ca5166 2024-03-06 Devon Carew fix a crash when parsing alert block syntax (dart-lang/markdown#593) package_config (https://github.com/dart-lang/package_config/compare/4a7042b..3d90e69): 3d90e69 2024-03-05 Michael Thomsen Fix typo (dart-lang/package_config#149) shelf (https://github.com/dart-lang/shelf/compare/da6a69b..1acbc67): 1acbc67 2024-03-06 Andy Add shelf_router middleware examples (dart-lang/shelf#417) vector_math (https://github.com/google/vector_math.dart/compare/3706feb..7e705f7): 7e705f7 2024-03-06 6y Fix quaternion negate (google/vector_math.dart#316) 1ed8ac6 2024-03-06 6y Resolve Inconsistency in Matrix3 and Matrix4 `rotateY` Implementations (google/vector_math.dart#317) web (https://github.com/dart-lang/web/compare/8870d04..51e594b): 51e594b 2024-03-05 Srujan Gaddam Fix dictionary constructors to accept supertype members and create an empty object when there are no fields (dart-lang/web#197) 4af904f 2024-03-05 Srujan Gaddam Publish 0.5.1 (dart-lang/web#196) c72ec1a 2024-03-04 Devon Carew add instructions for re-generating the package (dart-lang/web#195) webdriver (https://github.com/google/webdriver.dart/compare/2c1b6f8..73a7ac8): 73a7ac8 2024-03-04 dependabot[bot] Bump nanasess/setup-chromedriver from 2.2.1 to 2.2.2 (google/webdriver.dart#294) webkit_inspection_protocol (https://github.com/google/webkit_inspection_protocol.dart/compare/07295b9..153fea4): 153fea4 2024-03-04 dependabot[bot] Bump nanasess/setup-chromedriver (google/webkit_inspection_protocol.dart#120) Change-Id: Ic213677a1e2430a6de56a94e0bfaa1f33e2fc7d4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/356300 Auto-Submit: Devon Carew <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
Thank you for merging the PR! Could you please provide an estimated timeline for when version 2.1.5 will be published to include this fix? Thanks! |
This PR addresses the issues highlighted in #261 and is related to the discussions in #262 and #300, as well as the historical context provided by #69.
In reference to the conversation in #262, two primary concerns were identified:
rotateY
methods in theMatrix3
andMatrix4
classes.Here's a summary of the remedial actions taken in this PR:
This PR is similar to #262. The only difference is that this PR also includes a negated rotation angle in the
obb3
test.For issue (1), the test expectations have been updated to reflect the correct signs, ensuring that all tests now pass.
Regarding issue (2), upon further investigation, it was found that the
Matrix4
class already had the correct implementation since August 23, 2014. However, theMatrix3
class has not been updated to match this, leading to a longstanding inconsistency between the two. This PR rectifies theMatrix3
rotateY
method to align with theMatrix4
implementation, bringing them into consistency.This PR is similar to #262. The only difference is that this PR also includes a negated rotation angle in the
obb3
test.By merging this PR, we will resolve the inconsistencies and adhere to the mathematical definitions of rotation matrices, as expected by the users of the
vector_math.dart
library.I look forward to your feedback and to further improving the library.