Autor |
Wiadomość |
martinom
redaktor
Dołączył: 16 Lis 2007
Posty: 230
Przeczytał: 0 tematów
Pomógł: 1 raz Ostrzeżeń: 0/5 Skąd: legnica
|
|
algorytm Brasenhama |
|
niestety już jutro środa a to oznacza nie tylko malowanie farbkami ale niestety spotkanie z brylaczkiem, ale żeby nie owijać w bawełnę przejdę do sedna.
Jak powinien wyglądać algorytm Brasenhama? mam takie cos:
| |
public void drawLine(int Xa, int Ya, int Xb, int Yb, byte Red, byte Green, byte Blue)
{
int d,dy,dx;
int x;
int y;
dx = Xa - Xb;
if (dx < 0) dx *= -1;
x=(Xa>Xb)?Xb:Xa;
dy = Ya - Yb;
if (dy < 0) dy *= -1;
y =(Ya>Yb)?Yb:Ya;
d = 2*dy-dx;
if (dx!=0)
for (int i = 0; i <=dx; i++)
{
d=(2*dy*x)-(2*dx*y)-dx;
if (d > 0) y++;
x++;
setPixelAsRGB(x, y, Red, Green, Blue);
}
} |
i algorytm rysuje dobrze tylko jeśli np.
Xa=10
Ya=10
Xb=100
Yb=100
czyli prosta jest pod kątem 45' ale w innych przypadkach już szwankuje z góry dzieki za pomoc
Post został pochwalony 0 razy
|
|
Wto 1:01, 17 Mar 2009 |
|
|
|
|
burza
redaktor
Dołączył: 13 Cze 2008
Posty: 239
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Legnica
|
|
|
|
| | public void drawLine(int x1, int y1, int x2, int y2, byte R, byte G, byte B, byte R1, byte G1, byte B1)
{
// zmienne pomocnicze
int d, dx, dy, ai, bi, xi, yi, rKrok, gKrok, bKrok, rTemp, gTemp, bTemp;
int x = x1, y = y1;
int di;
// ustalenie kierunku rysowania
if (x1 < x2)
{
xi = 1;
dx = x2 - x1;
}
else
{
xi = -1;
dx = x1 - x2;
}
// ustalenie kierunku rysowania
if (y1 < y2)
{
yi = 1;
dy = y2 - y1;
}
else
{
yi = -1;
dy = y1 - y2;
}
for (int i = 1; i <= dx; i++)
{
}
x += 1;
di += (dy << 1);
// pierwszy piksel
setPixelAsRGB(x, y, R, G, B);
// oś wiodąca OX
if (dx > dy)
{
ai = (dy - dx) * 2;
bi = dy * 2;
d = bi - dx;
// pętla po kolejnych x
while (x != x2)
{
// test współczynnika
if (d >= 0)
{
x += xi;
y += yi;
d += ai;
}
else
{
d += bi;
x += xi;
}
setPixelAsRGB(x, y, R, G, B);
}
}
// oś wiodąca OY
else
{
ai = (dx - dy) * 2;
bi = dx * 2;
d = bi - dy;
// pętla po kolejnych y
while (y != y2)
{
// test współczynnika
if (d >= 0)
{
x += xi;
y += yi;
d += ai;
}
else
{
d += bi;
y += yi;
}
setPixelAsRGB(x, y, R, G, B);
}
}
}
} |
U mnie to dziala tylko tej interpolacji nie wime jak zrobic :/
a tylko tam jest kilka zmiennych ktore nie sa potrzebne w tym algorytmie a do interpolacji probowalem
Post został pochwalony 0 razy
Ostatnio zmieniony przez burza dnia Wto 23:41, 17 Mar 2009, w całości zmieniany 1 raz
|
|
Wto 23:32, 17 Mar 2009 |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|
|