blob: ee3b49213c18fcc47337e4907ba5f3a24ab9ae0a [file] [log] [blame]
// Copyright (c) 2015, Google Inc. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
part of vector_math;
/// 4D column vector.
class Vector4 implements Vector {
final Float32List _v4storage;
/// Set the values of [result] to the minimum of [a] and [b] for each line.
static void min(Vector4 a, Vector4 b, Vector4 result) {
result
..x = math.min(a.x, b.x)
..y = math.min(a.y, b.y)
..z = math.min(a.z, b.z)
..w = math.min(a.w, b.w);
}
/// Set the values of [result] to the maximum of [a] and [b] for each line.
static void max(Vector4 a, Vector4 b, Vector4 result) {
result
..x = math.max(a.x, b.x)
..y = math.max(a.y, b.y)
..z = math.max(a.z, b.z)
..w = math.max(a.w, b.w);
}
/// Interpolate between [min] and [max] with the amount of [a] using a linear
/// interpolation and store the values in [result].
static void mix(Vector4 min, Vector4 max, double a, Vector4 result) {
result
..x = min.x + a * (max.x - min.x)
..y = min.y + a * (max.y - min.y)
..z = min.z + a * (max.z - min.z)
..w = min.w + a * (max.w - min.w);
}
/// The components of the vector.
@override
Float32List get storage => _v4storage;
/// Construct a new vector with the specified values.
factory Vector4(double x, double y, double z, double w) =>
Vector4.zero()..setValues(x, y, z, w);
/// Initialized with values from [array] starting at [offset].
factory Vector4.array(List<double> array, [int offset = 0]) =>
Vector4.zero()..copyFromArray(array, offset);
/// Zero vector.
Vector4.zero() : _v4storage = Float32List(4);
/// Constructs the identity vector.
factory Vector4.identity() => Vector4.zero()..setIdentity();
/// Splat [value] into all lanes of the vector.
factory Vector4.all(double value) => Vector4.zero()..splat(value);
/// Copy of [other].
factory Vector4.copy(Vector4 other) => Vector4.zero()..setFrom(other);
/// Constructs Vector4 with given Float32List as [storage].
Vector4.fromFloat32List(this._v4storage);
/// Constructs Vector4 with a [storage] that views given [buffer] starting at
/// [offset]. [offset] has to be multiple of [Float32List.bytesPerElement].
Vector4.fromBuffer(ByteBuffer buffer, int offset)
: _v4storage = Float32List.view(buffer, offset, 4);
/// Generate random vector in the range (0, 0, 0, 0) to (1, 1, 1, 1). You can
/// optionally pass your own random number generator.
factory Vector4.random([math.Random? rng]) {
rng ??= math.Random();
return Vector4(
rng.nextDouble(), rng.nextDouble(), rng.nextDouble(), rng.nextDouble());
}
/// Set the values of the vector.
void setValues(double x_, double y_, double z_, double w_) {
_v4storage[3] = w_;
_v4storage[2] = z_;
_v4storage[1] = y_;
_v4storage[0] = x_;
}
/// Zero the vector.
void setZero() {
_v4storage[0] = 0.0;
_v4storage[1] = 0.0;
_v4storage[2] = 0.0;
_v4storage[3] = 0.0;
}
/// Set to the identity vector.
void setIdentity() {
_v4storage[0] = 0.0;
_v4storage[1] = 0.0;
_v4storage[2] = 0.0;
_v4storage[3] = 1.0;
}
/// Set the values by copying them from [other].
void setFrom(Vector4 other) {
final otherStorage = other._v4storage;
_v4storage[3] = otherStorage[3];
_v4storage[2] = otherStorage[2];
_v4storage[1] = otherStorage[1];
_v4storage[0] = otherStorage[0];
}
/// Splat [arg] into all lanes of the vector.
void splat(double arg) {
_v4storage[3] = arg;
_v4storage[2] = arg;
_v4storage[1] = arg;
_v4storage[0] = arg;
}
/// Returns a printable string
@override
String toString() => '${_v4storage[0]},${_v4storage[1]},'
'${_v4storage[2]},${_v4storage[3]}';
/// Check if two vectors are the same.
@override
bool operator ==(Object? other) =>
(other is Vector4) &&
(_v4storage[0] == other._v4storage[0]) &&
(_v4storage[1] == other._v4storage[1]) &&
(_v4storage[2] == other._v4storage[2]) &&
(_v4storage[3] == other._v4storage[3]);
@override
int get hashCode => Object.hashAll(_v4storage);
/// Negate.
Vector4 operator -() => clone()..negate();
/// Subtract two vectors.
Vector4 operator -(Vector4 other) => clone()..sub(other);
/// Add two vectors.
Vector4 operator +(Vector4 other) => clone()..add(other);
/// Scale.
Vector4 operator /(double scale) => clone()..scale(1.0 / scale);
/// Scale.
Vector4 operator *(double scale) => clone()..scale(scale);
/// Access the component of the vector at the index [i].
double operator [](int i) => _v4storage[i];
/// Set the component of the vector at the index [i].
void operator []=(int i, double v) {
_v4storage[i] = v;
}
/// Set the length of the vector. A negative [value] will change the vectors
/// orientation and a [value] of zero will set the vector to zero.
set length(double value) {
if (value == 0.0) {
setZero();
} else {
var l = length;
if (l == 0.0) {
return;
}
l = value / l;
_v4storage[0] *= l;
_v4storage[1] *= l;
_v4storage[2] *= l;
_v4storage[3] *= l;
}
}
/// Length.
double get length => math.sqrt(length2);
/// Length squared.
double get length2 {
double sum;
sum = _v4storage[0] * _v4storage[0];
sum += _v4storage[1] * _v4storage[1];
sum += _v4storage[2] * _v4storage[2];
sum += _v4storage[3] * _v4storage[3];
return sum;
}
/// Normalizes this.
double normalize() {
final l = length;
if (l == 0.0) {
return 0.0;
}
final d = 1.0 / l;
_v4storage[0] *= d;
_v4storage[1] *= d;
_v4storage[2] *= d;
_v4storage[3] *= d;
return l;
}
/// Normalizes this. Returns length of vector before normalization.
/// DEPRCATED: Use [normalize].
@Deprecated('Use normalize() insteaed.')
double normalizeLength() => normalize();
/// Normalizes copy of this.
Vector4 normalized() => clone()..normalize();
/// Normalize vector into [out].
Vector4 normalizeInto(Vector4 out) {
out
..setFrom(this)
..normalize();
return out;
}
/// Distance from this to [arg]
double distanceTo(Vector4 arg) => math.sqrt(distanceToSquared(arg));
/// Squared distance from this to [arg]
double distanceToSquared(Vector4 arg) {
final argStorage = arg._v4storage;
final dx = _v4storage[0] - argStorage[0];
final dy = _v4storage[1] - argStorage[1];
final dz = _v4storage[2] - argStorage[2];
final dw = _v4storage[3] - argStorage[3];
return dx * dx + dy * dy + dz * dz + dw * dw;
}
/// Inner product.
double dot(Vector4 other) {
final otherStorage = other._v4storage;
double sum;
sum = _v4storage[0] * otherStorage[0];
sum += _v4storage[1] * otherStorage[1];
sum += _v4storage[2] * otherStorage[2];
sum += _v4storage[3] * otherStorage[3];
return sum;
}
/// Multiplies this by [arg].
void applyMatrix4(Matrix4 arg) {
final v1 = _v4storage[0];
final v2 = _v4storage[1];
final v3 = _v4storage[2];
final v4 = _v4storage[3];
final argStorage = arg.storage;
_v4storage[0] = argStorage[0] * v1 +
argStorage[4] * v2 +
argStorage[8] * v3 +
argStorage[12] * v4;
_v4storage[1] = argStorage[1] * v1 +
argStorage[5] * v2 +
argStorage[9] * v3 +
argStorage[13] * v4;
_v4storage[2] = argStorage[2] * v1 +
argStorage[6] * v2 +
argStorage[10] * v3 +
argStorage[14] * v4;
_v4storage[3] = argStorage[3] * v1 +
argStorage[7] * v2 +
argStorage[11] * v3 +
argStorage[15] * v4;
}
/// Relative error between this and [correct]
double relativeError(Vector4 correct) {
final correct_norm = correct.length;
final diff_norm = (this - correct).length;
return diff_norm / correct_norm;
}
/// Absolute error between this and [correct]
double absoluteError(Vector4 correct) => (this - correct).length;
/// True if any component is infinite.
bool get isInfinite {
var is_infinite = false;
is_infinite = is_infinite || _v4storage[0].isInfinite;
is_infinite = is_infinite || _v4storage[1].isInfinite;
is_infinite = is_infinite || _v4storage[2].isInfinite;
is_infinite = is_infinite || _v4storage[3].isInfinite;
return is_infinite;
}
/// True if any component is NaN.
bool get isNaN {
var is_nan = false;
is_nan = is_nan || _v4storage[0].isNaN;
is_nan = is_nan || _v4storage[1].isNaN;
is_nan = is_nan || _v4storage[2].isNaN;
is_nan = is_nan || _v4storage[3].isNaN;
return is_nan;
}
void add(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = _v4storage[0] + argStorage[0];
_v4storage[1] = _v4storage[1] + argStorage[1];
_v4storage[2] = _v4storage[2] + argStorage[2];
_v4storage[3] = _v4storage[3] + argStorage[3];
}
/// Add [arg] scaled by [factor] to this.
void addScaled(Vector4 arg, double factor) {
final argStorage = arg._v4storage;
_v4storage[0] = _v4storage[0] + argStorage[0] * factor;
_v4storage[1] = _v4storage[1] + argStorage[1] * factor;
_v4storage[2] = _v4storage[2] + argStorage[2] * factor;
_v4storage[3] = _v4storage[3] + argStorage[3] * factor;
}
/// Subtract [arg] from this.
void sub(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = _v4storage[0] - argStorage[0];
_v4storage[1] = _v4storage[1] - argStorage[1];
_v4storage[2] = _v4storage[2] - argStorage[2];
_v4storage[3] = _v4storage[3] - argStorage[3];
}
/// Multiply this by [arg].
void multiply(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = _v4storage[0] * argStorage[0];
_v4storage[1] = _v4storage[1] * argStorage[1];
_v4storage[2] = _v4storage[2] * argStorage[2];
_v4storage[3] = _v4storage[3] * argStorage[3];
}
/// Divide this by [arg].
void div(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = _v4storage[0] / argStorage[0];
_v4storage[1] = _v4storage[1] / argStorage[1];
_v4storage[2] = _v4storage[2] / argStorage[2];
_v4storage[3] = _v4storage[3] / argStorage[3];
}
/// Scale this by [arg].
void scale(double arg) {
_v4storage[0] = _v4storage[0] * arg;
_v4storage[1] = _v4storage[1] * arg;
_v4storage[2] = _v4storage[2] * arg;
_v4storage[3] = _v4storage[3] * arg;
}
/// Create a copy of this scaled by [arg].
Vector4 scaled(double arg) => clone()..scale(arg);
/// Negate this.
void negate() {
_v4storage[0] = -_v4storage[0];
_v4storage[1] = -_v4storage[1];
_v4storage[2] = -_v4storage[2];
_v4storage[3] = -_v4storage[3];
}
/// Set this to the absolute.
void absolute() {
_v4storage[3] = _v4storage[3].abs();
_v4storage[2] = _v4storage[2].abs();
_v4storage[1] = _v4storage[1].abs();
_v4storage[0] = _v4storage[0].abs();
}
/// Clamp each entry n in this in the range [min[n]]-[max[n]].
void clamp(Vector4 min, Vector4 max) {
final minStorage = min.storage;
final maxStorage = max.storage;
_v4storage[0] =
_v4storage[0].clamp(minStorage[0], maxStorage[0]).toDouble();
_v4storage[1] =
_v4storage[1].clamp(minStorage[1], maxStorage[1]).toDouble();
_v4storage[2] =
_v4storage[2].clamp(minStorage[2], maxStorage[2]).toDouble();
_v4storage[3] =
_v4storage[3].clamp(minStorage[3], maxStorage[3]).toDouble();
}
/// Clamp entries in this in the range [min]-[max].
void clampScalar(double min, double max) {
_v4storage[0] = _v4storage[0].clamp(min, max).toDouble();
_v4storage[1] = _v4storage[1].clamp(min, max).toDouble();
_v4storage[2] = _v4storage[2].clamp(min, max).toDouble();
_v4storage[3] = _v4storage[3].clamp(min, max).toDouble();
}
/// Floor entries in this.
void floor() {
_v4storage[0] = _v4storage[0].floorToDouble();
_v4storage[1] = _v4storage[1].floorToDouble();
_v4storage[2] = _v4storage[2].floorToDouble();
_v4storage[3] = _v4storage[3].floorToDouble();
}
/// Ceil entries in this.
void ceil() {
_v4storage[0] = _v4storage[0].ceilToDouble();
_v4storage[1] = _v4storage[1].ceilToDouble();
_v4storage[2] = _v4storage[2].ceilToDouble();
_v4storage[3] = _v4storage[3].ceilToDouble();
}
/// Round entries in this.
void round() {
_v4storage[0] = _v4storage[0].roundToDouble();
_v4storage[1] = _v4storage[1].roundToDouble();
_v4storage[2] = _v4storage[2].roundToDouble();
_v4storage[3] = _v4storage[3].roundToDouble();
}
/// Round entries in this towards zero.
void roundToZero() {
_v4storage[0] = _v4storage[0] < 0.0
? _v4storage[0].ceilToDouble()
: _v4storage[0].floorToDouble();
_v4storage[1] = _v4storage[1] < 0.0
? _v4storage[1].ceilToDouble()
: _v4storage[1].floorToDouble();
_v4storage[2] = _v4storage[2] < 0.0
? _v4storage[2].ceilToDouble()
: _v4storage[2].floorToDouble();
_v4storage[3] = _v4storage[3] < 0.0
? _v4storage[3].ceilToDouble()
: _v4storage[3].floorToDouble();
}
/// Create a copy of this.
Vector4 clone() => Vector4.copy(this);
/// Copy this
Vector4 copyInto(Vector4 arg) {
final argStorage = arg._v4storage;
argStorage[0] = _v4storage[0];
argStorage[1] = _v4storage[1];
argStorage[2] = _v4storage[2];
argStorage[3] = _v4storage[3];
return arg;
}
/// Copies this into [array] starting at [offset].
void copyIntoArray(List<double> array, [int offset = 0]) {
array[offset + 0] = _v4storage[0];
array[offset + 1] = _v4storage[1];
array[offset + 2] = _v4storage[2];
array[offset + 3] = _v4storage[3];
}
/// Copies elements from [array] into this starting at [offset].
void copyFromArray(List<double> array, [int offset = 0]) {
_v4storage[0] = array[offset + 0];
_v4storage[1] = array[offset + 1];
_v4storage[2] = array[offset + 2];
_v4storage[3] = array[offset + 3];
}
set xy(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[0] = argStorage[0];
_v4storage[1] = argStorage[1];
}
set xz(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[0] = argStorage[0];
_v4storage[2] = argStorage[1];
}
set xw(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[0] = argStorage[0];
_v4storage[3] = argStorage[1];
}
set yx(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[1] = argStorage[0];
_v4storage[0] = argStorage[1];
}
set yz(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[1] = argStorage[0];
_v4storage[2] = argStorage[1];
}
set yw(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[1] = argStorage[0];
_v4storage[3] = argStorage[1];
}
set zx(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[2] = argStorage[0];
_v4storage[0] = argStorage[1];
}
set zy(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[2] = argStorage[0];
_v4storage[1] = argStorage[1];
}
set zw(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[2] = argStorage[0];
_v4storage[3] = argStorage[1];
}
set wx(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[3] = argStorage[0];
_v4storage[0] = argStorage[1];
}
set wy(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[3] = argStorage[0];
_v4storage[1] = argStorage[1];
}
set wz(Vector2 arg) {
final argStorage = arg._v2storage;
_v4storage[3] = argStorage[0];
_v4storage[2] = argStorage[1];
}
set xyz(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[0] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[2] = argStorage[2];
}
set xyw(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[0] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[3] = argStorage[2];
}
set xzy(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[0] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[1] = argStorage[2];
}
set xzw(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[0] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[3] = argStorage[2];
}
set xwy(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[0] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[1] = argStorage[2];
}
set xwz(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[0] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[2] = argStorage[2];
}
set yxz(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[1] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[2] = argStorage[2];
}
set yxw(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[1] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[3] = argStorage[2];
}
set yzx(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[1] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[0] = argStorage[2];
}
set yzw(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[1] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[3] = argStorage[2];
}
set ywx(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[1] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[0] = argStorage[2];
}
set ywz(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[1] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[2] = argStorage[2];
}
set zxy(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[2] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[1] = argStorage[2];
}
set zxw(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[2] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[3] = argStorage[2];
}
set zyx(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[2] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[0] = argStorage[2];
}
set zyw(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[2] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[3] = argStorage[2];
}
set zwx(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[2] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[0] = argStorage[2];
}
set zwy(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[2] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[1] = argStorage[2];
}
set wxy(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[3] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[1] = argStorage[2];
}
set wxz(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[3] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[2] = argStorage[2];
}
set wyx(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[3] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[0] = argStorage[2];
}
set wyz(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[3] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[2] = argStorage[2];
}
set wzx(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[3] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[0] = argStorage[2];
}
set wzy(Vector3 arg) {
final argStorage = arg._v3storage;
_v4storage[3] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[1] = argStorage[2];
}
set xyzw(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[2] = argStorage[2];
_v4storage[3] = argStorage[3];
}
set xywz(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[3] = argStorage[2];
_v4storage[2] = argStorage[3];
}
set xzyw(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[1] = argStorage[2];
_v4storage[3] = argStorage[3];
}
set xzwy(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[3] = argStorage[2];
_v4storage[1] = argStorage[3];
}
set xwyz(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[1] = argStorage[2];
_v4storage[2] = argStorage[3];
}
set xwzy(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[0] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[2] = argStorage[2];
_v4storage[1] = argStorage[3];
}
set yxzw(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[1] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[2] = argStorage[2];
_v4storage[3] = argStorage[3];
}
set yxwz(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[1] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[3] = argStorage[2];
_v4storage[2] = argStorage[3];
}
set yzxw(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[1] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[0] = argStorage[2];
_v4storage[3] = argStorage[3];
}
set yzwx(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[1] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[3] = argStorage[2];
_v4storage[0] = argStorage[3];
}
set ywxz(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[1] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[0] = argStorage[2];
_v4storage[2] = argStorage[3];
}
set ywzx(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[1] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[2] = argStorage[2];
_v4storage[0] = argStorage[3];
}
set zxyw(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[2] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[1] = argStorage[2];
_v4storage[3] = argStorage[3];
}
set zxwy(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[2] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[3] = argStorage[2];
_v4storage[1] = argStorage[3];
}
set zyxw(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[2] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[0] = argStorage[2];
_v4storage[3] = argStorage[3];
}
set zywx(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[2] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[3] = argStorage[2];
_v4storage[0] = argStorage[3];
}
set zwxy(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[2] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[0] = argStorage[2];
_v4storage[1] = argStorage[3];
}
set zwyx(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[2] = argStorage[0];
_v4storage[3] = argStorage[1];
_v4storage[1] = argStorage[2];
_v4storage[0] = argStorage[3];
}
set wxyz(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[3] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[1] = argStorage[2];
_v4storage[2] = argStorage[3];
}
set wxzy(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[3] = argStorage[0];
_v4storage[0] = argStorage[1];
_v4storage[2] = argStorage[2];
_v4storage[1] = argStorage[3];
}
set wyxz(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[3] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[0] = argStorage[2];
_v4storage[2] = argStorage[3];
}
set wyzx(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[3] = argStorage[0];
_v4storage[1] = argStorage[1];
_v4storage[2] = argStorage[2];
_v4storage[0] = argStorage[3];
}
set wzxy(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[3] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[0] = argStorage[2];
_v4storage[1] = argStorage[3];
}
set wzyx(Vector4 arg) {
final argStorage = arg._v4storage;
_v4storage[3] = argStorage[0];
_v4storage[2] = argStorage[1];
_v4storage[1] = argStorage[2];
_v4storage[0] = argStorage[3];
}
set r(double arg) => x = arg;
set g(double arg) => y = arg;
set b(double arg) => z = arg;
set a(double arg) => w = arg;
set s(double arg) => x = arg;
set t(double arg) => y = arg;
set p(double arg) => z = arg;
set q(double arg) => w = arg;
set x(double arg) => _v4storage[0] = arg;
set y(double arg) => _v4storage[1] = arg;
set z(double arg) => _v4storage[2] = arg;
set w(double arg) => _v4storage[3] = arg;
set rg(Vector2 arg) => xy = arg;
set rb(Vector2 arg) => xz = arg;
set ra(Vector2 arg) => xw = arg;
set gr(Vector2 arg) => yx = arg;
set gb(Vector2 arg) => yz = arg;
set ga(Vector2 arg) => yw = arg;
set br(Vector2 arg) => zx = arg;
set bg(Vector2 arg) => zy = arg;
set ba(Vector2 arg) => zw = arg;
set ar(Vector2 arg) => wx = arg;
set ag(Vector2 arg) => wy = arg;
set ab(Vector2 arg) => wz = arg;
set rgb(Vector3 arg) => xyz = arg;
set rga(Vector3 arg) => xyw = arg;
set rbg(Vector3 arg) => xzy = arg;
set rba(Vector3 arg) => xzw = arg;
set rag(Vector3 arg) => xwy = arg;
set rab(Vector3 arg) => xwz = arg;
set grb(Vector3 arg) => yxz = arg;
set gra(Vector3 arg) => yxw = arg;
set gbr(Vector3 arg) => yzx = arg;
set gba(Vector3 arg) => yzw = arg;
set gar(Vector3 arg) => ywx = arg;
set gab(Vector3 arg) => ywz = arg;
set brg(Vector3 arg) => zxy = arg;
set bra(Vector3 arg) => zxw = arg;
set bgr(Vector3 arg) => zyx = arg;
set bga(Vector3 arg) => zyw = arg;
set bar(Vector3 arg) => zwx = arg;
set bag(Vector3 arg) => zwy = arg;
set arg(Vector3 arg) => wxy = arg;
set arb(Vector3 arg) => wxz = arg;
set agr(Vector3 arg) => wyx = arg;
set agb(Vector3 arg) => wyz = arg;
set abr(Vector3 arg) => wzx = arg;
set abg(Vector3 arg) => wzy = arg;
set rgba(Vector4 arg) => xyzw = arg;
set rgab(Vector4 arg) => xywz = arg;
set rbga(Vector4 arg) => xzyw = arg;
set rbag(Vector4 arg) => xzwy = arg;
set ragb(Vector4 arg) => xwyz = arg;
set rabg(Vector4 arg) => xwzy = arg;
set grba(Vector4 arg) => yxzw = arg;
set grab(Vector4 arg) => yxwz = arg;
set gbra(Vector4 arg) => yzxw = arg;
set gbar(Vector4 arg) => yzwx = arg;
set garb(Vector4 arg) => ywxz = arg;
set gabr(Vector4 arg) => ywzx = arg;
set brga(Vector4 arg) => zxyw = arg;
set brag(Vector4 arg) => zxwy = arg;
set bgra(Vector4 arg) => zyxw = arg;
set bgar(Vector4 arg) => zywx = arg;
set barg(Vector4 arg) => zwxy = arg;
set bagr(Vector4 arg) => zwyx = arg;
set argb(Vector4 arg) => wxyz = arg;
set arbg(Vector4 arg) => wxzy = arg;
set agrb(Vector4 arg) => wyxz = arg;
set agbr(Vector4 arg) => wyzx = arg;
set abrg(Vector4 arg) => wzxy = arg;
set abgr(Vector4 arg) => wzyx = arg;
set st(Vector2 arg) => xy = arg;
set sp(Vector2 arg) => xz = arg;
set sq(Vector2 arg) => xw = arg;
set ts(Vector2 arg) => yx = arg;
set tp(Vector2 arg) => yz = arg;
set tq(Vector2 arg) => yw = arg;
set ps(Vector2 arg) => zx = arg;
set pt(Vector2 arg) => zy = arg;
set pq(Vector2 arg) => zw = arg;
set qs(Vector2 arg) => wx = arg;
set qt(Vector2 arg) => wy = arg;
set qp(Vector2 arg) => wz = arg;
set stp(Vector3 arg) => xyz = arg;
set stq(Vector3 arg) => xyw = arg;
set spt(Vector3 arg) => xzy = arg;
set spq(Vector3 arg) => xzw = arg;
set sqt(Vector3 arg) => xwy = arg;
set sqp(Vector3 arg) => xwz = arg;
set tsp(Vector3 arg) => yxz = arg;
set tsq(Vector3 arg) => yxw = arg;
set tps(Vector3 arg) => yzx = arg;
set tpq(Vector3 arg) => yzw = arg;
set tqs(Vector3 arg) => ywx = arg;
set tqp(Vector3 arg) => ywz = arg;
set pst(Vector3 arg) => zxy = arg;
set psq(Vector3 arg) => zxw = arg;
set pts(Vector3 arg) => zyx = arg;
set ptq(Vector3 arg) => zyw = arg;
set pqs(Vector3 arg) => zwx = arg;
set pqt(Vector3 arg) => zwy = arg;
set qst(Vector3 arg) => wxy = arg;
set qsp(Vector3 arg) => wxz = arg;
set qts(Vector3 arg) => wyx = arg;
set qtp(Vector3 arg) => wyz = arg;
set qps(Vector3 arg) => wzx = arg;
set qpt(Vector3 arg) => wzy = arg;
set stpq(Vector4 arg) => xyzw = arg;
set stqp(Vector4 arg) => xywz = arg;
set sptq(Vector4 arg) => xzyw = arg;
set spqt(Vector4 arg) => xzwy = arg;
set sqtp(Vector4 arg) => xwyz = arg;
set sqpt(Vector4 arg) => xwzy = arg;
set tspq(Vector4 arg) => yxzw = arg;
set tsqp(Vector4 arg) => yxwz = arg;
set tpsq(Vector4 arg) => yzxw = arg;
set tpqs(Vector4 arg) => yzwx = arg;
set tqsp(Vector4 arg) => ywxz = arg;
set tqps(Vector4 arg) => ywzx = arg;
set pstq(Vector4 arg) => zxyw = arg;
set psqt(Vector4 arg) => zxwy = arg;
set ptsq(Vector4 arg) => zyxw = arg;
set ptqs(Vector4 arg) => zywx = arg;
set pqst(Vector4 arg) => zwxy = arg;
set pqts(Vector4 arg) => zwyx = arg;
set qstp(Vector4 arg) => wxyz = arg;
set qspt(Vector4 arg) => wxzy = arg;
set qtsp(Vector4 arg) => wyxz = arg;
set qtps(Vector4 arg) => wyzx = arg;
set qpst(Vector4 arg) => wzxy = arg;
set qpts(Vector4 arg) => wzyx = arg;
Vector2 get xx => Vector2(_v4storage[0], _v4storage[0]);
Vector2 get xy => Vector2(_v4storage[0], _v4storage[1]);
Vector2 get xz => Vector2(_v4storage[0], _v4storage[2]);
Vector2 get xw => Vector2(_v4storage[0], _v4storage[3]);
Vector2 get yx => Vector2(_v4storage[1], _v4storage[0]);
Vector2 get yy => Vector2(_v4storage[1], _v4storage[1]);
Vector2 get yz => Vector2(_v4storage[1], _v4storage[2]);
Vector2 get yw => Vector2(_v4storage[1], _v4storage[3]);
Vector2 get zx => Vector2(_v4storage[2], _v4storage[0]);
Vector2 get zy => Vector2(_v4storage[2], _v4storage[1]);
Vector2 get zz => Vector2(_v4storage[2], _v4storage[2]);
Vector2 get zw => Vector2(_v4storage[2], _v4storage[3]);
Vector2 get wx => Vector2(_v4storage[3], _v4storage[0]);
Vector2 get wy => Vector2(_v4storage[3], _v4storage[1]);
Vector2 get wz => Vector2(_v4storage[3], _v4storage[2]);
Vector2 get ww => Vector2(_v4storage[3], _v4storage[3]);
Vector3 get xxx => Vector3(_v4storage[0], _v4storage[0], _v4storage[0]);
Vector3 get xxy => Vector3(_v4storage[0], _v4storage[0], _v4storage[1]);
Vector3 get xxz => Vector3(_v4storage[0], _v4storage[0], _v4storage[2]);
Vector3 get xxw => Vector3(_v4storage[0], _v4storage[0], _v4storage[3]);
Vector3 get xyx => Vector3(_v4storage[0], _v4storage[1], _v4storage[0]);
Vector3 get xyy => Vector3(_v4storage[0], _v4storage[1], _v4storage[1]);
Vector3 get xyz => Vector3(_v4storage[0], _v4storage[1], _v4storage[2]);
Vector3 get xyw => Vector3(_v4storage[0], _v4storage[1], _v4storage[3]);
Vector3 get xzx => Vector3(_v4storage[0], _v4storage[2], _v4storage[0]);
Vector3 get xzy => Vector3(_v4storage[0], _v4storage[2], _v4storage[1]);
Vector3 get xzz => Vector3(_v4storage[0], _v4storage[2], _v4storage[2]);
Vector3 get xzw => Vector3(_v4storage[0], _v4storage[2], _v4storage[3]);
Vector3 get xwx => Vector3(_v4storage[0], _v4storage[3], _v4storage[0]);
Vector3 get xwy => Vector3(_v4storage[0], _v4storage[3], _v4storage[1]);
Vector3 get xwz => Vector3(_v4storage[0], _v4storage[3], _v4storage[2]);
Vector3 get xww => Vector3(_v4storage[0], _v4storage[3], _v4storage[3]);
Vector3 get yxx => Vector3(_v4storage[1], _v4storage[0], _v4storage[0]);
Vector3 get yxy => Vector3(_v4storage[1], _v4storage[0], _v4storage[1]);
Vector3 get yxz => Vector3(_v4storage[1], _v4storage[0], _v4storage[2]);
Vector3 get yxw => Vector3(_v4storage[1], _v4storage[0], _v4storage[3]);
Vector3 get yyx => Vector3(_v4storage[1], _v4storage[1], _v4storage[0]);
Vector3 get yyy => Vector3(_v4storage[1], _v4storage[1], _v4storage[1]);
Vector3 get yyz => Vector3(_v4storage[1], _v4storage[1], _v4storage[2]);
Vector3 get yyw => Vector3(_v4storage[1], _v4storage[1], _v4storage[3]);
Vector3 get yzx => Vector3(_v4storage[1], _v4storage[2], _v4storage[0]);
Vector3 get yzy => Vector3(_v4storage[1], _v4storage[2], _v4storage[1]);
Vector3 get yzz => Vector3(_v4storage[1], _v4storage[2], _v4storage[2]);
Vector3 get yzw => Vector3(_v4storage[1], _v4storage[2], _v4storage[3]);
Vector3 get ywx => Vector3(_v4storage[1], _v4storage[3], _v4storage[0]);
Vector3 get ywy => Vector3(_v4storage[1], _v4storage[3], _v4storage[1]);
Vector3 get ywz => Vector3(_v4storage[1], _v4storage[3], _v4storage[2]);
Vector3 get yww => Vector3(_v4storage[1], _v4storage[3], _v4storage[3]);
Vector3 get zxx => Vector3(_v4storage[2], _v4storage[0], _v4storage[0]);
Vector3 get zxy => Vector3(_v4storage[2], _v4storage[0], _v4storage[1]);
Vector3 get zxz => Vector3(_v4storage[2], _v4storage[0], _v4storage[2]);
Vector3 get zxw => Vector3(_v4storage[2], _v4storage[0], _v4storage[3]);
Vector3 get zyx => Vector3(_v4storage[2], _v4storage[1], _v4storage[0]);
Vector3 get zyy => Vector3(_v4storage[2], _v4storage[1], _v4storage[1]);
Vector3 get zyz => Vector3(_v4storage[2], _v4storage[1], _v4storage[2]);
Vector3 get zyw => Vector3(_v4storage[2], _v4storage[1], _v4storage[3]);
Vector3 get zzx => Vector3(_v4storage[2], _v4storage[2], _v4storage[0]);
Vector3 get zzy => Vector3(_v4storage[2], _v4storage[2], _v4storage[1]);
Vector3 get zzz => Vector3(_v4storage[2], _v4storage[2], _v4storage[2]);
Vector3 get zzw => Vector3(_v4storage[2], _v4storage[2], _v4storage[3]);
Vector3 get zwx => Vector3(_v4storage[2], _v4storage[3], _v4storage[0]);
Vector3 get zwy => Vector3(_v4storage[2], _v4storage[3], _v4storage[1]);
Vector3 get zwz => Vector3(_v4storage[2], _v4storage[3], _v4storage[2]);
Vector3 get zww => Vector3(_v4storage[2], _v4storage[3], _v4storage[3]);
Vector3 get wxx => Vector3(_v4storage[3], _v4storage[0], _v4storage[0]);
Vector3 get wxy => Vector3(_v4storage[3], _v4storage[0], _v4storage[1]);
Vector3 get wxz => Vector3(_v4storage[3], _v4storage[0], _v4storage[2]);
Vector3 get wxw => Vector3(_v4storage[3], _v4storage[0], _v4storage[3]);
Vector3 get wyx => Vector3(_v4storage[3], _v4storage[1], _v4storage[0]);
Vector3 get wyy => Vector3(_v4storage[3], _v4storage[1], _v4storage[1]);
Vector3 get wyz => Vector3(_v4storage[3], _v4storage[1], _v4storage[2]);
Vector3 get wyw => Vector3(_v4storage[3], _v4storage[1], _v4storage[3]);
Vector3 get wzx => Vector3(_v4storage[3], _v4storage[2], _v4storage[0]);
Vector3 get wzy => Vector3(_v4storage[3], _v4storage[2], _v4storage[1]);
Vector3 get wzz => Vector3(_v4storage[3], _v4storage[2], _v4storage[2]);
Vector3 get wzw => Vector3(_v4storage[3], _v4storage[2], _v4storage[3]);
Vector3 get wwx => Vector3(_v4storage[3], _v4storage[3], _v4storage[0]);
Vector3 get wwy => Vector3(_v4storage[3], _v4storage[3], _v4storage[1]);
Vector3 get wwz => Vector3(_v4storage[3], _v4storage[3], _v4storage[2]);
Vector3 get www => Vector3(_v4storage[3], _v4storage[3], _v4storage[3]);
Vector4 get xxxx =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[0], _v4storage[0]);
Vector4 get xxxy =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[0], _v4storage[1]);
Vector4 get xxxz =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[0], _v4storage[2]);
Vector4 get xxxw =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[0], _v4storage[3]);
Vector4 get xxyx =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[1], _v4storage[0]);
Vector4 get xxyy =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[1], _v4storage[1]);
Vector4 get xxyz =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[1], _v4storage[2]);
Vector4 get xxyw =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[1], _v4storage[3]);
Vector4 get xxzx =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[2], _v4storage[0]);
Vector4 get xxzy =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[2], _v4storage[1]);
Vector4 get xxzz =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[2], _v4storage[2]);
Vector4 get xxzw =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[2], _v4storage[3]);
Vector4 get xxwx =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[3], _v4storage[0]);
Vector4 get xxwy =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[3], _v4storage[1]);
Vector4 get xxwz =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[3], _v4storage[2]);
Vector4 get xxww =>
Vector4(_v4storage[0], _v4storage[0], _v4storage[3], _v4storage[3]);
Vector4 get xyxx =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[0], _v4storage[0]);
Vector4 get xyxy =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[0], _v4storage[1]);
Vector4 get xyxz =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[0], _v4storage[2]);
Vector4 get xyxw =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[0], _v4storage[3]);
Vector4 get xyyx =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[1], _v4storage[0]);
Vector4 get xyyy =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[1], _v4storage[1]);
Vector4 get xyyz =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[1], _v4storage[2]);
Vector4 get xyyw =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[1], _v4storage[3]);
Vector4 get xyzx =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[2], _v4storage[0]);
Vector4 get xyzy =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[2], _v4storage[1]);
Vector4 get xyzz =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[2], _v4storage[2]);
Vector4 get xyzw =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[2], _v4storage[3]);
Vector4 get xywx =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[3], _v4storage[0]);
Vector4 get xywy =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[3], _v4storage[1]);
Vector4 get xywz =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[3], _v4storage[2]);
Vector4 get xyww =>
Vector4(_v4storage[0], _v4storage[1], _v4storage[3], _v4storage[3]);
Vector4 get xzxx =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[0], _v4storage[0]);
Vector4 get xzxy =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[0], _v4storage[1]);
Vector4 get xzxz =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[0], _v4storage[2]);
Vector4 get xzxw =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[0], _v4storage[3]);
Vector4 get xzyx =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[1], _v4storage[0]);
Vector4 get xzyy =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[1], _v4storage[1]);
Vector4 get xzyz =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[1], _v4storage[2]);
Vector4 get xzyw =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[1], _v4storage[3]);
Vector4 get xzzx =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[2], _v4storage[0]);
Vector4 get xzzy =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[2], _v4storage[1]);
Vector4 get xzzz =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[2], _v4storage[2]);
Vector4 get xzzw =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[2], _v4storage[3]);
Vector4 get xzwx =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[3], _v4storage[0]);
Vector4 get xzwy =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[3], _v4storage[1]);
Vector4 get xzwz =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[3], _v4storage[2]);
Vector4 get xzww =>
Vector4(_v4storage[0], _v4storage[2], _v4storage[3], _v4storage[3]);
Vector4 get xwxx =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[0], _v4storage[0]);
Vector4 get xwxy =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[0], _v4storage[1]);
Vector4 get xwxz =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[0], _v4storage[2]);
Vector4 get xwxw =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[0], _v4storage[3]);
Vector4 get xwyx =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[1], _v4storage[0]);
Vector4 get xwyy =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[1], _v4storage[1]);
Vector4 get xwyz =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[1], _v4storage[2]);
Vector4 get xwyw =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[1], _v4storage[3]);
Vector4 get xwzx =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[2], _v4storage[0]);
Vector4 get xwzy =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[2], _v4storage[1]);
Vector4 get xwzz =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[2], _v4storage[2]);
Vector4 get xwzw =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[2], _v4storage[3]);
Vector4 get xwwx =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[3], _v4storage[0]);
Vector4 get xwwy =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[3], _v4storage[1]);
Vector4 get xwwz =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[3], _v4storage[2]);
Vector4 get xwww =>
Vector4(_v4storage[0], _v4storage[3], _v4storage[3], _v4storage[3]);
Vector4 get yxxx =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[0], _v4storage[0]);
Vector4 get yxxy =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[0], _v4storage[1]);
Vector4 get yxxz =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[0], _v4storage[2]);
Vector4 get yxxw =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[0], _v4storage[3]);
Vector4 get yxyx =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[1], _v4storage[0]);
Vector4 get yxyy =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[1], _v4storage[1]);
Vector4 get yxyz =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[1], _v4storage[2]);
Vector4 get yxyw =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[1], _v4storage[3]);
Vector4 get yxzx =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[2], _v4storage[0]);
Vector4 get yxzy =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[2], _v4storage[1]);
Vector4 get yxzz =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[2], _v4storage[2]);
Vector4 get yxzw =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[2], _v4storage[3]);
Vector4 get yxwx =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[3], _v4storage[0]);
Vector4 get yxwy =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[3], _v4storage[1]);
Vector4 get yxwz =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[3], _v4storage[2]);
Vector4 get yxww =>
Vector4(_v4storage[1], _v4storage[0], _v4storage[3], _v4storage[3]);
Vector4 get yyxx =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[0], _v4storage[0]);
Vector4 get yyxy =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[0], _v4storage[1]);
Vector4 get yyxz =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[0], _v4storage[2]);
Vector4 get yyxw =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[0], _v4storage[3]);
Vector4 get yyyx =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[1], _v4storage[0]);
Vector4 get yyyy =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[1], _v4storage[1]);
Vector4 get yyyz =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[1], _v4storage[2]);
Vector4 get yyyw =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[1], _v4storage[3]);
Vector4 get yyzx =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[2], _v4storage[0]);
Vector4 get yyzy =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[2], _v4storage[1]);
Vector4 get yyzz =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[2], _v4storage[2]);
Vector4 get yyzw =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[2], _v4storage[3]);
Vector4 get yywx =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[3], _v4storage[0]);
Vector4 get yywy =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[3], _v4storage[1]);
Vector4 get yywz =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[3], _v4storage[2]);
Vector4 get yyww =>
Vector4(_v4storage[1], _v4storage[1], _v4storage[3], _v4storage[3]);
Vector4 get yzxx =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[0], _v4storage[0]);
Vector4 get yzxy =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[0], _v4storage[1]);
Vector4 get yzxz =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[0], _v4storage[2]);
Vector4 get yzxw =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[0], _v4storage[3]);
Vector4 get yzyx =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[1], _v4storage[0]);
Vector4 get yzyy =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[1], _v4storage[1]);
Vector4 get yzyz =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[1], _v4storage[2]);
Vector4 get yzyw =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[1], _v4storage[3]);
Vector4 get yzzx =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[2], _v4storage[0]);
Vector4 get yzzy =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[2], _v4storage[1]);
Vector4 get yzzz =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[2], _v4storage[2]);
Vector4 get yzzw =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[2], _v4storage[3]);
Vector4 get yzwx =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[3], _v4storage[0]);
Vector4 get yzwy =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[3], _v4storage[1]);
Vector4 get yzwz =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[3], _v4storage[2]);
Vector4 get yzww =>
Vector4(_v4storage[1], _v4storage[2], _v4storage[3], _v4storage[3]);
Vector4 get ywxx =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[0], _v4storage[0]);
Vector4 get ywxy =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[0], _v4storage[1]);
Vector4 get ywxz =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[0], _v4storage[2]);
Vector4 get ywxw =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[0], _v4storage[3]);
Vector4 get ywyx =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[1], _v4storage[0]);
Vector4 get ywyy =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[1], _v4storage[1]);
Vector4 get ywyz =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[1], _v4storage[2]);
Vector4 get ywyw =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[1], _v4storage[3]);
Vector4 get ywzx =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[2], _v4storage[0]);
Vector4 get ywzy =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[2], _v4storage[1]);
Vector4 get ywzz =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[2], _v4storage[2]);
Vector4 get ywzw =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[2], _v4storage[3]);
Vector4 get ywwx =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[3], _v4storage[0]);
Vector4 get ywwy =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[3], _v4storage[1]);
Vector4 get ywwz =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[3], _v4storage[2]);
Vector4 get ywww =>
Vector4(_v4storage[1], _v4storage[3], _v4storage[3], _v4storage[3]);
Vector4 get zxxx =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[0], _v4storage[0]);
Vector4 get zxxy =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[0], _v4storage[1]);
Vector4 get zxxz =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[0], _v4storage[2]);
Vector4 get zxxw =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[0], _v4storage[3]);
Vector4 get zxyx =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[1], _v4storage[0]);
Vector4 get zxyy =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[1], _v4storage[1]);
Vector4 get zxyz =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[1], _v4storage[2]);
Vector4 get zxyw =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[1], _v4storage[3]);
Vector4 get zxzx =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[2], _v4storage[0]);
Vector4 get zxzy =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[2], _v4storage[1]);
Vector4 get zxzz =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[2], _v4storage[2]);
Vector4 get zxzw =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[2], _v4storage[3]);
Vector4 get zxwx =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[3], _v4storage[0]);
Vector4 get zxwy =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[3], _v4storage[1]);
Vector4 get zxwz =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[3], _v4storage[2]);
Vector4 get zxww =>
Vector4(_v4storage[2], _v4storage[0], _v4storage[3], _v4storage[3]);
Vector4 get zyxx =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[0], _v4storage[0]);
Vector4 get zyxy =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[0], _v4storage[1]);
Vector4 get zyxz =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[0], _v4storage[2]);
Vector4 get zyxw =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[0], _v4storage[3]);
Vector4 get zyyx =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[1], _v4storage[0]);
Vector4 get zyyy =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[1], _v4storage[1]);
Vector4 get zyyz =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[1], _v4storage[2]);
Vector4 get zyyw =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[1], _v4storage[3]);
Vector4 get zyzx =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[2], _v4storage[0]);
Vector4 get zyzy =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[2], _v4storage[1]);
Vector4 get zyzz =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[2], _v4storage[2]);
Vector4 get zyzw =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[2], _v4storage[3]);
Vector4 get zywx =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[3], _v4storage[0]);
Vector4 get zywy =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[3], _v4storage[1]);
Vector4 get zywz =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[3], _v4storage[2]);
Vector4 get zyww =>
Vector4(_v4storage[2], _v4storage[1], _v4storage[3], _v4storage[3]);
Vector4 get zzxx =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[0], _v4storage[0]);
Vector4 get zzxy =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[0], _v4storage[1]);
Vector4 get zzxz =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[0], _v4storage[2]);
Vector4 get zzxw =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[0], _v4storage[3]);
Vector4 get zzyx =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[1], _v4storage[0]);
Vector4 get zzyy =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[1], _v4storage[1]);
Vector4 get zzyz =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[1], _v4storage[2]);
Vector4 get zzyw =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[1], _v4storage[3]);
Vector4 get zzzx =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[2], _v4storage[0]);
Vector4 get zzzy =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[2], _v4storage[1]);
Vector4 get zzzz =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[2], _v4storage[2]);
Vector4 get zzzw =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[2], _v4storage[3]);
Vector4 get zzwx =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[3], _v4storage[0]);
Vector4 get zzwy =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[3], _v4storage[1]);
Vector4 get zzwz =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[3], _v4storage[2]);
Vector4 get zzww =>
Vector4(_v4storage[2], _v4storage[2], _v4storage[3], _v4storage[3]);
Vector4 get zwxx =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[0], _v4storage[0]);
Vector4 get zwxy =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[0], _v4storage[1]);
Vector4 get zwxz =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[0], _v4storage[2]);
Vector4 get zwxw =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[0], _v4storage[3]);
Vector4 get zwyx =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[1], _v4storage[0]);
Vector4 get zwyy =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[1], _v4storage[1]);
Vector4 get zwyz =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[1], _v4storage[2]);
Vector4 get zwyw =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[1], _v4storage[3]);
Vector4 get zwzx =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[2], _v4storage[0]);
Vector4 get zwzy =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[2], _v4storage[1]);
Vector4 get zwzz =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[2], _v4storage[2]);
Vector4 get zwzw =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[2], _v4storage[3]);
Vector4 get zwwx =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[3], _v4storage[0]);
Vector4 get zwwy =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[3], _v4storage[1]);
Vector4 get zwwz =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[3], _v4storage[2]);
Vector4 get zwww =>
Vector4(_v4storage[2], _v4storage[3], _v4storage[3], _v4storage[3]);
Vector4 get wxxx =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[0], _v4storage[0]);
Vector4 get wxxy =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[0], _v4storage[1]);
Vector4 get wxxz =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[0], _v4storage[2]);
Vector4 get wxxw =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[0], _v4storage[3]);
Vector4 get wxyx =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[1], _v4storage[0]);
Vector4 get wxyy =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[1], _v4storage[1]);
Vector4 get wxyz =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[1], _v4storage[2]);
Vector4 get wxyw =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[1], _v4storage[3]);
Vector4 get wxzx =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[2], _v4storage[0]);
Vector4 get wxzy =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[2], _v4storage[1]);
Vector4 get wxzz =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[2], _v4storage[2]);
Vector4 get wxzw =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[2], _v4storage[3]);
Vector4 get wxwx =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[3], _v4storage[0]);
Vector4 get wxwy =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[3], _v4storage[1]);
Vector4 get wxwz =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[3], _v4storage[2]);
Vector4 get wxww =>
Vector4(_v4storage[3], _v4storage[0], _v4storage[3], _v4storage[3]);
Vector4 get wyxx =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[0], _v4storage[0]);
Vector4 get wyxy =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[0], _v4storage[1]);
Vector4 get wyxz =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[0], _v4storage[2]);
Vector4 get wyxw =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[0], _v4storage[3]);
Vector4 get wyyx =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[1], _v4storage[0]);
Vector4 get wyyy =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[1], _v4storage[1]);
Vector4 get wyyz =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[1], _v4storage[2]);
Vector4 get wyyw =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[1], _v4storage[3]);
Vector4 get wyzx =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[2], _v4storage[0]);
Vector4 get wyzy =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[2], _v4storage[1]);
Vector4 get wyzz =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[2], _v4storage[2]);
Vector4 get wyzw =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[2], _v4storage[3]);
Vector4 get wywx =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[3], _v4storage[0]);
Vector4 get wywy =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[3], _v4storage[1]);
Vector4 get wywz =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[3], _v4storage[2]);
Vector4 get wyww =>
Vector4(_v4storage[3], _v4storage[1], _v4storage[3], _v4storage[3]);
Vector4 get wzxx =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[0], _v4storage[0]);
Vector4 get wzxy =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[0], _v4storage[1]);
Vector4 get wzxz =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[0], _v4storage[2]);
Vector4 get wzxw =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[0], _v4storage[3]);
Vector4 get wzyx =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[1], _v4storage[0]);
Vector4 get wzyy =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[1], _v4storage[1]);
Vector4 get wzyz =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[1], _v4storage[2]);
Vector4 get wzyw =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[1], _v4storage[3]);
Vector4 get wzzx =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[2], _v4storage[0]);
Vector4 get wzzy =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[2], _v4storage[1]);
Vector4 get wzzz =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[2], _v4storage[2]);
Vector4 get wzzw =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[2], _v4storage[3]);
Vector4 get wzwx =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[3], _v4storage[0]);
Vector4 get wzwy =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[3], _v4storage[1]);
Vector4 get wzwz =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[3], _v4storage[2]);
Vector4 get wzww =>
Vector4(_v4storage[3], _v4storage[2], _v4storage[3], _v4storage[3]);
Vector4 get wwxx =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[0], _v4storage[0]);
Vector4 get wwxy =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[0], _v4storage[1]);
Vector4 get wwxz =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[0], _v4storage[2]);
Vector4 get wwxw =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[0], _v4storage[3]);
Vector4 get wwyx =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[1], _v4storage[0]);
Vector4 get wwyy =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[1], _v4storage[1]);
Vector4 get wwyz =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[1], _v4storage[2]);
Vector4 get wwyw =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[1], _v4storage[3]);
Vector4 get wwzx =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[2], _v4storage[0]);
Vector4 get wwzy =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[2], _v4storage[1]);
Vector4 get wwzz =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[2], _v4storage[2]);
Vector4 get wwzw =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[2], _v4storage[3]);
Vector4 get wwwx =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[3], _v4storage[0]);
Vector4 get wwwy =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[3], _v4storage[1]);
Vector4 get wwwz =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[3], _v4storage[2]);
Vector4 get wwww =>
Vector4(_v4storage[3], _v4storage[3], _v4storage[3], _v4storage[3]);
double get r => x;
double get g => y;
double get b => z;
double get a => w;
double get s => x;
double get t => y;
double get p => z;
double get q => w;
double get x => _v4storage[0];
double get y => _v4storage[1];
double get z => _v4storage[2];
double get w => _v4storage[3];
Vector2 get rr => xx;
Vector2 get rg => xy;
Vector2 get rb => xz;
Vector2 get ra => xw;
Vector2 get gr => yx;
Vector2 get gg => yy;
Vector2 get gb => yz;
Vector2 get ga => yw;
Vector2 get br => zx;
Vector2 get bg => zy;
Vector2 get bb => zz;
Vector2 get ba => zw;
Vector2 get ar => wx;
Vector2 get ag => wy;
Vector2 get ab => wz;
Vector2 get aa => ww;
Vector3 get rrr => xxx;
Vector3 get rrg => xxy;
Vector3 get rrb => xxz;
Vector3 get rra => xxw;
Vector3 get rgr => xyx;
Vector3 get rgg => xyy;
Vector3 get rgb => xyz;
Vector3 get rga => xyw;
Vector3 get rbr => xzx;
Vector3 get rbg => xzy;
Vector3 get rbb => xzz;
Vector3 get rba => xzw;
Vector3 get rar => xwx;
Vector3 get rag => xwy;
Vector3 get rab => xwz;
Vector3 get raa => xww;
Vector3 get grr => yxx;
Vector3 get grg => yxy;
Vector3 get grb => yxz;
Vector3 get gra => yxw;
Vector3 get ggr => yyx;
Vector3 get ggg => yyy;
Vector3 get ggb => yyz;
Vector3 get gga => yyw;
Vector3 get gbr => yzx;
Vector3 get gbg => yzy;
Vector3 get gbb => yzz;
Vector3 get gba => yzw;
Vector3 get gar => ywx;
Vector3 get gag => ywy;
Vector3 get gab => ywz;
Vector3 get gaa => yww;
Vector3 get brr => zxx;
Vector3 get brg => zxy;
Vector3 get brb => zxz;
Vector3 get bra => zxw;
Vector3 get bgr => zyx;
Vector3 get bgg => zyy;
Vector3 get bgb => zyz;
Vector3 get bga => zyw;
Vector3 get bbr => zzx;
Vector3 get bbg => zzy;
Vector3 get bbb => zzz;
Vector3 get bba => zzw;
Vector3 get bar => zwx;
Vector3 get bag => zwy;
Vector3 get bab => zwz;
Vector3 get baa => zww;
Vector3 get arr => wxx;
Vector3 get arg => wxy;
Vector3 get arb => wxz;
Vector3 get ara => wxw;
Vector3 get agr => wyx;
Vector3 get agg => wyy;
Vector3 get agb => wyz;
Vector3 get aga => wyw;
Vector3 get abr => wzx;
Vector3 get abg => wzy;
Vector3 get abb => wzz;
Vector3 get aba => wzw;
Vector3 get aar => wwx;
Vector3 get aag => wwy;
Vector3 get aab => wwz;
Vector3 get aaa => www;
Vector4 get rrrr => xxxx;
Vector4 get rrrg => xxxy;
Vector4 get rrrb => xxxz;
Vector4 get rrra => xxxw;
Vector4 get rrgr => xxyx;
Vector4 get rrgg => xxyy;
Vector4 get rrgb => xxyz;
Vector4 get rrga => xxyw;
Vector4 get rrbr => xxzx;
Vector4 get rrbg => xxzy;
Vector4 get rrbb => xxzz;
Vector4 get rrba => xxzw;
Vector4 get rrar => xxwx;
Vector4 get rrag => xxwy;
Vector4 get rrab => xxwz;
Vector4 get rraa => xxww;
Vector4 get rgrr => xyxx;
Vector4 get rgrg => xyxy;
Vector4 get rgrb => xyxz;
Vector4 get rgra => xyxw;
Vector4 get rggr => xyyx;
Vector4 get rggg => xyyy;
Vector4 get rggb => xyyz;
Vector4 get rgga => xyyw;
Vector4 get rgbr => xyzx;
Vector4 get rgbg => xyzy;
Vector4 get rgbb => xyzz;
Vector4 get rgba => xyzw;
Vector4 get rgar => xywx;
Vector4 get rgag => xywy;
Vector4 get rgab => xywz;
Vector4 get rgaa => xyww;
Vector4 get rbrr => xzxx;
Vector4 get rbrg => xzxy;
Vector4 get rbrb => xzxz;
Vector4 get rbra => xzxw;
Vector4 get rbgr => xzyx;
Vector4 get rbgg => xzyy;
Vector4 get rbgb => xzyz;
Vector4 get rbga => xzyw;
Vector4 get rbbr => xzzx;
Vector4 get rbbg => xzzy;
Vector4 get rbbb => xzzz;
Vector4 get rbba => xzzw;
Vector4 get rbar => xzwx;
Vector4 get rbag => xzwy;
Vector4 get rbab => xzwz;
Vector4 get rbaa => xzww;
Vector4 get rarr => xwxx;
Vector4 get rarg => xwxy;
Vector4 get rarb => xwxz;
Vector4 get rara => xwxw;
Vector4 get ragr => xwyx;
Vector4 get ragg => xwyy;
Vector4 get ragb => xwyz;
Vector4 get raga => xwyw;
Vector4 get rabr => xwzx;
Vector4 get rabg => xwzy;
Vector4 get rabb => xwzz;
Vector4 get raba => xwzw;
Vector4 get raar => xwwx;
Vector4 get raag => xwwy;
Vector4 get raab => xwwz;
Vector4 get raaa => xwww;
Vector4 get grrr => yxxx;
Vector4 get grrg => yxxy;
Vector4 get grrb => yxxz;
Vector4 get grra => yxxw;
Vector4 get grgr => yxyx;
Vector4 get grgg => yxyy;
Vector4 get grgb => yxyz;
Vector4 get grga => yxyw;
Vector4 get grbr => yxzx;
Vector4 get grbg => yxzy;
Vector4 get grbb => yxzz;
Vector4 get grba => yxzw;
Vector4 get grar => yxwx;
Vector4 get grag => yxwy;
Vector4 get grab => yxwz;
Vector4 get graa => yxww;
Vector4 get ggrr => yyxx;
Vector4 get ggrg => yyxy;
Vector4 get ggrb => yyxz;
Vector4 get ggra => yyxw;
Vector4 get gggr => yyyx;
Vector4 get gggg => yyyy;
Vector4 get gggb => yyyz;
Vector4 get ggga => yyyw;
Vector4 get ggbr => yyzx;
Vector4 get ggbg => yyzy;
Vector4 get ggbb => yyzz;
Vector4 get ggba => yyzw;
Vector4 get ggar => yywx;
Vector4 get ggag => yywy;
Vector4 get ggab => yywz;
Vector4 get ggaa => yyww;
Vector4 get gbrr => yzxx;
Vector4 get gbrg => yzxy;
Vector4 get gbrb => yzxz;
Vector4 get gbra => yzxw;
Vector4 get gbgr => yzyx;
Vector4 get gbgg => yzyy;
Vector4 get gbgb => yzyz;
Vector4 get gbga => yzyw;
Vector4 get gbbr => yzzx;
Vector4 get gbbg => yzzy;
Vector4 get gbbb => yzzz;
Vector4 get gbba => yzzw;
Vector4 get gbar => yzwx;
Vector4 get gbag => yzwy;
Vector4 get gbab => yzwz;
Vector4 get gbaa => yzww;
Vector4 get garr => ywxx;
Vector4 get garg => ywxy;
Vector4 get garb => ywxz;
Vector4 get gara => ywxw;
Vector4 get gagr => ywyx;
Vector4 get gagg => ywyy;
Vector4 get gagb => ywyz;
Vector4 get gaga => ywyw;
Vector4 get gabr => ywzx;
Vector4 get gabg => ywzy;
Vector4 get gabb => ywzz;
Vector4 get gaba => ywzw;
Vector4 get gaar => ywwx;
Vector4 get gaag => ywwy;
Vector4 get gaab => ywwz;
Vector4 get gaaa => ywww;
Vector4 get brrr => zxxx;
Vector4 get brrg => zxxy;
Vector4 get brrb => zxxz;
Vector4 get brra => zxxw;
Vector4 get brgr => zxyx;
Vector4 get brgg => zxyy;
Vector4 get brgb => zxyz;
Vector4 get brga => zxyw;
Vector4 get brbr => zxzx;
Vector4 get brbg => zxzy;
Vector4 get brbb => zxzz;
Vector4 get brba => zxzw;
Vector4 get brar => zxwx;
Vector4 get brag => zxwy;
Vector4 get brab => zxwz;
Vector4 get braa => zxww;
Vector4 get bgrr => zyxx;
Vector4 get bgrg => zyxy;
Vector4 get bgrb => zyxz;
Vector4 get bgra => zyxw;
Vector4 get bggr => zyyx;
Vector4 get bggg => zyyy;
Vector4 get bggb => zyyz;
Vector4 get bgga => zyyw;
Vector4 get bgbr => zyzx;
Vector4 get bgbg => zyzy;
Vector4 get bgbb => zyzz;
Vector4 get bgba => zyzw;
Vector4 get bgar => zywx;
Vector4 get bgag => zywy;
Vector4 get bgab => zywz;
Vector4 get bgaa => zyww;
Vector4 get bbrr => zzxx;
Vector4 get bbrg => zzxy;
Vector4 get bbrb => zzxz;
Vector4 get bbra => zzxw;
Vector4 get bbgr => zzyx;
Vector4 get bbgg => zzyy;
Vector4 get bbgb => zzyz;
Vector4 get bbga => zzyw;
Vector4 get bbbr => zzzx;
Vector4 get bbbg => zzzy;
Vector4 get bbbb => zzzz;
Vector4 get bbba => zzzw;
Vector4 get bbar => zzwx;
Vector4 get bbag => zzwy;
Vector4 get bbab => zzwz;
Vector4 get bbaa => zzww;
Vector4 get barr => zwxx;
Vector4 get barg => zwxy;
Vector4 get barb => zwxz;
Vector4 get bara => zwxw;
Vector4 get bagr => zwyx;
Vector4 get bagg => zwyy;
Vector4 get bagb => zwyz;
Vector4 get baga => zwyw;
Vector4 get babr => zwzx;
Vector4 get babg => zwzy;
Vector4 get babb => zwzz;
Vector4 get baba => zwzw;
Vector4 get baar => zwwx;
Vector4 get baag => zwwy;
Vector4 get baab => zwwz;
Vector4 get baaa => zwww;
Vector4 get arrr => wxxx;
Vector4 get arrg => wxxy;
Vector4 get arrb => wxxz;
Vector4 get arra => wxxw;
Vector4 get argr => wxyx;
Vector4 get argg => wxyy;
Vector4 get argb => wxyz;
Vector4 get arga => wxyw;
Vector4 get arbr => wxzx;
Vector4 get arbg => wxzy;
Vector4 get arbb => wxzz;
Vector4 get arba => wxzw;
Vector4 get arar => wxwx;
Vector4 get arag => wxwy;
Vector4 get arab => wxwz;
Vector4 get araa => wxww;
Vector4 get agrr => wyxx;
Vector4 get agrg => wyxy;
Vector4 get agrb => wyxz;
Vector4 get agra => wyxw;
Vector4 get aggr => wyyx;
Vector4 get aggg => wyyy;
Vector4 get aggb => wyyz;
Vector4 get agga => wyyw;
Vector4 get agbr => wyzx;
Vector4 get agbg => wyzy;
Vector4 get agbb => wyzz;
Vector4 get agba => wyzw;
Vector4 get agar => wywx;
Vector4 get agag => wywy;
Vector4 get agab => wywz;
Vector4 get agaa => wyww;
Vector4 get abrr => wzxx;
Vector4 get abrg => wzxy;
Vector4 get abrb => wzxz;
Vector4 get abra => wzxw;
Vector4 get abgr => wzyx;
Vector4 get abgg => wzyy;
Vector4 get abgb => wzyz;
Vector4 get abga => wzyw;
Vector4 get abbr => wzzx;
Vector4 get abbg => wzzy;
Vector4 get abbb => wzzz;
Vector4 get abba => wzzw;
Vector4 get abar => wzwx;
Vector4 get abag => wzwy;
Vector4 get abab => wzwz;
Vector4 get abaa => wzww;
Vector4 get aarr => wwxx;
Vector4 get aarg => wwxy;
Vector4 get aarb => wwxz;
Vector4 get aara => wwxw;
Vector4 get aagr => wwyx;
Vector4 get aagg => wwyy;
Vector4 get aagb => wwyz;
Vector4 get aaga => wwyw;
Vector4 get aabr => wwzx;
Vector4 get aabg => wwzy;
Vector4 get aabb => wwzz;
Vector4 get aaba => wwzw;
Vector4 get aaar => wwwx;
Vector4 get aaag => wwwy;
Vector4 get aaab => wwwz;
Vector4 get aaaa => wwww;
Vector2 get ss => xx;
Vector2 get st => xy;
Vector2 get sp => xz;
Vector2 get sq => xw;
Vector2 get ts => yx;
Vector2 get tt => yy;
Vector2 get tp => yz;
Vector2 get tq => yw;
Vector2 get ps => zx;
Vector2 get pt => zy;
Vector2 get pp => zz;
Vector2 get pq => zw;
Vector2 get qs => wx;
Vector2 get qt => wy;
Vector2 get qp => wz;
Vector2 get qq => ww;
Vector3 get sss => xxx;
Vector3 get sst => xxy;
Vector3 get ssp => xxz;
Vector3 get ssq => xxw;
Vector3 get sts => xyx;
Vector3 get stt => xyy;
Vector3 get stp => xyz;
Vector3 get stq => xyw;
Vector3 get sps => xzx;
Vector3 get spt => xzy;
Vector3 get spp => xzz;
Vector3 get spq => xzw;
Vector3 get sqs => xwx;
Vector3 get sqt => xwy;
Vector3 get sqp => xwz;
Vector3 get sqq => xww;
Vector3 get tss => yxx;
Vector3 get tst => yxy;
Vector3 get tsp => yxz;
Vector3 get tsq => yxw;
Vector3 get tts => yyx;
Vector3 get ttt => yyy;
Vector3 get ttp => yyz;
Vector3 get ttq => yyw;
Vector3 get tps => yzx;
Vector3 get tpt => yzy;
Vector3 get tpp => yzz;
Vector3 get tpq => yzw;
Vector3 get tqs => ywx;
Vector3 get tqt => ywy;
Vector3 get tqp => ywz;
Vector3 get tqq => yww;
Vector3 get pss => zxx;
Vector3 get pst => zxy;
Vector3 get psp => zxz;
Vector3 get psq => zxw;
Vector3 get pts => zyx;
Vector3 get ptt => zyy;
Vector3 get ptp => zyz;
Vector3 get ptq => zyw;
Vector3 get pps => zzx;
Vector3 get ppt => zzy;
Vector3 get ppp => zzz;
Vector3 get ppq => zzw;
Vector3 get pqs => zwx;
Vector3 get pqt => zwy;
Vector3 get pqp => zwz;
Vector3 get pqq => zww;
Vector3 get qss => wxx;
Vector3 get qst => wxy;
Vector3 get qsp => wxz;
Vector3 get qsq => wxw;
Vector3 get qts => wyx;
Vector3 get qtt => wyy;
Vector3 get qtp => wyz;
Vector3 get qtq => wyw;
Vector3 get qps => wzx;
Vector3 get qpt => wzy;
Vector3 get qpp => wzz;
Vector3 get qpq => wzw;
Vector3 get qqs => wwx;
Vector3 get qqt => wwy;
Vector3 get qqp => wwz;
Vector3 get qqq => www;
Vector4 get ssss => xxxx;
Vector4 get ssst => xxxy;
Vector4 get sssp => xxxz;
Vector4 get sssq => xxxw;
Vector4 get ssts => xxyx;
Vector4 get sstt => xxyy;
Vector4 get sstp => xxyz;
Vector4 get sstq => xxyw;
Vector4 get ssps => xxzx;
Vector4 get sspt => xxzy;
Vector4 get sspp => xxzz;
Vector4 get sspq => xxzw;
Vector4 get ssqs => xxwx;
Vector4 get ssqt => xxwy;
Vector4 get ssqp => xxwz;
Vector4 get ssqq => xxww;
Vector4 get stss => xyxx;
Vector4 get stst => xyxy;
Vector4 get stsp => xyxz;
Vector4 get stsq => xyxw;
Vector4 get stts => xyyx;
Vector4 get sttt => xyyy;
Vector4 get sttp => xyyz;
Vector4 get sttq => xyyw;
Vector4 get stps => xyzx;
Vector4 get stpt => xyzy;
Vector4 get stpp => xyzz;
Vector4 get stpq => xyzw;
Vector4 get stqs => xywx;
Vector4 get stqt => xywy;
Vector4 get stqp => xywz;
Vector4 get stqq => xyww;
Vector4 get spss => xzxx;
Vector4 get spst => xzxy;
Vector4 get spsp => xzxz;
Vector4 get spsq => xzxw;
Vector4 get spts => xzyx;
Vector4 get sptt => xzyy;
Vector4 get sptp => xzyz;
Vector4 get sptq => xzyw;
Vector4 get spps => xzzx;
Vector4 get sppt => xzzy;
Vector4 get sppp => xzzz;
Vector4 get sppq => xzzw;
Vector4 get spqs => xzwx;
Vector4 get spqt => xzwy;
Vector4 get spqp => xzwz;
Vector4 get spqq => xzww;
Vector4 get sqss => xwxx;
Vector4 get sqst => xwxy;
Vector4 get sqsp => xwxz;
Vector4 get sqsq => xwxw;
Vector4 get sqts => xwyx;
Vector4 get sqtt => xwyy;
Vector4 get sqtp => xwyz;
Vector4 get sqtq => xwyw;
Vector4 get sqps => xwzx;
Vector4 get sqpt => xwzy;
Vector4 get sqpp => xwzz;
Vector4 get sqpq => xwzw;
Vector4 get sqqs => xwwx;
Vector4 get sqqt => xwwy;
Vector4 get sqqp => xwwz;
Vector4 get sqqq => xwww;
Vector4 get tsss => yxxx;
Vector4 get tsst => yxxy;
Vector4 get tssp => yxxz;
Vector4 get tssq => yxxw;
Vector4 get tsts => yxyx;
Vector4 get tstt => yxyy;
Vector4 get tstp => yxyz;
Vector4 get tstq => yxyw;
Vector4 get tsps => yxzx;
Vector4 get tspt => yxzy;
Vector4 get tspp => yxzz;
Vector4 get tspq => yxzw;
Vector4 get tsqs => yxwx;
Vector4 get tsqt => yxwy;
Vector4 get tsqp => yxwz;
Vector4 get tsqq => yxww;
Vector4 get ttss => yyxx;
Vector4 get ttst => yyxy;
Vector4 get ttsp => yyxz;
Vector4 get ttsq => yyxw;
Vector4 get ttts => yyyx;
Vector4 get tttt => yyyy;
Vector4 get tttp => yyyz;
Vector4 get tttq => yyyw;
Vector4 get ttps => yyzx;
Vector4 get ttpt => yyzy;
Vector4 get ttpp => yyzz;
Vector4 get ttpq => yyzw;
Vector4 get ttqs => yywx;
Vector4 get ttqt => yywy;
Vector4 get ttqp => yywz;
Vector4 get ttqq => yyww;
Vector4 get tpss => yzxx;
Vector4 get tpst => yzxy;
Vector4 get tpsp => yzxz;
Vector4 get tpsq => yzxw;
Vector4 get tpts => yzyx;
Vector4 get tptt => yzyy;
Vector4 get tptp => yzyz;
Vector4 get tptq => yzyw;
Vector4 get tpps => yzzx;
Vector4 get tppt => yzzy;
Vector4 get tppp => yzzz;
Vector4 get tppq => yzzw;
Vector4 get tpqs => yzwx;
Vector4 get tpqt => yzwy;
Vector4 get tpqp => yzwz;
Vector4 get tpqq => yzww;
Vector4 get tqss => ywxx;
Vector4 get tqst => ywxy;
Vector4 get tqsp => ywxz;
Vector4 get tqsq => ywxw;
Vector4 get tqts => ywyx;
Vector4 get tqtt => ywyy;
Vector4 get tqtp => ywyz;
Vector4 get tqtq => ywyw;
Vector4 get tqps => ywzx;
Vector4 get tqpt => ywzy;
Vector4 get tqpp => ywzz;
Vector4 get tqpq => ywzw;
Vector4 get tqqs => ywwx;
Vector4 get tqqt => ywwy;
Vector4 get tqqp => ywwz;
Vector4 get tqqq => ywww;
Vector4 get psss => zxxx;
Vector4 get psst => zxxy;
Vector4 get pssp => zxxz;
Vector4 get pssq => zxxw;
Vector4 get psts => zxyx;
Vector4 get pstt => zxyy;
Vector4 get pstp => zxyz;
Vector4 get pstq => zxyw;
Vector4 get psps => zxzx;
Vector4 get pspt => zxzy;
Vector4 get pspp => zxzz;
Vector4 get pspq => zxzw;
Vector4 get psqs => zxwx;
Vector4 get psqt => zxwy;
Vector4 get psqp => zxwz;
Vector4 get psqq => zxww;
Vector4 get ptss => zyxx;
Vector4 get ptst => zyxy;
Vector4 get ptsp => zyxz;
Vector4 get ptsq => zyxw;
Vector4 get ptts => zyyx;
Vector4 get pttt => zyyy;
Vector4 get pttp => zyyz;
Vector4 get pttq => zyyw;
Vector4 get ptps => zyzx;
Vector4 get ptpt => zyzy;
Vector4 get ptpp => zyzz;
Vector4 get ptpq => zyzw;
Vector4 get ptqs => zywx;
Vector4 get ptqt => zywy;
Vector4 get ptqp => zywz;
Vector4 get ptqq => zyww;
Vector4 get ppss => zzxx;
Vector4 get ppst => zzxy;
Vector4 get ppsp => zzxz;
Vector4 get ppsq => zzxw;
Vector4 get ppts => zzyx;
Vector4 get pptt => zzyy;
Vector4 get pptp => zzyz;
Vector4 get pptq => zzyw;
Vector4 get ppps => zzzx;
Vector4 get pppt => zzzy;
Vector4 get pppp => zzzz;
Vector4 get pppq => zzzw;
Vector4 get ppqs => zzwx;
Vector4 get ppqt => zzwy;
Vector4 get ppqp => zzwz;
Vector4 get ppqq => zzww;
Vector4 get pqss => zwxx;
Vector4 get