public Matrix44 <T> SetShear(Shear6 <T> h, T unit) { x[0][0] = unit; x[0][1] = h.YX; x[0][2] = h.ZX; x[0][3] = Numeric <T> .Zero(); x[1][0] = h.XY; x[1][1] = unit; x[1][2] = h.ZY; x[1][3] = Numeric <T> .Zero(); x[2][0] = h.XZ; x[2][1] = h.YZ; x[2][2] = unit; x[2][3] = Numeric <T> .Zero(); x[3][0] = Numeric <T> .Zero(); x[3][1] = Numeric <T> .Zero(); x[3][2] = Numeric <T> .Zero(); x[3][3] = unit; return(this); }
private static bool Equals(ref Shear6 <T> v1, ref Shear6 <T> v2) { return(EqualityComparer <T> .Default.Equals(v1.xy, v2.xy) && EqualityComparer <T> .Default.Equals(v1.xz, v2.xz) && EqualityComparer <T> .Default.Equals(v1.yz, v2.yz) && EqualityComparer <T> .Default.Equals(v1.yx, v2.yx) && EqualityComparer <T> .Default.Equals(v1.zx, v2.zx) && EqualityComparer <T> .Default.Equals(v1.zy, v2.zy)); }
public override bool Equals(object obj) { if (obj != null && obj is Shear6 <T> ) { Shear6 <T> other = (Shear6 <T>)obj; return(Equals(ref this, ref other)); } return(base.Equals(obj)); }
public Shear6(Shear6 <T> h) { xy = h.xy; xz = h.xz; yz = h.yz; yx = h.yx; zx = h.zx; zy = h.zy; }
public Matrix44 <T> Shear(Shear6 <T> h) { Matrix44 <T> P = new Matrix44 <T>(this); for (int i = 0; i < 4; i++) { x[0][i] = P[0][i] + h.YX * P[1][i] + h.ZX * P[2][i]; x[1][i] = h.XY * P[0][i] + P[1][i] + h.ZY * P[2][i]; x[2][i] = h.XZ * P[0][i] + h.YZ * P[1][i] + P[2][i]; } return(this); }
public bool Equals(Shear6 <T> other) { return(Equals(this, other)); }