Fix rotation around Y axis (#262)

Current implementation rotates clockwise which is not
the norm and not consistent to the other implemented rotations.
diff --git a/lib/src/vector_math/matrix3.dart b/lib/src/vector_math/matrix3.dart
index c2b1c83..cea8dd0 100644
--- a/lib/src/vector_math/matrix3.dart
+++ b/lib/src/vector_math/matrix3.dart
@@ -556,11 +556,11 @@
     final s = math.sin(radians);
     _m3storage[0] = c;
     _m3storage[1] = 0.0;
-    _m3storage[2] = s;
+    _m3storage[2] = -s;
     _m3storage[3] = 0.0;
     _m3storage[4] = 1.0;
     _m3storage[5] = 0.0;
-    _m3storage[6] = -s;
+    _m3storage[6] = s;
     _m3storage[7] = 0.0;
     _m3storage[8] = c;
   }
diff --git a/lib/src/vector_math_64/matrix3.dart b/lib/src/vector_math_64/matrix3.dart
index f497024..89892d3 100644
--- a/lib/src/vector_math_64/matrix3.dart
+++ b/lib/src/vector_math_64/matrix3.dart
@@ -556,11 +556,11 @@
     final s = math.sin(radians);
     _m3storage[0] = c;
     _m3storage[1] = 0.0;
-    _m3storage[2] = s;
+    _m3storage[2] = -s;
     _m3storage[3] = 0.0;
     _m3storage[4] = 1.0;
     _m3storage[5] = 0.0;
-    _m3storage[6] = -s;
+    _m3storage[6] = s;
     _m3storage[7] = 0.0;
     _m3storage[8] = c;
   }
diff --git a/test/matrix3_test.dart b/test/matrix3_test.dart
index 933c4a0..4e0c3c9 100644
--- a/test/matrix3_test.dart
+++ b/test/matrix3_test.dart
@@ -194,11 +194,32 @@
 
   relativeTest(rotX.transformed(input), input);
   relativeTest(rotY.transformed(input),
-      Vector3(1.0 / math.sqrt(2.0), 0.0, 1.0 / math.sqrt(2.0)));
+      Vector3(1.0 / math.sqrt(2.0), 0.0, -1.0 / math.sqrt(2.0)));
   relativeTest(rotZ.transformed(input),
       Vector3(1.0 / math.sqrt(2.0), 1.0 / math.sqrt(2.0), 0.0));
 }
 
+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));
+}
+
 void testMatrix3Transform2() {
   final rotZ = Matrix3.rotationZ(math.pi / 4);
   final trans = Matrix3(1.0, 0.0, 3.0, 0.0, 1.0, 2.0, 3.0, 2.0, 1.0);
@@ -334,6 +355,9 @@
     test('transform 2D', testMatrix3Transform2);
     test('rotation 2D', testMatrix3AbsoluteRotate2);
     test('transform', testMatrix3Transform);
+    test('rotation 3D x', testMatrix3RotationX);
+    test('rotation 3D y', testMatrix3RotationY);
+    test('rotation 3D z', testMatrix3RotationZ);
     test('constructor', testMatrix3ConstructorCopy);
     test('inversion', testMatrix3Inversion);
     test('dot product', testMatrix3Dot);