1. Си / Говнокод #12380

    +137

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 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;

    Из личной коллекции. Не помню, что конкретно делает, что-то вроде классификации точек полигона относительно линии...

    Запостил: tirinox, 02 Января 2013

    Комментарии (8) RSS

    • Вот что делает с людьми упорное нежелание ставить фигурные скобки)
      Ответить
      • упорное
        упоротое
        Ответить
      • Я всегда ставлю фигурные скобки, даже вокруг одной инструкции.
        Ответить
        • {
            if(c_ai < ac) newPoly.p[newPoly.n] = a[c_ai], fac[newPoly.n++] = 0;
          }
          Ответить
          • Бля, в пинус попал(
            + в общем!
            Ответить
            • > Бля, в пинус попал(
              Знакомая проблема, давно уже просим страйко расставить галку и крест по разные стороны от числа, чтобы не промахиваться.
              Ответить
              • Чуть промахнулся - порвал уздечку
                или чей-нибудь пинус
                Ответить
                • > порвал уздечку
                  Аккуратней надо на лошадях ездить, а то не только уздечка порвется, но и седло слетит.
                  Ответить

    Добавить комментарий