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.