public IntFactor GetCosineAngle(Int3 dest, out int edgeIndex) { Int3 vInt = this.v1 - this.v0; Int3 vInt2 = this.v2 - this.v0; Int3 vInt3 = dest - this.v0; vInt3.NormalizeTo(1000); vInt.NormalizeTo(1000); vInt2.NormalizeTo(1000); long num = Int3.DotXZLong(ref vInt3, ref vInt); long num2 = Int3.DotXZLong(ref vInt3, ref vInt2); IntFactor result = default(IntFactor); result.denominator = 1000000L; if (num > num2) { edgeIndex = this.vi; result.numerator = num; } else { edgeIndex = (this.vi + 2) % 3; result.numerator = num2; } return(result); }
public VFactor GetCosineAngle(Int3 dest, out int edgeIndex) { Int3 rhs = v1 - v0; Int3 num2 = v2 - v0; Int3 lhs = dest - v0; lhs.NormalizeTo(1000); rhs.NormalizeTo(1000); num2.NormalizeTo(1000); long num4 = Int3.DotXZLong(ref lhs, ref rhs); long num5 = Int3.DotXZLong(ref lhs, ref num2); VFactor factor = new VFactor(); factor.den = 0xf4240L; if (num4 > num5) { edgeIndex = vi; factor.nom = num4; return(factor); } edgeIndex = (vi + 2) % 3; factor.nom = num5; return(factor); }