x-kom hosting

[Rozwiązane][C++] Rysowanie lini w C++ Builder

ogrod87
utworzono
utworzono

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
komentarz

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
komentarz

no właśnie zapisałem napisac...

program miałbyć napisany bez użycia LineTo :D

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.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.