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);
576 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 (565)
src\libraries\System.Private.CoreLib\src\System\Numerics\Matrix4x4.cs (49)
151
public
Vector3
Translation
233
public static Matrix4x4 CreateBillboard(
Vector3
objectPosition,
Vector3
cameraPosition,
Vector3
cameraUpVector,
Vector3
cameraForwardVector)
242
public static Matrix4x4 CreateBillboardLeftHanded(
Vector3
objectPosition,
Vector3
cameraPosition,
Vector3
cameraUpVector,
Vector3
cameraForwardVector)
252
public static Matrix4x4 CreateConstrainedBillboard(
Vector3
objectPosition,
Vector3
cameraPosition,
Vector3
rotateAxis,
Vector3
cameraForwardVector,
Vector3
objectForwardVector)
262
public static Matrix4x4 CreateConstrainedBillboardLeftHanded(
Vector3
objectPosition,
Vector3
cameraPosition,
Vector3
rotateAxis,
Vector3
cameraForwardVector,
Vector3
objectForwardVector)
269
public static Matrix4x4 CreateFromAxisAngle(
Vector3
axis, float angle)
291
public static Matrix4x4 CreateLookAt(
Vector3
cameraPosition,
Vector3
cameraTarget,
Vector3
cameraUpVector)
293
Vector3
cameraDirection = cameraTarget - cameraPosition;
302
public static Matrix4x4 CreateLookAtLeftHanded(
Vector3
cameraPosition,
Vector3
cameraTarget,
Vector3
cameraUpVector)
304
Vector3
cameraDirection = cameraTarget - cameraPosition;
313
public static Matrix4x4 CreateLookTo(
Vector3
cameraPosition,
Vector3
cameraDirection,
Vector3
cameraUpVector)
321
public static Matrix4x4 CreateLookToLeftHanded(
Vector3
cameraPosition,
Vector3
cameraDirection,
Vector3
cameraUpVector)
476
public static Matrix4x4 CreateRotationX(float radians,
Vector3
centerPoint)
489
public static Matrix4x4 CreateRotationY(float radians,
Vector3
centerPoint)
502
public static Matrix4x4 CreateRotationZ(float radians,
Vector3
centerPoint)
519
public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale,
Vector3
centerPoint)
525
public static Matrix4x4 CreateScale(
Vector3
scales)
532
public static Matrix4x4 CreateScale(
Vector3
scales,
Vector3
centerPoint)
545
public static Matrix4x4 CreateScale(float scale,
Vector3
centerPoint)
552
public static Matrix4x4 CreateShadow(
Vector3
lightDirection, Plane plane)
558
public static Matrix4x4 CreateTranslation(
Vector3
position)
611
public static Matrix4x4 CreateWorld(
Vector3
position,
Vector3
forward,
Vector3
up)
620
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 (120)
119
public
Vector3
Translation
215
public static Impl CreateBillboard(in
Vector3
objectPosition, in
Vector3
cameraPosition, in
Vector3
cameraUpVector, in
Vector3
cameraForwardVector)
219
Vector3
axisZ = objectPosition - cameraPosition;
229
axisZ =
Vector3
.Normalize(axisZ);
232
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(cameraUpVector, axisZ));
233
Vector3
axisY =
Vector3
.Cross(axisZ, axisX);
246
public static Impl CreateBillboardLeftHanded(in
Vector3
objectPosition, in
Vector3
cameraPosition, in
Vector3
cameraUpVector, in
Vector3
cameraForwardVector)
250
Vector3
axisZ = cameraPosition - objectPosition;
260
axisZ =
Vector3
.Normalize(axisZ);
263
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(cameraUpVector, axisZ));
264
Vector3
axisY =
Vector3
.Cross(axisZ, axisX);
277
public static Impl CreateConstrainedBillboard(in
Vector3
objectPosition, in
Vector3
cameraPosition, in
Vector3
rotateAxis, in
Vector3
cameraForwardVector, in
Vector3
objectForwardVector)
281
Vector3
faceDir = objectPosition - cameraPosition;
291
faceDir =
Vector3
.Normalize(faceDir);
294
Vector3
axisY = rotateAxis;
296
float dot =
Vector3
.Dot(axisY, faceDir);
312
dot =
Vector3
.Dot(axisY, faceDir);
320
faceDir = (float.Abs(axisY.Z) > BillboardMinAngle) ?
Vector3
.UnitX :
Vector3
.Create(0, 0, -1);
324
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(axisY, faceDir));
325
Vector3
axisZ =
Vector3
.Normalize(
Vector3
.Cross(axisX, axisY));
337
public static Impl CreateConstrainedBillboardLeftHanded(in
Vector3
objectPosition, in
Vector3
cameraPosition, in
Vector3
rotateAxis, in
Vector3
cameraForwardVector, in
Vector3
objectForwardVector)
341
Vector3
faceDir = cameraPosition - objectPosition;
351
faceDir =
Vector3
.Normalize(faceDir);
354
Vector3
axisY = rotateAxis;
356
float dot =
Vector3
.Dot(axisY, faceDir);
372
dot =
Vector3
.Dot(axisY, faceDir);
380
faceDir = (float.Abs(axisY.Z) > BillboardMinAngle) ?
Vector3
.Create(-1, 0, 0) :
Vector3
.Create(0, 0, -1);
384
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(axisY, faceDir));
385
Vector3
axisZ =
Vector3
.Normalize(
Vector3
.Cross(axisX, axisY));
398
public static Impl CreateFromAxisAngle(in
Vector3
axis, float angle)
451
public static Impl CreateLookTo(in
Vector3
cameraPosition, in
Vector3
cameraDirection, in
Vector3
cameraUpVector)
460
public static Impl CreateLookToLeftHanded(in
Vector3
cameraPosition, in
Vector3
cameraDirection, in
Vector3
cameraUpVector)
465
Vector3
axisZ =
Vector3
.Normalize(cameraDirection);
466
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(cameraUpVector, axisZ));
467
Vector3
axisY =
Vector3
.Cross(axisZ, axisX);
468
Vector3
negativeCameraPosition = -cameraPosition;
472
result.X = Vector4.Create(axisX,
Vector3
.Dot(axisX, negativeCameraPosition));
473
result.Y = Vector4.Create(axisY,
Vector3
.Dot(axisY, negativeCameraPosition));
474
result.Z = Vector4.Create(axisZ,
Vector3
.Dot(axisZ, negativeCameraPosition));
766
public static Impl CreateRotationX(float radians, in
Vector3
centerPoint)
809
public static Impl CreateRotationY(float radians, in
Vector3
centerPoint)
852
public static Impl CreateRotationZ(float radians, in
Vector3
centerPoint)
888
public static Impl CreateScale(float scaleX, float scaleY, float scaleZ, in
Vector3
centerPoint)
895
result.W = Vector4.Create(centerPoint * (
Vector3
.One -
Vector3
.Create(scaleX, scaleY, scaleZ)), 1);
901
public static Impl CreateScale(in
Vector3
scales)
914
public static Impl CreateScale(in
Vector3
scales, in
Vector3
centerPoint)
921
result.W = Vector4.Create(centerPoint * (
Vector3
.One - scales), 1);
940
public static Impl CreateScale(float scale, in
Vector3
centerPoint)
947
result.W = Vector4.Create(centerPoint * (
Vector3
.One -
Vector3
.Create(scale)), 1);
953
public static Impl CreateShadow(in
Vector3
lightDirection, in Plane plane)
972
public static Impl CreateTranslation(in
Vector3
position)
1033
public static Impl CreateWorld(in
Vector3
position, in
Vector3
forward, in
Vector3
up)
1035
Vector3
axisZ =
Vector3
.Normalize(-forward);
1036
Vector3
axisX =
Vector3
.Normalize(
Vector3
.Cross(up, axisZ));
1037
Vector3
axisY =
Vector3
.Cross(axisZ, axisX);
1050
public static unsafe bool Decompose(in Impl matrix, out
Vector3
scale, out Quaternion rotation, out
Vector3
translation)
1054
Vector3
* canonicalBasis = stackalloc
Vector3
[3] {
1055
Vector3
.UnitX,
1056
Vector3
.UnitY,
1057
Vector3
.UnitZ,
1062
Vector3
** vectorBasis = stackalloc
Vector3
*[3] {
1063
(
Vector3
*)&matTemp.X,
1064
(
Vector3
*)&matTemp.Y,
1065
(
Vector3
*)&matTemp.Z,
1140
*vectorBasis[a] =
Vector3
.Normalize(*vectorBasis[a]);
1190
*vectorBasis[b] =
Vector3
.Cross(*vectorBasis[a], canonicalBasis[cc]);
1193
*vectorBasis[b] =
Vector3
.Normalize(*vectorBasis[b]);
1197
*vectorBasis[c] =
Vector3
.Cross(*vectorBasis[a], *vectorBasis[b]);
1200
*vectorBasis[c] =
Vector3
.Normalize(*vectorBasis[c]);
1232
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)
65
internal static Plane Create(
Vector3
normal, float d) => Vector4.Create(normal, d).AsPlane();
73
public static Plane CreateFromVertices(
Vector3
point1,
Vector3
point2,
Vector3
point3)
78
Vector3
normal =
Vector3
.Normalize(
Vector3
.Cross(point2 - point1, point3 - point1));
82
-
Vector3
.Dot(normal, point1)
98
public static float DotCoordinate(Plane plane,
Vector3
value)
110
public static float DotNormal(Plane plane,
Vector3
value)
115
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
internal 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\Vector3.cs (324)
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
internal 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
internal 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, in matrix.AsImpl()).AsVector128().AsVector3();
946
public static
Vector3
Transform(
Vector3
value, Quaternion rotation) => Vector4.Transform(value, rotation).AsVector3();
953
public static
Vector3
TransformNormal(
Vector3
normal, Matrix4x4 matrix) => TransformNormal(normal, in matrix.AsImpl());
956
internal static
Vector3
TransformNormal(
Vector3
normal, in Matrix4x4.Impl matrix)
968
public static
Vector3
Truncate(
Vector3
vector) => Vector128.Truncate(vector.AsVector128Unsafe()).AsVector3();
972
public static
Vector3
Xor(
Vector3
left,
Vector3
right) => left ^ right;
1053
/// <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>
1054
public override readonly bool Equals([NotNullWhen(true)] object? obj) => (obj is
Vector3
other) && Equals(other);
1061
public readonly bool Equals(
Vector3
other) => this.AsVector128().Equals(other.AsVector128());
src\libraries\System.Private.CoreLib\src\System\Numerics\Vector3.Extensions.cs (18)
12
/// <summary>Converts a <see cref="
Vector3
" /> to a new <see cref="Vector4" /> with the new elements zeroed.</summary>
15
public static Vector4 AsVector4(this
Vector3
value) => value.AsVector128().AsVector4();
17
/// <summary>Converts a <see cref="
Vector3
" /> to a new <see cref="Vector4" /> with the new elements undefined.</summary>
20
public static Vector4 AsVector4Unsafe(this
Vector3
value) => value.AsVector128Unsafe().AsVector4();
25
public static uint ExtractMostSignificantBits(this
Vector3
vector) => vector.AsVector128().ExtractMostSignificantBits();
29
public static float GetElement(this
Vector3
vector, int index)
31
if ((uint)index >=
Vector3
.ElementCount)
42
public static void Store(this
Vector3
source, float* destination) => source.StoreUnsafe(ref *destination);
50
public static void StoreAligned(this
Vector3
source, float* destination)
52
if (((nuint)destination % (uint)(
Vector3
.Alignment)) != 0)
57
*(
Vector3
*)destination = source;
66
public static void StoreAlignedNonTemporal(this
Vector3
source, float* destination) => source.StoreAligned(destination);
72
public static void StoreUnsafe(this
Vector3
source, ref float destination)
84
public static void StoreUnsafe(this
Vector3
source, ref float destination, nuint elementOffset)
92
public static float ToScalar(this
Vector3
vector) => vector.AsVector128Unsafe().ToScalar();
96
public static
Vector3
WithElement(this
Vector3
vector, int index, float value)
98
if ((uint)index >=
Vector3
.ElementCount)
src\libraries\System.Private.CoreLib\src\System\Numerics\Vector4.cs (10)
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]
993
public static Vector4 Transform(
Vector3
position, Matrix4x4 matrix) => Transform(position, in matrix.AsImpl());
996
internal static Vector4 Transform(
Vector3
position, in Matrix4x4.Impl matrix)
1012
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)
41
/// <summary>Reinterprets a <see cref="Vector4" /> as a new <see cref="
Vector3
" />.</summary>
43
/// <returns><paramref name="value" /> reinterpreted as a new <see cref="
Vector3
" />.</returns>
44
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);
114
public static Vector128<float> AsVector128(this
Vector3
value) => Vector4.Create(value, 0).AsVector128();
163
public static Vector128<float> AsVector128Unsafe(this
Vector3
value)
184
/// <summary>Reinterprets a <see langword="Vector128<Single>" /> as a new <see cref="
Vector3
" />.</summary>
186
/// <returns><paramref name="value" /> reinterpreted as a new <see cref="
Vector3
" />.</returns>
189
public static
Vector3
AsVector3(this Vector128<float> value)
192
return Unsafe.ReadUnaligned<
Vector3
>(ref address);
233
internal static int Count(
Vector3
vector, float value) => BitOperations.PopCount(Equals(vector.AsVector128(), Create(value, value, value, -1)).ExtractMostSignificantBits());
243
internal static int CountWhereAllBitsSet(
Vector3
vector) => BitOperations.PopCount(Equals(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet).ExtractMostSignificantBits());
257
internal static int IndexOf(
Vector3
vector, float value)
275
internal static int IndexOfWhereAllBitsSet(
Vector3
vector)
289
internal static int LastIndexOf(
Vector3
vector, float value) => 31 - BitOperations.LeadingZeroCount(Equals(vector.AsVector128(), Create(value, value, value, -1)).ExtractMostSignificantBits());
299
internal static int LastIndexOfWhereAllBitsSet(
Vector3
vector) => 31 - BitOperations.LeadingZeroCount(Equals(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet).ExtractMostSignificantBits());
309
internal static bool None(
Vector3
vector, float value) => !EqualsAny(vector.AsVector128(), Create(value, value, value, -1));
319
internal static bool NoneWhereAllBitsSet(
Vector3
vector) => !EqualsAny(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet);