/// <summary> /// HYPERBOLIC.Mul : res = a * b /// The geometric product. /// </summary> public static HYPERBOLIC operator *(HYPERBOLIC a, HYPERBOLIC b) { HYPERBOLIC res = new HYPERBOLIC(); res[0] = b[0] * a[0] + b[1] * a[1]; res[1] = b[1] * a[0] + b[0] * a[1]; return(res); }
/// <summary> /// HYPERBOLIC.Conjugate : res = a.Conjugate() /// Clifford Conjugation /// </summary> public HYPERBOLIC Conjugate() { HYPERBOLIC res = new HYPERBOLIC(); res[0] = this[0]; res[1] = -this[1]; return(res); }
/// <summary> /// HYPERBOLIC.Involute : res = a.Involute() /// Main involution /// </summary> public HYPERBOLIC Involute() { HYPERBOLIC res = new HYPERBOLIC(); res[0] = this[0]; res[1] = -this[1]; return(res); }
/// <summary> /// HYPERBOLIC.Dual : res = !a /// Poincare duality operator. /// </summary> public static HYPERBOLIC operator !(HYPERBOLIC a) { HYPERBOLIC res = new HYPERBOLIC(); res[0] = a[1]; res[1] = a[0]; return(res); }
/// <summary> /// HYPERBOLIC.adds : res = a + b /// multivector/scalar addition /// </summary> public static HYPERBOLIC operator +(HYPERBOLIC a, float b) { HYPERBOLIC res = new HYPERBOLIC(); res[0] = a[0] + b; res[1] = a[1]; return(res); }
/// <summary> /// HYPERBOLIC.sadd : res = a + b /// scalar/multivector addition /// </summary> public static HYPERBOLIC operator +(float a, HYPERBOLIC b) { HYPERBOLIC res = new HYPERBOLIC(); res[0] = a + b[0]; res[1] = b[1]; return(res); }
/// <summary> /// HYPERBOLIC.Sub : res = a - b /// Multivector subtraction /// </summary> public static HYPERBOLIC operator -(HYPERBOLIC a, HYPERBOLIC b) { HYPERBOLIC res = new HYPERBOLIC(); res[0] = a[0] - b[0]; res[1] = a[1] - b[1]; return(res); }
/// <summary> /// HYPERBOLIC.Vee : res = a & b /// The regressive product. (JOIN) /// </summary> public static HYPERBOLIC operator &(HYPERBOLIC a, HYPERBOLIC b) { HYPERBOLIC res = new HYPERBOLIC(); res[1] = 1 * (a[1] * b[1]); res[0] = 1 * (a[0] * b[1] + a[1] * b[0]); return(res); }