Funkcja lineto()

0

Ten kod ma narysować w sposób rekurencyjny taką spirale o prostych bokach. Ale mam problem z samą fukcją line to. W kodzie przedstawie problem.

#include <GRAPHICS.H>
#include <conio.h>

const double alpha=10;

void spirala(double lg,double x,double y)
{
if (lg>0)
   {
   lineto(x+lg,y); // tu się zgadza
   lineto(x+lg,y+lg); // tu się zgadza
   lineto(x+alpha,y+lg); //czemu tu choć tak samo jak wyżej
// dodaję pewną wielkość (to nic że inną) to bok spirali już "zakręca" rysuje w drugą stronę ?
   lineto(x+alpha,y+alpha); // tu tak samo dodaje i bok rysuje do góry a wcześniej dodając do y 
//rysowałem w dół...
   spirala(lg-2*alpha,x+alpha,y+alpha); 
   }
}
int main()
{
int Karta, Tryb;
Karta = DETECT;
initgraph(&Karta, &Tryb, "d:\\tc\\bgi\");
setgraphmode(Tryb);
moveto(90,50);
spirala(getmaxx()/2,getx(),gety());
getch();
closegraph();
}
0

Proponuję odpalic helpa i poczytać o funkcjach line(), linerel() i lineto(). A zwłaszcza proponuje głebiej się zastanowić, nad znaczeniem przyrostków '-rel' i '-to'.

// A tak btw. ten kod rysuje dokładnie to, czego potrzebujesz.
// Więc osobiście nie widzę powodu, dla którego trzeba sie
// zastanawiać nad mechanizmem działania kija, skoro już
// go uzyłeś zgodnie z przeznaczeniem.

// Aha, jeszcze... Nie używaj po sobie initgraph i setgraphmode, bo tylko dublujesz opcje...

  detectgraph(&driver,&mode);
  if(driver^VGA){                    // driver!=VGA
    printf("not vga, get lost !");
    exit(1)
  }
  mode:=VGAHI // VGAMED,VGALO
  initgraph(&driver,&mode,"c:\...");  
0

Jasne że kod działa bo jest przepisany z książki i właśnie pytanie było o mechanizm. Ale juz nieważne, dowiedziałem się że ona rysuj od miejsca gdzie ostatnio skończyła.

1 użytkowników online, w tym zalogowanych: 0, gości: 1