Genelde oyunlarda çigzi çizmek icin kullanılır. X Y kordinatında gideceği kordinatın kac adım istiyosanız o kordinatı bulur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
struct NMOVE { float X; float Y; float dist; }; NMOVE DDA(float xa, float ya, float xb, float yb, int step) { float dx = xb - xa, dy = yb - ya, steps, DisX, DisY; float xIncrement, yIncrement, x = xa, y = ya; if (abs(dx) > abs(dy)) steps = abs(dx); else steps = abs(dy); xIncrement = dx / steps; yIncrement = dy / steps; for (int k = 0; k < step; k++) { // if(x<xb&&y<yb){ x += xIncrement; y += yIncrement; // } } NMOVE Mret; Mret.X = x; Mret.Y = y; DisX = x - xb; DisY = y - yb; Mret.dist = sqrt(DisX * DisX + DisY * DisY); return Mret; } |