196 double _epsilon = 1e-6)
const
198 double d = this->CrossProduct(_line);
202 if (math::equal(d, 0.0, _epsilon))
205 if (this->Within(_line[0], _epsilon))
211 else if (this->Within(_line[1], _epsilon))
221 _pt.
X((_line[0].X() - _line[1].X()) *
222 (this->pts[0].X() * this->pts[1].Y() -
223 this->pts[0].Y() * this->pts[1].X()) -
224 (this->pts[0].X() - this->pts[1].X()) *
225 (_line[0].X() * _line[1].Y() - _line[0].Y() * _line[1].X()));
227 _pt.
Y((_line[0].Y() - _line[1].Y()) *
228 (this->pts[0].X() * this->pts[1].Y() -
229 this->pts[0].Y() * this->pts[1].X()) -
230 (this->pts[0].Y() - this->pts[1].Y()) *
231 (_line[0].X() * _line[1].Y() - _line[0].Y() * _line[1].X()));
235 if (_pt.
X() <
std::min(this->pts[0].X(), this->pts[1].X()) ||
236 _pt.
X() >
std::max(this->pts[0].X(), this->pts[1].X()) ||
237 _pt.
X() <
std::min(_line[0].X(), _line[1].X()) ||
238 _pt.
X() >
std::max(_line[0].X(), _line[1].X()))
243 if (_pt.
Y() <
std::min(this->pts[0].Y(), this->pts[1].Y()) ||
244 _pt.
Y() >
std::max(this->pts[0].Y(), this->pts[1].Y()) ||
245 _pt.
Y() <
std::min(_line[0].Y(), _line[1].Y()) ||
246 _pt.
Y() >
std::max(_line[0].Y(), _line[1].Y()))