Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Ympyrä trigonometrialla

Sivun loppuun

Antti Laaksonen [23.12.2002 19:42:49]

#

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 SUB

KimmoKM [25.12.2002 10:33:35]

#

Hyvä vinkki!

Herne [25.12.2002 14:49:39]

#

Harvinaisen hieno vinkki, tästä on minulle enemmän hyötyä kuin arvaattekaan....

progo [25.12.2002 18:08:21]

#

Ahh, kivakiva! Eka rivi rulez ! :) Hyvä vinkkI!

muhis [28.12.2002 17:27:23]

#

jopas on muuten näppärä!

hunajavohveli [17.02.2004 15:29:31]

#

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.

Dude [31.08.2007 19:08:58]

#

no ny alakas vähä sin ja cos selijetä.

Juhko [02.08.2008 20:34:15]

#

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

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta