Új hozzászólás Aktív témák

  • axioma

    veterán

    válasz DopeBob #74 üzenetére

    Bocs, C style-ban ritkan irok. Ez a 8 iranyt egyben lefedi, ha csak diagonalra kene, akkor nem kellenek a 0 vizsgalatok.
    // from (fx,fy) to (tx,ty)
    int dx=(fx==tx)?0:((tx<fx)?-1:1); // ugyanaz mint sign(tx-fx) ha van...
    int dy=(fx==tx)?0:((tx<fx)?-1:1); // sign(ty-fy)
    int len=(dx!=0)?(tx-fx)/dx:((dy!=0)?(ty-fy)/dy:0);
    for (int i=0;i<=len;i++) {
    x=fx+i*dx;
    y=fy+i*dy;
    // tomb manipulacio
    }

    (lehetne x,y beallit es akkor csak +=dx/dy a ciklusban a koordinata kiszamitas, az mar mind1, szerintem igy inkabb lathato az osszefugges)

    Nem feltetlen mondanam jobb megoldasnak, teny hogy kompaktabb, inkabb az az elonye hogy altalanositasra epul. Hatranya hogy ha muszaj debug-olni, akkor nehez kivalasztani, hogy mikor akarsz megallni (persze lehet), meg fejben kovetni hogy melyik esetben vagy.

    [ Szerkesztve ]

Új hozzászólás Aktív témák