コード例 #1
0
        internal static double Angle(D2 a, D2 b)
        {
            var p     = new D2(-b.Y, b.X);
            var angle = Math.Atan2(D2.Dot(a, p), D2.Dot(a, b));

            return((angle < 0) ? 2.0 * Math.PI + angle : angle);
        }
コード例 #2
0
        internal static bool InsideSquare(D2[] square, D2 p)
        {
            var ap = p - square[0];
            var ab = square[1] - square[0];
            var ad = square[3] - square[0];

            var ap_dot_ab = D2.Dot(ap, ab);
            var ap_dot_ad = D2.Dot(ap, ad);

            return
                ((0 < ap_dot_ab) &&
                 (0 < ap_dot_ad) &&
                 (ap_dot_ab < D2.Dot(ab, ab)) &&
                 (ap_dot_ad < D2.Dot(ad, ad)));
        }