Skocz do zawartości

Qbasic ->Krzywa, płatek KOCHA...


qmajster

Rekomendowane odpowiedzi

Witam wszystkich! :thumbsup:

Mam do wykonania program w Qbasicu który ma rysować graficznie może być animacyjnie Płatek Kocha...

tak to wygląda:WIKIpedia

Narysowałem ową Krzywą po prostu liniami prostymi bo niestety mój poziom jest poniżej krytyki,

niestety wykładowca ma WIELKIE wymagania i zażyczył sobie program animację z pętlami itd...

szukałem w Sieci podobnych info, faktem jest że są napisane takie programy tylko w pascalu... :(

http://www.odn.pila.pl/opracowanianauczyci...wolczynski1.htm

ja muszę mieć W QBASICu.

Czy ktoś może pomóc Laikowi???

Będę wdzięczny...

Q.

Odnośnik do komentarza
Udostępnij na innych stronach

A no widzisz... całkiem możliwe że mój dziadek się go uczył... :P

Tak się składa że prof. (prwaie w wieku mojego dziadka) który trzęsie "uczelnią" PWSZ umie już tylko archaizmy->>>> a my musimy grzecznie wykonywać polecenia... i cóż ...trzeba cierpieć :)

ponawiam prośbę o pomoc...

Q.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
nie rozumię tych gości co w 2008 roku każą w qbasicu pisać. to było dobre w 1992 roku.

 

Ale jak każą to nie ma wyjścia. Poza tym, co to za frajda robić coś najprościej, na tym polega nauka, że trzeba spróbować wszystkiego, nawet jak to archaiczne rozwiązanie. I właśnie to robią. Ja nie narzekam, ze pisze programy w Asemblerze, bo niektóre rzeczy naprawdę wolałbym w GMLu napisać (najbardziej wkurza brak czegoś takiego jak IF, ale zastępuje się to jakoś DJNZ :P) - ale niestety inaczej naszego sprzętu nie zaprogramujemy.

 

 

A wy to zawsze zamiast pomóc, to walicie teksty w stylu "weź coś nowszego, weź coś prostszego". Jakby osoba prosząca o pomoc mogła z tego korzystać - wierzcie mi - pytania by nie było!!!

Odnośnik do komentarza
Udostępnij na innych stronach

Nie miałem ochoty na przepisywanie tego programu z Pascala, to wymyśliłem własną metodę:

pi = 3.14159 'PI
sw = 640 'szerokosc
sh = 480 'wysokosc
scx = sw / 2 'srodek x
scy = sh / 2 'srodek y

'tryb graficzny
SCREEN 12

'dane wejsciwe
INPUT "r (50-300) ="; r 'rozmiar
IF r < 50 THEN r = 50
IF r > 300 THEN r = 300

INPUT "l (1-4) ="; l 'poziom
IF l < 1 THEN l = 1
IF l > 4 THEN l = 4

'rozmiar tablicy
s = 3 * 4 ^ l
'tablice z danymi
DIM a(s, 1)
DIM p(s, 1)

'trojkat startowy
p(0, 0) = r
p(0, 1) = 0
p(1, 0) = r
p(1, 1) = 120
p(2, 0) = r
p(2, 1) = 240
ps = 3

'obliczenia
FOR i = 0 TO l - 1 STEP 1
     FOR n = 0 TO ps - 1 STEP 1
          a(n * 4, 0) = p(n, 0)
          a(n * 4, 1) = p(n, 1)
     NEXT n
     
     FOR n = 0 TO ps - 1 STEP 1
          W = p(n, 0) / 3
          k = p(n, 1)
          a(n * 4, 0) = W
          a(n * 4, 1) = k
          a(n * 4 + 1, 0) = W
          a(n * 4 + 1, 1) = k - 60
          a(n * 4 + 2, 0) = W
          a(n * 4 + 2, 1) = k + 60
          a(n * 4 + 3, 0) = W
          a(n * 4 + 3, 1) = k
     NEXT n
     
     ps = ps * 4

     FOR n = 0 TO ps - 1 STEP 1
          p(n, 0) = a(n, 0)
          p(n, 1) = a(n, 1)
     NEXT n
NEXT i

PRINT "Ilosc odcinkow: "; ps

'uklad
LINE (0, scy)-(sw, scy), 8
LINE (scx, 0)-(scx, sh), 8

'rysowanie "wykresu"
x = scx - r / 2
y = scy + r / 3
FOR n = 0 TO ps - 1 STEP 1
     xt = COS(p(n, 1) / 180 * pi) * p(n, 0)
     yt = -SIN(p(n, 1) / 180 * pi) * p(n, 0)

     LINE (x, y)-((x + xt), (y + yt))

     x = x + xt
     y = y + yt
NEXT n

Jest nieco ograniczona, ale działa.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...