ogrod87 utworzono 6 listopada 2008 utworzono 6 listopada 2008 Witam. Mam do napisania program który rysuje linię po podaniu 2 punktów na płótnie (Canvas) O to mój program(najważniejsza część): int x;int x0,y0,x1,y1;float dy,dx,y,m;x0=StrToInt(X_0->Text);y0=StrToInt(Y_0->Text);x1=StrToInt(X_1->Text);y1=StrToInt(Y_1->Text);dy=y1-y0;dx=x1-x0;m=dy/dx; //TU BŁĄD GDY X0=X1y=y0;for(x=x0;x<=x1;x++) { Canvas->Pixels[x][y]=clBlack; y+=m; } Sprawa taka, że rysuję linie dobrze, tylko że nauczyciel powiedział, że nie mam tangensa 90 stopni. Chodzi że wywala mi błąd gdy X1=X0. nauczyciel powiedział, że mam dopisać wyjątek gdy tangens=90 stopni. mógłby mi ktoś to wyjaśnić? Sprawdzałem w książce "grafika komputerowa" Faleya, ale nic nie znalazłem
luk1999 komentarz 7 listopada 2008 komentarz 7 listopada 2008 Bez sensu się w to bawić, skoro masz LineTo... Ale twoja sprawa - najprościej skorzystać z if'a: if (x1 != x2){ dy=y1-y0; dx=x1-x0; m=dy/dx; //TU BŁĄD GDY X0=X1 y=y0; for(x=x0;x<=x1;x++) { Canvas->Pixels[x][y]=clBlack; y+=m; }}else{ for(int y=0;y<=y1;y++) Canvas->Pixels[x0][y]=clBlack;}
ogrod87 komentarz 7 listopada 2008 Autor komentarz 7 listopada 2008 no właśnie zapisałem napisac... program miałbyć napisany bez użycia LineTo trzeba było samemu napisać funkcję
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.