Canguro.Controller.Snap.LineMagnet.Snap C# (CSharp) Метод

Snap() публичный Метод

public Snap ( Canguro activeView, Point mousePoint ) : float
activeView Canguro
mousePoint Point
Результат float
        public override float Snap(Canguro.View.GraphicView activeView, Point mousePoint)
        {
            Vector3 mousePosition;

            // Project points
            Vector3 p = position, p2 = position + direction;
            activeView.Project(ref p);
            activeView.Project(ref p2);
            Vector3 v = p2 - p;
            p.Z = 0.1f;

            mousePosition = new Vector3((float)mousePoint.X, (float)mousePoint.Y, 0.1f);
            float r = Vector3.Dot(v, mousePosition - p) / Vector3.Dot(v, v);
            Vector3 snapPoint = p + Vector3.Scale(v, r);

            snapPosition = position + Vector3.Scale(direction, r);

            Vector3 d = mousePosition - snapPoint;
            return lastSnapFitness = Vector3.Dot(d, d);
        }