5 instantiations of Vector3
Microsoft.Gen.Logging.Generated.Tests (1)
LogPropertiesTests.cs (1)
107
P17 = new
Vector3
(1, 2, 3),
Microsoft.Maui (1)
Platform\ViewExtensions.cs (1)
36
internal static Vector3 ExtractScale(this Matrix4x4 matrix) => new
Vector3
(matrix.M11, matrix.M22, matrix.M33);
Microsoft.Maui.Essentials (3)
Accelerometer\Accelerometer.shared.cs (1)
146
Acceleration = new
Vector3
(x, y, z);
Gyroscope\Gyroscope.shared.cs (1)
134
AngularVelocity = new
Vector3
(x, y, z);
Magnetometer\Magnetometer.shared.cs (1)
138
MagneticField = new
Vector3
(x, y, z);
580 references to Vector3
Microsoft.Gen.Logging.Generated.Tests (1)
test\Generators\Microsoft.Gen.Logging\TestClasses\LogPropertiesSpecialTypesExtensions.cs (1)
34
public
Vector3
P17 { get; set; }
Microsoft.Maui (2)
Platform\ViewExtensions.cs (2)
34
internal static
Vector3
ExtractPosition(this Matrix4x4 matrix) => matrix.Translation;
36
internal static
Vector3
ExtractScale(this Matrix4x4 matrix) => new Vector3(matrix.M11, matrix.M22, matrix.M33);
Microsoft.Maui.Essentials (5)
Accelerometer\Accelerometer.shared.cs (3)
151
public
Vector3
Acceleration { get; }
158
/// Compares the underlying <see cref="
Vector3
"/> instances.
278
void ProcessShakeEvent(
Vector3
acceleration)
Gyroscope\Gyroscope.shared.cs (1)
139
public
Vector3
AngularVelocity { get; }
Magnetometer\Magnetometer.shared.cs (1)
143
public
Vector3
MagneticField { get; }
netstandard (1)
netstandard.cs (1)
1340
[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Numerics.
Vector3
))]
System.Numerics (1)
System.Numerics.cs (1)
11
[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Numerics.
Vector3
))]
System.Numerics.Vectors (1)
artifacts\obj\System.Numerics.Vectors\Debug\net10.0\System.Numerics.Vectors.Forwards.cs (1)
10
[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Numerics.
Vector3
))]
System.Private.CoreLib (569)
src\libraries\System.Private.CoreLib\src\System\Numerics\Matrix4x4.cs (49)
152
public
Vector3
Translation
580
public static Matrix4x4 CreateBillboard(
Vector3
objectPosition,
Vector3
cameraPosition,
Vector3
cameraUpVector,
Vector3
cameraForwardVector)
589
public static Matrix4x4 CreateBillboardLeftHanded(
Vector3
objectPosition,
Vector3
cameraPosition,
Vector3
cameraUpVector,
Vector3
cameraForwardVector)
599
public static Matrix4x4 CreateConstrainedBillboard(
Vector3
objectPosition,
Vector3
cameraPosition,
Vector3
rotateAxis,
Vector3
cameraForwardVector,
Vector3
objectForwardVector)
609
public static Matrix4x4 CreateConstrainedBillboardLeftHanded(
Vector3
objectPosition,
Vector3
cameraPosition,
Vector3
rotateAxis,
Vector3
cameraForwardVector,
Vector3
objectForwardVector)
616
public static Matrix4x4 CreateFromAxisAngle(
Vector3
axis, float angle)
638
public static Matrix4x4 CreateLookAt(
Vector3
cameraPosition,
Vector3
cameraTarget,
Vector3
cameraUpVector)
640
Vector3
cameraDirection = cameraTarget - cameraPosition;
649
public static Matrix4x4 CreateLookAtLeftHanded(
Vector3
cameraPosition,
Vector3
cameraTarget,
Vector3
cameraUpVector)
651
Vector3
cameraDirection = cameraTarget - cameraPosition;
660
public static Matrix4x4 CreateLookTo(
Vector3
cameraPosition,
Vector3
cameraDirection,
Vector3
cameraUpVector)
668
public static Matrix4x4 CreateLookToLeftHanded(
Vector3
cameraPosition,
Vector3
cameraDirection,
Vector3
cameraUpVector)
823
public static Matrix4x4 CreateRotationX(float radians,
Vector3
centerPoint)
836
public static Matrix4x4 CreateRotationY(float radians,
Vector3
centerPoint)
849
public static Matrix4x4 CreateRotationZ(float radians,
Vector3
centerPoint)
866
public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale,
Vector3
centerPoint)
872
public static Matrix4x4 CreateScale(
Vector3
scales)
879
public static Matrix4x4 CreateScale(
Vector3
scales,
Vector3
centerPoint)
892
public static Matrix4x4 CreateScale(float scale,
Vector3
centerPoint)
899
public static Matrix4x4 CreateShadow(
Vector3
lightDirection, Plane plane)
905
public static Matrix4x4 CreateTranslation(
Vector3
position)
958
public static Matrix4x4 CreateWorld(
Vector3
position,
Vector3
forward,
Vector3
up)
967
public static bool Decompose(Matrix4x4 matrix, out
Vector3
scale, out Quaternion rotation, out
Vector3
translation)
src\libraries\System.Private.CoreLib\src\System\Numerics\Matrix4x4.Impl.cs (119)
115
public static Impl CreateBillboard(in
Vector3
objectPosition, in
Vector3
cameraPosition, in
Vector3
cameraUpVector, in
Vector3
cameraForwardVector)
119
Vector3
axisZ = objectPosition - cameraPosition;
129
axisZ =
Vector3
.Normalize(axisZ);
132
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(cameraUpVector, axisZ));
133
Vector3
axisY =
Vector3
.Cross(axisZ, axisX);
146
public static Impl CreateBillboardLeftHanded(in
Vector3
objectPosition, in
Vector3
cameraPosition, in
Vector3
cameraUpVector, in
Vector3
cameraForwardVector)
150
Vector3
axisZ = cameraPosition - objectPosition;
160
axisZ =
Vector3
.Normalize(axisZ);
163
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(cameraUpVector, axisZ));
164
Vector3
axisY =
Vector3
.Cross(axisZ, axisX);
177
public static Impl CreateConstrainedBillboard(in
Vector3
objectPosition, in
Vector3
cameraPosition, in
Vector3
rotateAxis, in
Vector3
cameraForwardVector, in
Vector3
objectForwardVector)
181
Vector3
faceDir = objectPosition - cameraPosition;
191
faceDir =
Vector3
.Normalize(faceDir);
194
Vector3
axisY = rotateAxis;
196
float dot =
Vector3
.Dot(axisY, faceDir);
212
dot =
Vector3
.Dot(axisY, faceDir);
220
faceDir = (float.Abs(axisY.Z) > BillboardMinAngle) ?
Vector3
.UnitX :
Vector3
.Create(0, 0, -1);
224
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(axisY, faceDir));
225
Vector3
axisZ =
Vector3
.Normalize(
Vector3
.Cross(axisX, axisY));
237
public static Impl CreateConstrainedBillboardLeftHanded(in
Vector3
objectPosition, in
Vector3
cameraPosition, in
Vector3
rotateAxis, in
Vector3
cameraForwardVector, in
Vector3
objectForwardVector)
241
Vector3
faceDir = cameraPosition - objectPosition;
251
faceDir =
Vector3
.Normalize(faceDir);
254
Vector3
axisY = rotateAxis;
256
float dot =
Vector3
.Dot(axisY, faceDir);
272
dot =
Vector3
.Dot(axisY, faceDir);
280
faceDir = (float.Abs(axisY.Z) > BillboardMinAngle) ?
Vector3
.Create(-1, 0, 0) :
Vector3
.Create(0, 0, -1);
284
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(axisY, faceDir));
285
Vector3
axisZ =
Vector3
.Normalize(
Vector3
.Cross(axisX, axisY));
298
public static Impl CreateFromAxisAngle(in
Vector3
axis, float angle)
351
public static Impl CreateLookTo(in
Vector3
cameraPosition, in
Vector3
cameraDirection, in
Vector3
cameraUpVector)
360
public static Impl CreateLookToLeftHanded(in
Vector3
cameraPosition, in
Vector3
cameraDirection, in
Vector3
cameraUpVector)
365
Vector3
axisZ =
Vector3
.Normalize(cameraDirection);
366
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(cameraUpVector, axisZ));
367
Vector3
axisY =
Vector3
.Cross(axisZ, axisX);
368
Vector3
negativeCameraPosition = -cameraPosition;
372
result.X = Vector4.Create(axisX,
Vector3
.Dot(axisX, negativeCameraPosition));
373
result.Y = Vector4.Create(axisY,
Vector3
.Dot(axisY, negativeCameraPosition));
374
result.Z = Vector4.Create(axisZ,
Vector3
.Dot(axisZ, negativeCameraPosition));
666
public static Impl CreateRotationX(float radians, in
Vector3
centerPoint)
709
public static Impl CreateRotationY(float radians, in
Vector3
centerPoint)
752
public static Impl CreateRotationZ(float radians, in
Vector3
centerPoint)
788
public static Impl CreateScale(float scaleX, float scaleY, float scaleZ, in
Vector3
centerPoint)
795
result.W = Vector4.Create(centerPoint * (
Vector3
.One -
Vector3
.Create(scaleX, scaleY, scaleZ)), 1);
801
public static Impl CreateScale(in
Vector3
scales)
814
public static Impl CreateScale(in
Vector3
scales, in
Vector3
centerPoint)
821
result.W = Vector4.Create(centerPoint * (
Vector3
.One - scales), 1);
840
public static Impl CreateScale(float scale, in
Vector3
centerPoint)
847
result.W = Vector4.Create(centerPoint * (
Vector3
.One -
Vector3
.Create(scale)), 1);
853
public static Impl CreateShadow(in
Vector3
lightDirection, in Plane plane)
872
public static Impl CreateTranslation(in
Vector3
position)
933
public static Impl CreateWorld(in
Vector3
position, in
Vector3
forward, in
Vector3
up)
935
Vector3
axisZ =
Vector3
.Normalize(-forward);
936
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(up, axisZ));
937
Vector3
axisY =
Vector3
.Cross(axisZ, axisX);
950
public static unsafe bool Decompose(in Impl matrix, out
Vector3
scale, out Quaternion rotation, out
Vector3
translation)
954
Vector3
* canonicalBasis = stackalloc
Vector3
[3] {
955
Vector3
.UnitX,
956
Vector3
.UnitY,
957
Vector3
.UnitZ,
962
Vector3
** vectorBasis = stackalloc
Vector3
*[3] {
963
(
Vector3
*)&matTemp.X,
964
(
Vector3
*)&matTemp.Y,
965
(
Vector3
*)&matTemp.Z,
1040
*vectorBasis[a] =
Vector3
.Normalize(*vectorBasis[a]);
1090
*vectorBasis[b] =
Vector3
.Cross(*vectorBasis[a], canonicalBasis[cc]);
1093
*vectorBasis[b] =
Vector3
.Normalize(*vectorBasis[b]);
1097
*vectorBasis[c] =
Vector3
.Cross(*vectorBasis[a], *vectorBasis[b]);
1100
*vectorBasis[c] =
Vector3
.Normalize(*vectorBasis[c]);
1132
scale = Unsafe.ReadUnaligned<
Vector3
>(scales);
src\libraries\System.Private.CoreLib\src\System\Numerics\Plane.cs (13)
18
public
Vector3
Normal;
38
public Plane(
Vector3
normal, float d)
62
public static Plane Create(
Vector3
normal, float d) => Vector4.Create(normal, d).AsPlane();
79
public static Plane CreateFromVertices(
Vector3
point1,
Vector3
point2,
Vector3
point3)
84
Vector3
normal =
Vector3
.Normalize(
Vector3
.Cross(point2 - point1, point3 - point1));
88
-
Vector3
.Dot(normal, point1)
104
public static float DotCoordinate(Plane plane,
Vector3
value)
116
public static float DotNormal(Plane plane,
Vector3
value)
121
return
Vector3
.Dot(plane.Normal, value);
src\libraries\System.Private.CoreLib\src\System\Numerics\Quaternion.cs (8)
45
public Quaternion(
Vector3
vectorPart, float scalarPart)
208
public static Quaternion Create(
Vector3
vectorPart, float scalarPart) => Vector4.Create(vectorPart, scalarPart).AsQuaternion();
216
public static Quaternion CreateFromAxisAngle(
Vector3
axis, float angle)
222
return (Vector4.Create(axis, 1) * Vector4.Create(
Vector3
.Create(s), c)).AsQuaternion();
284
(
Vector3
sin,
Vector3
cos) =
Vector3
.SinCos(
Vector3
.Create(roll, pitch, yaw) * 0.5f);
src\libraries\System.Private.CoreLib\src\System\Numerics\Vector2.Extensions.cs (6)
12
/// <summary>Reinterprets a <see cref="Vector2" /> to a new <see cref="
Vector3
" /> with the new elements zeroed.</summary>
14
/// <returns><paramref name="value" /> reinterpreted to a new <see cref="
Vector3
" /> with the new elements zeroed.</returns>
15
public static
Vector3
AsVector3(this Vector2 value) => value.AsVector128().AsVector3();
17
/// <summary>Reinterprets a <see cref="Vector2" /> to a new <see cref="
Vector3
" /> with the new elements undefined.</summary>
19
/// <returns><paramref name="value" /> reinterpreted to a new <see cref="
Vector3
" /> with the new elements undefined.</returns>
20
public static
Vector3
AsVector3Unsafe(this Vector2 value) => value.AsVector128Unsafe().AsVector3();
src\libraries\System.Private.CoreLib\src\System\Numerics\Vector3.cs (322)
18
public partial struct Vector3 : IEquatable<
Vector3
>, IFormattable
20
/// <summary>Specifies the alignment of the vector as used by the <see cref="LoadAligned(float*)" /> and <see cref="Vector.StoreAligned(
Vector3
, float*)" /> APIs.</summary>
49
/// <summary>Creates a new <see cref="
Vector3
" /> object whose three elements have the same value.</summary>
57
/// <summary>Creates a new <see cref="
Vector3
" /> object from the specified <see cref="Vector2" /> object and the specified value.</summary>
85
public static
Vector3
AllBitsSet
92
public static
Vector3
E
99
public static
Vector3
Epsilon
106
public static
Vector3
NaN
113
public static
Vector3
NegativeInfinity
120
public static
Vector3
NegativeZero
127
public static
Vector3
One
134
public static
Vector3
Pi
141
public static
Vector3
PositiveInfinity
148
public static
Vector3
Tau
156
public static
Vector3
UnitX
164
public static
Vector3
UnitY
172
public static
Vector3
UnitZ
179
public static
Vector3
Zero
205
/// <remarks>The <see cref="op_Addition" /> method defines the addition operation for <see cref="
Vector3
" /> objects.</remarks>
208
public static
Vector3
operator +(
Vector3
left,
Vector3
right) => (left.AsVector128Unsafe() + right.AsVector128Unsafe()).AsVector3();
214
/// <remarks>The <see cref="
Vector3
.op_Division" /> method defines the division operation for <see cref="
Vector3
" /> objects.</remarks>
217
public static
Vector3
operator /(
Vector3
left,
Vector3
right) => (left.AsVector128Unsafe() / right.AsVector128Unsafe()).AsVector3();
223
/// <remarks>The <see cref="
Vector3
.op_Division" /> method defines the division operation for <see cref="
Vector3
" /> objects.</remarks>
226
public static
Vector3
operator /(
Vector3
value1, float value2) => (value1.AsVector128Unsafe() / value2).AsVector3();
232
/// <remarks>Two <see cref="
Vector3
" /> objects are equal if each element in <paramref name="left" /> is equal to the corresponding element in <paramref name="right" />.</remarks>
235
public static bool operator ==(
Vector3
left,
Vector3
right) => left.AsVector128() == right.AsVector128();
242
public static bool operator !=(
Vector3
left,
Vector3
right) => !(left == right);
248
/// <remarks>The <see cref="
Vector3
.op_Multiply" /> method defines the multiplication operation for <see cref="
Vector3
" /> objects.</remarks>
251
public static
Vector3
operator *(
Vector3
left,
Vector3
right) => (left.AsVector128Unsafe() * right.AsVector128Unsafe()).AsVector3();
257
/// <remarks>The <see cref="
Vector3
.op_Multiply" /> method defines the multiplication operation for <see cref="
Vector3
" /> objects.</remarks>
260
public static
Vector3
operator *(
Vector3
left, float right) => (left.AsVector128Unsafe() * right).AsVector3();
266
/// <remarks>The <see cref="
Vector3
.op_Multiply" /> method defines the multiplication operation for <see cref="
Vector3
" /> objects.</remarks>
268
public static
Vector3
operator *(float left,
Vector3
right) => right * left;
274
/// <remarks>The <see cref="op_Subtraction" /> method defines the subtraction operation for <see cref="
Vector3
" /> objects.</remarks>
277
public static
Vector3
operator -(
Vector3
left,
Vector3
right) => (left.AsVector128Unsafe() - right.AsVector128Unsafe()).AsVector3();
282
/// <remarks>The <see cref="op_UnaryNegation" /> method defines the unary negation operation for <see cref="
Vector3
" /> objects.</remarks>
285
public static
Vector3
operator -(
Vector3
value) => (-value.AsVector128Unsafe()).AsVector3();
290
public static
Vector3
operator &(
Vector3
left,
Vector3
right) => (left.AsVector128Unsafe() & right.AsVector128Unsafe()).AsVector3();
295
public static
Vector3
operator |(
Vector3
left,
Vector3
right) => (left.AsVector128Unsafe() | right.AsVector128Unsafe()).AsVector3();
300
public static
Vector3
operator ^(
Vector3
left,
Vector3
right) => (left.AsVector128Unsafe() ^ right.AsVector128Unsafe()).AsVector3();
305
public static
Vector3
operator <<(
Vector3
value, int shiftAmount) => (value.AsVector128Unsafe() << shiftAmount).AsVector3();
310
public static
Vector3
operator ~(
Vector3
value) => (~value.AsVector128Unsafe()).AsVector3();
315
public static
Vector3
operator >>(
Vector3
value, int shiftAmount) => (value.AsVector128Unsafe() >> shiftAmount).AsVector3();
320
public static
Vector3
operator +(
Vector3
value) => value;
325
public static
Vector3
operator >>>(
Vector3
value, int shiftAmount) => (value.AsVector128Unsafe() >>> shiftAmount).AsVector3();
332
public static
Vector3
Abs(
Vector3
value) => Vector128.Abs(value.AsVector128Unsafe()).AsVector3();
339
public static
Vector3
Add(
Vector3
left,
Vector3
right) => left + right;
344
public static bool All(
Vector3
vector, float value) => Vector128.All(vector, value);
349
public static bool AllWhereAllBitsSet(
Vector3
vector) => Vector128.AllWhereAllBitsSet(vector);
354
public static
Vector3
AndNot(
Vector3
left,
Vector3
right) => Vector128.AndNot(left.AsVector128Unsafe(), right.AsVector128Unsafe()).AsVector3();
359
public static bool Any(
Vector3
vector, float value) => Vector128.Any(vector, value);
364
public static bool AnyWhereAllBitsSet(
Vector3
vector) => Vector128.AnyWhereAllBitsSet(vector);
368
public static
Vector3
BitwiseAnd(
Vector3
left,
Vector3
right) => left & right;
372
public static
Vector3
BitwiseOr(
Vector3
left,
Vector3
right) => left | right;
377
public static
Vector3
Clamp(
Vector3
value1,
Vector3
min,
Vector3
max) => Vector128.Clamp(value1.AsVector128Unsafe(), min.AsVector128Unsafe(), max.AsVector128Unsafe()).AsVector3();
382
public static
Vector3
ClampNative(
Vector3
value1,
Vector3
min,
Vector3
max) => Vector128.ClampNative(value1.AsVector128Unsafe(), min.AsVector128Unsafe(), max.AsVector128Unsafe()).AsVector3();
387
public static
Vector3
ConditionalSelect(
Vector3
condition,
Vector3
left,
Vector3
right) => Vector128.ConditionalSelect(condition.AsVector128Unsafe(), left.AsVector128Unsafe(), right.AsVector128Unsafe()).AsVector3();
392
public static
Vector3
CopySign(
Vector3
value,
Vector3
sign) => Vector128.CopySign(value.AsVector128Unsafe(), sign.AsVector128Unsafe()).AsVector3();
396
public static
Vector3
Cos(
Vector3
vector) => Vector128.Cos(vector.AsVector128()).AsVector3();
401
public static int Count(
Vector3
vector, float value) => Vector128.Count(vector, value);
406
public static int CountWhereAllBitsSet(
Vector3
vector) => Vector128.CountWhereAllBitsSet(vector);
408
/// <summary>Creates a new <see cref="
Vector3
" /> object whose three elements have the same value.</summary>
410
/// <returns>A new <see cref="
Vector3
" /> whose three elements have the same value.</returns>
412
public static
Vector3
Create(float value) => Vector128.Create(value).AsVector3();
414
/// <summary>Creates a new <see cref="
Vector3
" /> object from the specified <see cref="Vector2" /> object and a Z and a W component.</summary>
417
/// <returns>A new <see cref="
Vector3
" /> from the specified <see cref="Vector2" /> object and a Z and a W component.</returns>
420
public static
Vector3
Create(Vector2 vector, float z)
431
/// <returns>A new <see cref="
Vector3
" /> whose elements have the specified values.</returns>
433
public static
Vector3
Create(float x, float y, float z) => Vector128.Create(x, y, z, 0).AsVector3();
437
/// <returns>A new <see cref="
Vector3
" /> whose elements have the specified values.</returns>
440
public static
Vector3
Create(ReadOnlySpan<float> values)
446
return Unsafe.ReadUnaligned<
Vector3
>(ref Unsafe.As<float, byte>(ref MemoryMarshal.GetReference(values)));
451
/// <returns>A new <see cref="
Vector3
" /> with <see cref="X" /> initialized <paramref name="x" /> and the remaining elements initialized to zero.</returns>
453
public static
Vector3
CreateScalar(float x) => Vector128.CreateScalar(x).AsVector3();
457
/// <returns>A new <see cref="
Vector3
" /> with <see cref="X" /> initialized <paramref name="x" /> and the remaining elements left uninitialized.</returns>
459
public static
Vector3
CreateScalarUnsafe(float x) => Vector128.CreateScalarUnsafe(x).AsVector3();
466
public static
Vector3
Cross(
Vector3
vector1,
Vector3
vector2)
486
public static
Vector3
DegreesToRadians(
Vector3
degrees) => Vector128.DegreesToRadians(degrees.AsVector128Unsafe()).AsVector3();
493
public static float Distance(
Vector3
value1,
Vector3
value2) => float.Sqrt(DistanceSquared(value1, value2));
500
public static float DistanceSquared(
Vector3
value1,
Vector3
value2) => (value1 - value2).LengthSquared();
507
public static
Vector3
Divide(
Vector3
left,
Vector3
right) => left / right;
514
public static
Vector3
Divide(
Vector3
left, float divisor) => left / divisor;
522
public static float Dot(
Vector3
vector1,
Vector3
vector2) => Vector128.Dot(vector1.AsVector128(), vector2.AsVector128());
526
public static
Vector3
Exp(
Vector3
vector) => Vector128.Exp(vector.AsVector128()).AsVector3();
531
public static
Vector3
Equals(
Vector3
left,
Vector3
right) => Vector128.Equals(left.AsVector128Unsafe(), right.AsVector128Unsafe()).AsVector3();
536
public static bool EqualsAll(
Vector3
left,
Vector3
right) => Vector128.EqualsAll(left.AsVector128Unsafe(), right.AsVector128Unsafe());
541
public static bool EqualsAny(
Vector3
left,
Vector3
right) => Vector128.EqualsAny(left.AsVector128Unsafe(), right.AsVector128Unsafe());
546
public static
Vector3
FusedMultiplyAdd(
Vector3
left,
Vector3
right,
Vector3
addend) => Vector128.FusedMultiplyAdd(left.AsVector128Unsafe(), right.AsVector128Unsafe(), addend.AsVector128Unsafe()).AsVector3();
551
public static
Vector3
GreaterThan(
Vector3
left,
Vector3
right) => Vector128.GreaterThan(left.AsVector128Unsafe(), right.AsVector128Unsafe()).AsVector3();
556
public static bool GreaterThanAll(
Vector3
left,
Vector3
right) => Vector128.GreaterThanAll(left.AsVector128Unsafe(), right.AsVector128Unsafe());
561
public static bool GreaterThanAny(
Vector3
left,
Vector3
right) => Vector128.GreaterThanAny(left.AsVector128Unsafe(), right.AsVector128Unsafe());
566
public static
Vector3
GreaterThanOrEqual(
Vector3
left,
Vector3
right) => Vector128.GreaterThanOrEqual(left.AsVector128Unsafe(), right.AsVector128Unsafe()).AsVector3();
571
public static bool GreaterThanOrEqualAll(
Vector3
left,
Vector3
right) => Vector128.GreaterThanOrEqualAll(left.AsVector128Unsafe(), right.AsVector128Unsafe());
576
public static bool GreaterThanOrEqualAny(
Vector3
left,
Vector3
right) => Vector128.GreaterThanOrEqualAny(left.AsVector128Unsafe(), right.AsVector128Unsafe());
581
public static
Vector3
Hypot(
Vector3
x,
Vector3
y) => Vector128.Hypot(x.AsVector128Unsafe(), y.AsVector128Unsafe()).AsVector3();
586
public static int IndexOf(
Vector3
vector, float value) => Vector128.IndexOf(vector, value);
591
public static int IndexOfWhereAllBitsSet(
Vector3
vector) => Vector128.IndexOfWhereAllBitsSet(vector);
596
public static
Vector3
IsEvenInteger(
Vector3
vector) => Vector128.IsEvenInteger(vector.AsVector128()).AsVector3();
601
public static
Vector3
IsFinite(
Vector3
vector) => Vector128.IsFinite(vector.AsVector128()).AsVector3();
606
public static
Vector3
IsInfinity(
Vector3
vector) => Vector128.IsInfinity(vector.AsVector128()).AsVector3();
611
public static
Vector3
IsInteger(
Vector3
vector) => Vector128.IsInteger(vector.AsVector128()).AsVector3();
616
public static
Vector3
IsNaN(
Vector3
vector) => Vector128.IsNaN(vector.AsVector128()).AsVector3();
621
public static
Vector3
IsNegative(
Vector3
vector) => Vector128.IsNegative(vector.AsVector128()).AsVector3();
626
public static
Vector3
IsNegativeInfinity(
Vector3
vector) => Vector128.IsNegativeInfinity(vector.AsVector128()).AsVector3();
631
public static
Vector3
IsNormal(
Vector3
vector) => Vector128.IsNormal(vector.AsVector128()).AsVector3();
636
public static
Vector3
IsOddInteger(
Vector3
vector) => Vector128.IsOddInteger(vector.AsVector128()).AsVector3();
641
public static
Vector3
IsPositive(
Vector3
vector) => Vector128.IsPositive(vector.AsVector128()).AsVector3();
646
public static
Vector3
IsPositiveInfinity(
Vector3
vector) => Vector128.IsPositiveInfinity(vector.AsVector128()).AsVector3();
651
public static
Vector3
IsSubnormal(
Vector3
vector) => Vector128.IsSubnormal(vector.AsVector128()).AsVector3();
656
public static
Vector3
IsZero(
Vector3
vector) => Vector128.IsZero(vector.AsVector128()).AsVector3();
661
public static int LastIndexOf(
Vector3
vector, float value) => Vector128.LastIndexOf(vector, value);
666
public static int LastIndexOfWhereAllBitsSet(
Vector3
vector) => Vector128.LastIndexOfWhereAllBitsSet(vector);
671
public static
Vector3
Lerp(
Vector3
value1,
Vector3
value2, float amount) => Lerp(value1, value2, Create(amount));
676
public static
Vector3
Lerp(
Vector3
value1,
Vector3
value2,
Vector3
amount) => Vector128.Lerp(value1.AsVector128Unsafe(), value2.AsVector128Unsafe(), amount.AsVector128Unsafe()).AsVector3();
681
public static
Vector3
LessThan(
Vector3
left,
Vector3
right) => Vector128.LessThan(left.AsVector128Unsafe(), right.AsVector128Unsafe()).AsVector3();
686
public static bool LessThanAll(
Vector3
left,
Vector3
right) => Vector128.LessThanAll(left.AsVector128Unsafe(), right.AsVector128Unsafe());
691
public static bool LessThanAny(
Vector3
left,
Vector3
right) => Vector128.LessThanAny(left.AsVector128Unsafe(), right.AsVector128Unsafe());
696
public static
Vector3
LessThanOrEqual(
Vector3
left,
Vector3
right) => Vector128.LessThanOrEqual(left.AsVector128Unsafe(), right.AsVector128Unsafe()).AsVector3();
701
public static bool LessThanOrEqualAll(
Vector3
left,
Vector3
right) => Vector128.LessThanOrEqualAll(left.AsVector128Unsafe(), right.AsVector128Unsafe());
706
public static bool LessThanOrEqualAny(
Vector3
left,
Vector3
right) => Vector128.LessThanOrEqualAny(left.AsVector128Unsafe(), right.AsVector128Unsafe());
711
public static unsafe
Vector3
Load(float* source) => LoadUnsafe(in *source);
717
public static unsafe
Vector3
LoadAligned(float* source)
724
return *(
Vector3
*)source;
730
public static unsafe
Vector3
LoadAlignedNonTemporal(float* source) => LoadAligned(source);
735
public static
Vector3
LoadUnsafe(ref readonly float source)
738
return Unsafe.ReadUnaligned<
Vector3
>(in address);
745
public static
Vector3
LoadUnsafe(ref readonly float source, nuint elementOffset)
748
return Unsafe.ReadUnaligned<
Vector3
>(in address);
753
public static
Vector3
Log(
Vector3
vector) => Vector128.Log(Vector4.Create(vector, 1.0f).AsVector128()).AsVector3();
757
public static
Vector3
Log2(
Vector3
vector) => Vector128.Log2(Vector4.Create(vector, 1.0f).AsVector128()).AsVector3();
762
public static
Vector3
Max(
Vector3
value1,
Vector3
value2) => Vector128.Max(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
767
public static
Vector3
MaxMagnitude(
Vector3
value1,
Vector3
value2) => Vector128.MaxMagnitude(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
772
public static
Vector3
MaxMagnitudeNumber(
Vector3
value1,
Vector3
value2) => Vector128.MaxMagnitudeNumber(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
777
public static
Vector3
MaxNative(
Vector3
value1,
Vector3
value2) => Vector128.MaxNative(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
782
public static
Vector3
MaxNumber(
Vector3
value1,
Vector3
value2) => Vector128.MaxNumber(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
787
public static
Vector3
Min(
Vector3
value1,
Vector3
value2) => Vector128.Min(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
792
public static
Vector3
MinMagnitude(
Vector3
value1,
Vector3
value2) => Vector128.MinMagnitude(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
797
public static
Vector3
MinMagnitudeNumber(
Vector3
value1,
Vector3
value2) => Vector128.MinMagnitudeNumber(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
802
public static
Vector3
MinNative(
Vector3
value1,
Vector3
value2) => Vector128.MinNative(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
807
public static
Vector3
MinNumber(
Vector3
value1,
Vector3
value2) => Vector128.MinNumber(value1.AsVector128Unsafe(), value2.AsVector128Unsafe()).AsVector3();
814
public static
Vector3
Multiply(
Vector3
left,
Vector3
right) => left * right;
821
public static
Vector3
Multiply(
Vector3
left, float right) => left * right;
828
public static
Vector3
Multiply(float left,
Vector3
right) => left * right;
833
public static
Vector3
MultiplyAddEstimate(
Vector3
left,
Vector3
right,
Vector3
addend) => Vector128.MultiplyAddEstimate(left.AsVector128Unsafe(), right.AsVector128Unsafe(), addend.AsVector128Unsafe()).AsVector3();
839
public static
Vector3
Negate(
Vector3
value) => -value;
844
public static bool None(
Vector3
vector, float value) => Vector128.None(vector, value);
849
public static bool NoneWhereAllBitsSet(
Vector3
vector) => Vector128.NoneWhereAllBitsSet(vector);
855
public static
Vector3
Normalize(
Vector3
value) => value / value.Length();
859
public static
Vector3
OnesComplement(
Vector3
value) => ~value;
864
public static
Vector3
RadiansToDegrees(
Vector3
radians) => Vector128.RadiansToDegrees(radians.AsVector128Unsafe()).AsVector3();
871
public static
Vector3
Reflect(
Vector3
vector,
Vector3
normal)
876
Vector3
tmp = Create(Dot(vector, normal));
883
public static
Vector3
Round(
Vector3
vector) => Vector128.Round(vector.AsVector128Unsafe()).AsVector3();
887
public static
Vector3
Round(
Vector3
vector, MidpointRounding mode) => Vector128.Round(vector.AsVector128Unsafe(), mode).AsVector3();
896
public static
Vector3
Shuffle(
Vector3
vector, byte xIndex, byte yIndex, byte zIndex)
905
public static
Vector3
Sin(
Vector3
vector) => Vector128.Sin(vector.AsVector128()).AsVector3();
909
public static (
Vector3
Sin,
Vector3
Cos) SinCos(
Vector3
vector)
920
public static
Vector3
SquareRoot(
Vector3
value) => Vector128.Sqrt(value.AsVector128Unsafe()).AsVector3();
927
public static
Vector3
Subtract(
Vector3
left,
Vector3
right) => left - right;
932
public static float Sum(
Vector3
value) => Vector128.Sum(value.AsVector128());
939
public static
Vector3
Transform(
Vector3
position, Matrix4x4 matrix) => Vector4.Transform(position, matrix).AsVector3();
946
public static
Vector3
Transform(
Vector3
value, Quaternion rotation) => Vector4.Transform(value, rotation).AsVector3();
953
public static
Vector3
TransformNormal(
Vector3
normal, Matrix4x4 matrix)
965
public static
Vector3
Truncate(
Vector3
vector) => Vector128.Truncate(vector.AsVector128Unsafe()).AsVector3();
969
public static
Vector3
Xor(
Vector3
left,
Vector3
right) => left ^ right;
1050
/// <remarks>The current instance and <paramref name="obj" /> are equal if <paramref name="obj" /> is a <see cref="
Vector3
" /> object and their corresponding elements are equal.</remarks>
1051
public override readonly bool Equals([NotNullWhen(true)] object? obj) => (obj is
Vector3
other) && Equals(other);
1058
public readonly bool Equals(
Vector3
other) => this.AsVector128().Equals(other.AsVector128());
src\libraries\System.Private.CoreLib\src\System\Numerics\Vector3.Extensions.cs (20)
12
/// <summary>Reinterprets a <see cref="
Vector3
" /> as a new <see cref="Vector2" />.</summary>
15
public static Vector2 AsVector2(this
Vector3
value) => value.AsVector128().AsVector2();
17
/// <summary>Converts a <see cref="
Vector3
" /> to a new <see cref="Vector4" /> with the new elements zeroed.</summary>
20
public static Vector4 AsVector4(this
Vector3
value) => value.AsVector128().AsVector4();
22
/// <summary>Converts a <see cref="
Vector3
" /> to a new <see cref="Vector4" /> with the new elements undefined.</summary>
25
public static Vector4 AsVector4Unsafe(this
Vector3
value) => value.AsVector128Unsafe().AsVector4();
30
public static uint ExtractMostSignificantBits(this
Vector3
vector) => vector.AsVector128().ExtractMostSignificantBits();
34
public static float GetElement(this
Vector3
vector, int index)
36
if ((uint)index >=
Vector3
.ElementCount)
47
public static void Store(this
Vector3
source, float* destination) => source.StoreUnsafe(ref *destination);
55
public static void StoreAligned(this
Vector3
source, float* destination)
57
if (((nuint)destination % (uint)(
Vector3
.Alignment)) != 0)
62
*(
Vector3
*)destination = source;
71
public static void StoreAlignedNonTemporal(this
Vector3
source, float* destination) => source.StoreAligned(destination);
77
public static void StoreUnsafe(this
Vector3
source, ref float destination)
89
public static void StoreUnsafe(this
Vector3
source, ref float destination, nuint elementOffset)
97
public static float ToScalar(this
Vector3
vector) => vector.AsVector128Unsafe().ToScalar();
101
public static
Vector3
WithElement(this
Vector3
vector, int index, float value)
103
if ((uint)index >=
Vector3
.ElementCount)
src\libraries\System.Private.CoreLib\src\System\Numerics\Vector4.cs (9)
69
/// <summary>Constructs a new <see cref="Vector4" /> object from the specified <see cref="
Vector3
" /> object and a W component.</summary>
73
public Vector4(
Vector3
value, float w)
461
/// <summary>Constructs a new <see cref="Vector4" /> object from the specified <see cref="
Vector3
" /> object and a W component.</summary>
464
/// <returns>A new <see cref="Vector4" /> from the specified <see cref="
Vector3
" /> object and a W component.</returns>
467
public static Vector4 Create(
Vector3
vector, float w)
510
/// <see cref="
Vector3
.Cross"/> with the addition of the fourth value which is
512
/// the cross product for <see cref="
Vector3
"/> with values [x_1/w_1, y_1/w_1, z_1/w_1]
992
public static Vector4 Transform(
Vector3
position, Matrix4x4 matrix)
1008
public static Vector4 Transform(
Vector3
value, Quaternion rotation) => Transform(Create(value, 1.0f), rotation);
src\libraries\System.Private.CoreLib\src\System\Numerics\Vector4.Extensions.cs (3)
27
/// <summary>Reinterprets a <see cref="Vector4" /> as a new <see cref="
Vector3
" />.</summary>
29
/// <returns><paramref name="value" /> reinterpreted as a new <see cref="
Vector3
" />.</returns>
30
public static
Vector3
AsVector3(this Vector4 value) => value.AsVector128().AsVector3();
src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\Vector128.Numerics.cs (20)
20
internal static bool All(
Vector3
vector, float value) => vector.AsVector128() ==
Vector3
.Create(value).AsVector128();
30
internal static bool AllWhereAllBitsSet(
Vector3
vector) => vector.AsVector128().AsInt32() ==
Vector3
.AllBitsSet.AsVector128().AsInt32();
40
internal static bool Any(
Vector3
vector, float value) => EqualsAny(vector.AsVector128(), Create(value, value, value, -1));
50
internal static bool AnyWhereAllBitsSet(
Vector3
vector) => EqualsAny(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet);
86
public static Vector128<float> AsVector128(this
Vector3
value) => Vector4.Create(value, 0).AsVector128();
128
public static Vector128<float> AsVector128Unsafe(this
Vector3
value)
149
/// <summary>Reinterprets a <see langword="Vector128<Single>" /> as a new <see cref="
Vector3
" />.</summary>
151
/// <returns><paramref name="value" /> reinterpreted as a new <see cref="
Vector3
" />.</returns>
154
public static
Vector3
AsVector3(this Vector128<float> value)
157
return Unsafe.ReadUnaligned<
Vector3
>(ref address);
191
internal static int Count(
Vector3
vector, float value) => BitOperations.PopCount(Equals(vector.AsVector128(), Create(value, value, value, -1)).ExtractMostSignificantBits());
201
internal static int CountWhereAllBitsSet(
Vector3
vector) => BitOperations.PopCount(Equals(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet).ExtractMostSignificantBits());
215
internal static int IndexOf(
Vector3
vector, float value)
233
internal static int IndexOfWhereAllBitsSet(
Vector3
vector)
247
internal static int LastIndexOf(
Vector3
vector, float value) => 31 - BitOperations.LeadingZeroCount(Equals(vector.AsVector128(), Create(value, value, value, -1)).ExtractMostSignificantBits());
257
internal static int LastIndexOfWhereAllBitsSet(
Vector3
vector) => 31 - BitOperations.LeadingZeroCount(Equals(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet).ExtractMostSignificantBits());
267
internal static bool None(
Vector3
vector, float value) => !EqualsAny(vector.AsVector128(), Create(value, value, value, -1));
277
internal static bool NoneWhereAllBitsSet(
Vector3
vector) => !EqualsAny(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet);