public static PointF GetPointOffsetByAngle(PointF pobjPoint, float psngAngle, float psngDistance)
        {
            PointF objReturn = default(PointF);

            if (float.IsNaN(psngAngle))
            {
                return(pobjPoint);
            }

            objReturn = new PointF(Convert.ToSingle(psngDistance * (Math.Sin(TrigHelper.DegreeToRadian(Convert.ToDouble(psngAngle))))), Convert.ToSingle(psngDistance * (Math.Cos(TrigHelper.DegreeToRadian(Convert.ToDouble(psngAngle * -1))))) * -1);

            return(GetPointOffset(objReturn, pobjPoint));
        }
        public static float GetAngleBetweenPoints(PointF pobjSource, PointF pobjTarget)
        {
            double sngO     = (pobjSource.Y - pobjTarget.Y);
            double sngA     = (pobjSource.X - pobjTarget.X);
            float  sngTan   = Convert.ToSingle((sngO / sngA));
            float  sngAngle = Convert.ToSingle(TrigHelper.RadianToDegree(Math.Atan(Convert.ToDouble(sngTan))));

            if ((sngA < 0))
            {
                sngAngle = (sngAngle + 90f);
            }
            else
            {
                sngAngle = (sngAngle - 90f);
            }
            return(Convert.ToSingle(TrigHelper.Get0to360AngleValue(Convert.ToDouble(sngAngle))));
        }