예제 #1
0
파일: Math.cs 프로젝트: Ziriax/KleinSharp
        public static Rotor Exp(Branch b)
        {
            // Compute the rotor angle
            float ang     = _mm_store_ss(Detail.sqrt_nr1(Detail.hi_dp(b.P1, b.P1)));
            float cos_ang = MathF.Cos(ang);
            float sin_ang = MathF.Sin(ang) / ang;

            var p1 = _mm_mul_ps(_mm_set1_ps(sin_ang), b.P1);

            p1 = _mm_add_ps(p1, _mm_set_ps(0f, 0f, 0f, cos_ang));
            return(new Rotor(p1));
        }
예제 #2
0
 public float Norm()
 {
     return(_mm_store_ss(Detail.sqrt_nr1(Detail.hi_dp(P0, P0))));
 }
예제 #3
0
파일: Line.cs 프로젝트: Ziriax/KleinSharp
        public float SquaredNorm()
        {
            __m128 dp = Detail.hi_dp(P1, P1);

            return(_mm_store_ss(dp));
        }
예제 #4
0
        public float SquaredIdealNorm()
        {
            var dp = Detail.hi_dp(P2, P2);

            return(_mm_store_ss(dp));
        }