- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
GePolygon newPoly;
int c_ai = 0, n_pi = 0;
int fac[GE_MAX_POLY_VERTEX];
newPoly.n = 0;
Pt diff = ccpSub(end, bgn);
int f = 0;
do
newPoly.p[newPoly.n] = ai[c_ai] == (n_pi - 1) ? (f = 1, a[c_ai++]) : (f = 0, inp->p[n_pi++]),
fac[newPoly.n++] = f ? 0 : (ccpCross(ccpSub(newPoly.p[newPoly.n - 1], newPoly.p[newPoly.n - 2]), diff) > 0 ? 1 : -1 );
while(n_pi < inp->n);
if(c_ai < ac)
newPoly.p[newPoly.n] = a[c_ai], fac[newPoly.n++] = 0;
Из личной коллекции. Не помню, что конкретно делает, что-то вроде классификации точек полигона относительно линии...
упоротое
+ в общем!
Знакомая проблема, давно уже просим страйко расставить галку и крест по разные стороны от числа, чтобы не промахиваться.
или чей-нибудь пинус
Аккуратней надо на лошадях ездить, а то не только уздечка порвется, но и седло слетит.