if (IsInLineBound(seg1, xI, yI) && IsInLineBound(seg2, xI, yI)) { double distance1 = Math.Sqrt(Math.Pow((seg1.p.X - xI), 2.0) + Math.Pow((seg1.p.Y - yI), 2.0)); double distance2 = Math.Sqrt(Math.Pow((seg1.q.X - xI), 2.0) + Math.Pow((seg1.q.Y - yI), 2.0)); if (distance1 <= 1 || distance2 <= 1) { return false; } else { return true; } } else { return false; } } private bool IsInLineBound(Segment seg, double xI, double yI) { bool xI_OK = false; bool yI_OK = false; // x bound check if (seg.p.X > seg.q.X) { if (xI > seg.q.X && xI < seg.p.X) { xI_OK = true; } else { return false; } } else if (seg.p.X < seg.q.X) { if (xI > seg.p.X && xI < seg.q.X) { xI_OK = true; } else { return false; } } else if (seg.p.X == seg.q.X) { if (xI == seg.p.X) { xI_OK = true; } else { return false; } } // y bound check if (seg.p.Y > seg.q.Y) { if (yI > seg.q.Y && yI < seg.p.Y) { yI_OK = true; } else { return false; } } else if (seg.p.Y < seg.q.Y) { if (yI > seg.p.Y && yI < seg.q.Y) { yI_OK = true; } else { return false; } } else if (seg.p.Y == seg.q.Y) { if (yI == seg.p.Y) { yI_OK = true; } else { return false; } } if (xI_OK && yI_OK) return true; return false; }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)