C++ (Qt)struct CTempEdge { CTempEdge( const Point * p0, const Point * p1 ) : mCalcFlag(false), mInters(0) { if (*p0 < *p1) { // "меньший" вертекс первый mPt[0] = p0; mPt[1] = p1; } else { mPt[1] = p0; mPt[0] = p1; } } bool operator < ( const CTempEdge & sec ) const { if (*mPt[0] < *sec.mPt[0]) return true; if (*mPt[0] > *sec.mPt[0]) return false; return *mPt[1] < *sec.mPt[1]; } bool mCalcFlag; // флаг "рассчитано" const Point * mInters; // указатель на точку пересечения (или NULL) const Point * mPt[2]; // указатели на 2 вертекса};
if (fabs(Z1 - Z2) < epsilon) { Z = fabs(Z1); // Z = fabs( min (Z1, Z2) ); if (fabs(X1 - X2) < epsilon * Z1 && fabs(Y1 - Y2) < epsilon * Z1) //OK!!!}