Qbasic ja tähti

Miten piirrän viisisakaraisen tähden.
eli tarvitsen tietää asteet miten käännytää

Neliön tein näin
CALL rt(90)
CALL fd(100)
CALL rt(90)
CALL fd(100)
CALL rt(90)
CALL fd(100)
CALL rt(90)
CALL fd(100)

Mutta tähteä en saa kirveelläkään
2224
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Homma menee about näin:
Jokainen sakara on tasakylkinen kolmio. Kun jaetaan 360 astetta (ympyrä) sakaroiden lkm:llä (sakarat), saadaan tulos, montako astetta pitää kääntyä, jotta päästään takaisin lähtöpisteeseen haluttujen askeleiden jälkeen, ts. piirretään monikulmio (tässä 5-kulmio).
Merkitään kolmion eli sakaran korkeutta h:lla ja leveyttä l:llä. Sakara muodostuu siis kolmion kyljistä l. hypotenuusasta (c^2=a^2 b^2). Hypotenuusan ja pohjasivun välinen kulma saadaan modifioimalla kaavasta tan alfa=a/b (alfa-kulman tangentti on kulman vastakkaisen sivun suhde kulman viereiseen sivuun). Varsinainen astekulma saadaan, kun tangentti kerrotaan 180:lla ja jaetaan piillä (kone käyttää radiaaneja eli tehdään muutos rad->deg).


DECLARE SUB piirra (pituus!) 'piirtää viivan
DECLARE SUB kaanna (astetta!) 'kääntää suuntaa asteina (suunnan muutos)
DECLARE SUB suunta (asteet!) 'asettaa suunnan (uusi, absoluuttinen suunta)
SCREEN 12
DIM SHARED astenyt 'pidetään kirjaa nykyisestä suunnasta

pii = ATN(1) * 4 'pii ;)

sakarat = 5 'montako sakaraa tähteen
askel = 360 / sakarat 'montako astetta sakaran pohjasivu kääntyy ympyrän kehällä joka kerta

h = 50 ' sakaran korkeus pisteinä
l = 20 ' sakaran kannan leveys pisteinä
hyp = SQR(h ^ 2 (l / 2) ^ 2) 'sakaran sivun pituus (hypotenuusat, ts. tasakylk. kolmion sivut)

aste = (l / (2 * hyp)) 'kulman tangentti
aste = TAN(aste) * 180 / pii 'kulma asteina

FOR i = 1 TO sakarat 'piirretään sakarat
   kaanna (aste) 'eka käännös
   piirra (h) 'eka viiva
   kaanna (180 - aste * 2) 'toinen käännös
   piirra (h) 'toinen viiva
   suunta (i * askel) 'käännetään suunta seuraavalle sakaralle
NEXT

SUB kaanna (astetta)
   astenyt = (astenyt astetta) MOD 360
   DRAW "ta" STR$(INT(astenyt))
END SUB

SUB piirra (pituus)
   DRAW "u" STR$(pituus)
END SUB

SUB suunta (asteet)
   astenyt = asteet MOD 360
   DRAW "ta" STR$(INT(astenyt))
END SUB

Äänestä

Homma menee about näin:
Jokainen sakara on tasakylkinen kolmio. Kun jaetaan 360 astetta (ympyrä) sakaroiden lkm:llä (sakarat), saadaan tulos, montako astetta pitää kääntyä, jotta päästään takaisin lähtöpisteeseen haluttujen askeleiden jälkeen, ts. piirretään monikulmio (tässä 5-kulmio).
Merkitään kolmion eli sakaran korkeutta h:lla ja leveyttä l:llä. Sakara muodostuu siis kolmion kyljistä l. hypotenuusasta (c^2=a^2 b^2). Hypotenuusan ja pohjasivun välinen kulma saadaan modifioimalla kaavasta tan alfa=a/b (alfa-kulman tangentti on kulman vastakkaisen sivun suhde kulman viereiseen sivuun). Varsinainen astekulma saadaan, kun tangentti kerrotaan 180:lla ja jaetaan piillä (kone käyttää radiaaneja eli tehdään muutos rad->deg).


DECLARE SUB piirra (pituus!) 'piirtää viivan
DECLARE SUB kaanna (astetta!) 'kääntää suuntaa asteina (suunnan muutos)
DECLARE SUB suunta (asteet!) 'asettaa suunnan (uusi, absoluuttinen suunta)
SCREEN 12
DIM SHARED astenyt 'pidetään kirjaa nykyisestä suunnasta

pii = ATN(1) * 4 'pii ;)

sakarat = 5 'montako sakaraa tähteen
askel = 360 / sakarat 'montako astetta sakaran pohjasivu kääntyy ympyrän kehällä joka kerta

h = 50 ' sakaran korkeus pisteinä
l = 20 ' sakaran kannan leveys pisteinä
hyp = SQR(h ^ 2 (l / 2) ^ 2) 'sakaran sivun pituus (hypotenuusat, ts. tasakylk. kolmion sivut)

aste = (l / (2 * hyp)) 'kulman tangentti
aste = TAN(aste) * 180 / pii 'kulma asteina

FOR i = 1 TO sakarat 'piirretään sakarat
   kaanna (aste) 'eka käännös
   piirra (h) 'eka viiva
   kaanna (180 - aste * 2) 'toinen käännös
   piirra (h) 'toinen viiva
   suunta (i * askel) 'käännetään suunta seuraavalle sakaralle
NEXT

SUB kaanna (astetta)
   astenyt = (astenyt astetta) MOD 360
   DRAW "ta" STR$(INT(astenyt))
END SUB

SUB piirra (pituus)
   DRAW "u" STR$(pituus)
END SUB

SUB suunta (asteet)
   astenyt = asteet MOD 360
   DRAW "ta" STR$(INT(astenyt))
END SUB

Äänestä

Kommentoi aloitusta


onsku kirjoitti:

Miten piirrän viisisakaraisen tähden.
eli tarvitsen tietää asteet miten käännytää

Neliön tein näin
CALL rt(90)
CALL fd(100)
CALL rt(90)
CALL fd(100)
CALL rt(90)
CALL fd(100)
CALL rt(90)
CALL fd(100)

Mutta tähteä en saa kirveelläkään

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu