public double VerticalHeight(clsPoint pt1) { //Returns the height of the line where is passes over p1 clsLine l1 = default(clsLine); clsLine l2 = default(clsLine); double d = 0; double d1 = 0; double d2 = 0; l1 = new clsLine(P1.X, P1.Y, P2.X, P2.Y); if (l1.IsOnLine(pt1) == false) { return(0); } d1 = l1.Length; l1.Normalise(); l2 = new clsLine(l1.P1, pt1); d2 = l1.Dot(l2); d = d2 / d1; return(P1.Z + (P2.Z - P1.Z) * d); }