/// <summary>
        /// To find the center of the circumscribed circle of the triangle, we need to find
        /// the intersection point of the 3 perpendicular bisector of the triangle
        /// </summary>
        /// <returns></returns>
        public Vector3 GetCircleCenter(Vector3 A, Vector3 B, Vector3 C)
        {
            Vector3 AB = (B - A);
            Vector3 BC = (C - B);
            Vector3 CA = (A - C);

            // Je récupère un produit vectoriel que je pourai ensuite utiliser pour
            // trouver les médiatrices

            // Using Cross product to find perpendicular bisectors
            Vector3 cross = Vector3.Cross(AB, BC);

            cross.Normalize();

            // Vertex from where the perpendicular bisectors comes off
            Vector3 M = A + (AB / 2.0f);
            Vector3 U = Vector3.Cross(AB, cross);

            U.Normalize();

            Vector3 N = B + (BC / 2.0f);
            Vector3 V = Vector3.Cross(BC, cross);

            V.Normalize();

            Vector3 result = new Vector3();

            MathStuffs.SegmentIntersect(M, M + U, N, N + V, ref result);

            // Now looking for the intersection point between these 2 line segments

            // Pour se faire, on va résoudre l'équation à 2 inconnues utilisant l'équation
            //// paramétriques des 2 droites

            //float s = M.Y + ( ( N.X * U.Y ) / U.X ) - ( ( M.X * U.Y )/ U.X  ) - N.Y;
            //float denominateur = U.Y  - (( V.X * U.Y ) / U.X);
            //s = s / denominateur;

            //float x = N.X + s * V.X;
            //float y = N.Y + s * V.Y;

            return(new Vector3(result.X, result.Y, 0.0f));
        }
Пример #2
0
        /// <summary>
        /// Pour trouver le centre du cercle circonscrit au triangle,
        /// il faut trouver le point d'intersection des 3 médiatrices du triangle
        /// </summary>
        /// <returns></returns>
        public Vector3 GetCircleCenter(Vector3 A, Vector3 B, Vector3 C)
        {
            Vector3 AB = (B - A);
            Vector3 BC = (C - B);
            Vector3 CA = (A - C);

            // Je récupère un produit vectoriel que je pourai ensuite utiliser pour
            // trouver les médiatrices
            Vector3 cross = Vector3.Cross(AB, BC);

            cross.Normalize();

            // Sommet d'ou part la médiatrice
            Vector3 M = A + (AB / 2.0f);
            Vector3 U = Vector3.Cross(AB, cross);

            U.Normalize();

            Vector3 N = B + (BC / 2.0f);
            Vector3 V = Vector3.Cross(BC, cross);

            V.Normalize();

            Vector3 result = new Vector3();

            MathStuffs.SegmentIntersect(M, M + U, N, N + V, ref result);

            // Et maintenant on cherche le point d'intersection entre ces 2 segments

            // Pour se faire, on va résoudre l'équation à 2 inconnues utilisant l'équation
            //// paramétriques des 2 droites

            //float s = M.Y + ( ( N.X * U.Y ) / U.X ) - ( ( M.X * U.Y )/ U.X  ) - N.Y;
            //float denominateur = U.Y  - (( V.X * U.Y ) / U.X);
            //s = s / denominateur;

            //float x = N.X + s * V.X;
            //float y = N.Y + s * V.Y;

            return(new Vector3(result.X, result.Y, 0.0f));
        }