Jos trigonometriset funktiot sin ja cos tuntuvat oudoilta, kannattaa katsastaa tämä QBasic-esitys. Se näyttää kädestä pitäen, kuinka ympyrän piirtäminen kyseisillä funktioilla tapahtuu. Hyvää joulua tämän koodinpätkän merkeissä!
'omistettu progurulle
DECLARE SUB NaytaTeksti (teksti AS STRING, x AS INTEGER, y AS INTEGER, p AS INTEGER)
DECLARE SUB Piirrakehys ()
DECLARE SUB Asetapaletti (i AS INTEGER, r AS INTEGER, g AS INTEGER, B AS INTEGER)
DECLARE SUB Odota ()
SCREEN 12
Piirrakehys
NaytaTeksti "Piirretään koordinaatisto väliltä (-10,-10) ja (10,10).", 3, 2, 1
DIM i AS INTEGER
Asetapaletti 7, 20, 20, 20
COLOR 7
FOR i = 100 TO 300 STEP 10
  LINE (100, i)-(300, i)
  LINE (i, 100)-(i, 300)
  WAIT &H3DA, 8
NEXT
COLOR 15
LINE (100, 100)-(300, 300), , B
FOR i = 100 TO 300
  PSET (200, i)
  PSET (i, 200)
  WAIT &H3DA, 8
NEXT
Odota
NaytaTeksti "Määrätään ympyrän keskipisteeksi (0,0) ja säteeksi 4.  ", 3, 2, 1
COLOR 2
CIRCLE (200, 200), 2
PAINT (200, 200), 2, 2
Odota
DIM pii AS SINGLE, kohta AS SINGLE
pii = 4 * ATN(1)
kohta = 0 * pii / 180
NaytaTeksti "Lasketaan pisteen arvo 0ø-kulmassa radiaaneina:        ", 3, 2, 1
NaytaTeksti "   0 * pii / 180 =" + STR$(kohta) + "                  ", 3, 3, 0
Odota
DIM x AS SINGLE, y AS SINGLE
x = SIN(kohta) * 4
y = COS(kohta) * 4
NaytaTeksti "                                                       ", 3, 3, 0
NaytaTeksti "Lasketaan pisteen x ja y ja piirretään se kuvaan:      ", 3, 2, 1
NaytaTeksti "   x = SIN(0) * 4 =" + STR$(x) + "                  ", 3, 3, 0
NaytaTeksti "   y = COS(0) * 4 =" + STR$(y) + "                  ", 3, 4, 0
CIRCLE (200 + x * 20, 200 + y * 20), 2, 2
PAINT (200 + x * 20, 200 + y * 20), 2, 2
Odota
NaytaTeksti "                                                       ", 3, 3, 0
NaytaTeksti "                                                       ", 3, 4, 0
NaytaTeksti "Tehdään sama asia 10ø kanssa:                          ", 3, 2, 1
kohta = 10 * pii / 180
NaytaTeksti "   10 * pii / 180 =" + STR$(kohta) + "                 ", 3, 3, 0
x = SIN(kohta) * 4
y = COS(kohta) * 4
NaytaTeksti "   x = SIN(0) * 4 =" + STR$(x) + "                  ", 3, 4, 0
NaytaTeksti "   y = COS(0) * 4 =" + STR$(y) + "                  ", 3, 5, 0
CIRCLE (200 + x * 20, 200 + y * 20), 2, 2
PAINT (200 + x * 20, 200 + y * 20), 2, 2
Odota
NaytaTeksti "                                                       ", 3, 3, 0
NaytaTeksti "                                                       ", 3, 4, 0
NaytaTeksti "                                                       ", 3, 5, 0
NaytaTeksti "Piirretään pisteet asteilla 20ø,30ø,40ø,...,340ø:      ", 3, 2, 1
DIM a AS SINGLE
FOR i = 20 TO 350 STEP 10
  kohta = i * pii / 180
  x = SIN(kohta) * 4
  y = COS(kohta) * 4
  CIRCLE (200 + x * 20, 200 + y * 20), 2, 2
  PAINT (200 + x * 20, 200 + y * 20), 2, 2
  a = TIMER
  DO WHILE a = TIMER
  LOOP
NEXT
Odota
NaytaTeksti "Ympyrä on valmis:                                      ", 3, 2, 1
CIRCLE (200, 200), 80, 2
END
SUB Asetapaletti (i AS INTEGER, r AS INTEGER, g AS INTEGER, B AS INTEGER)
  OUT &H3C8, i
  OUT &H3C9, r
  OUT &H3C9, g
  OUT &H3C9, B
END SUB
SUB NaytaTeksti (teksti AS STRING, x AS INTEGER, y AS INTEGER, p AS INTEGER)
  DIM i AS INTEGER
  Asetapaletti 1, 0, 0, 0
  COLOR 1
  IF p = 1 THEN
    FOR i = 0 TO 63
      Asetapaletti 1, i, i, i
      LOCATE y, x: PRINT teksti
      WAIT &H3DA, 8
    NEXT
  ELSE
    Asetapaletti 1, 63, 63, 63
    LOCATE y, x: PRINT teksti
  END IF
END SUB
SUB Odota
  DO
  LOOP WHILE INKEY$ = ""
END SUB
SUB Piirrakehys
  DIM i AS INTEGER
  LOCATE 1: PRINT CHR$(201) + STRING$(78, CHR$(205)) + CHR$(187)
  FOR i = 2 TO 22
    LOCATE i: PRINT CHR$(186) + SPACE$(78) + CHR$(186)
  NEXT
  LOCATE 23: PRINT CHR$(200) + STRING$(78, CHR$(205)) + CHR$(188)
END SUBHyvä vinkki!
Harvinaisen hieno vinkki, tästä on minulle enemmän hyötyä kuin arvaattekaan....
Ahh, kivakiva! Eka rivi rulez ! :) Hyvä vinkkI!
jopas on muuten näppärä!
Hieno esimerkki. Havainnolistaa ympyrän piirron hitaasti pykälä pykälältä. En ollut aiemmin viitsinyt katsoa koko vinkkiä, kun olin ajatellut, että se vain piirtää tavallisen ympyrän SIN ja COS -fuktioilla.
no ny alakas vähä sin ja cos selijetä.
Extra-lyhyt versio niille, jotka eivät jaksa lukea läpi:
SCREEN 13 x = 160 'keskipiste y = 100 sade = 30 'ympyrän säde alkupiste = 0 'alkupiste loppupiste = 6.28 'loppupiste FOR piste = alkupiste to loppupiste step 0.1 PSET (x+(COS(piste)*sade),y+(SIN(piste)*sade)), 15 WAIT &H3DA,8 NEXT piste
Aihe on jo aika vanha, joten et voi enää vastata siihen.