Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Kellon viisarit

Sivun loppuun

kenkku [14.06.2004 15:59:58]

#

Saisinkos pientä esimerkkiä kellon viisareiden piirtämisestä? Luulisin, että funktio sin liittyy tähän jotenkin, mutta en ole ikinä sen toimintaa ymmärtänyt. Jos joku voisi siitäkin vähän kertoa :P

Edit: Ja VB:llehän tämä oli..

hunajavohveli [14.06.2004 16:25:56]

#

Sin-funktio on trigonometriaa, joka opetetaan peruskoulussa vasta 9. luokalla. (minä tosin käytin siniä hyväkseni jo paljon sitä ennen) Ohjelmoinnissa sinistä hyötyy eniten siinä, että sillä saadaan piirrettyä ympyrän. Ensin sinulla pitää olla tiedossa keskipiste, josta viisari lähtee:

x = 200
y = 100    'muista pistää AutoRedraw Trueksi ja Twipit Pixeleiksi ScaleModesta

Seuraavaksi pitäisi saada tietää viisarin toinen pää, joka lasketaan näin:

x2 = x + Sin(kulma) * ViisarinPituus
y2 = y - Cos(kulma) * ViisarinPituus

Tuo kulma, joka annetaan ei ole asteina, vaan radiaaneina. Lisäämällä tuota kulmaa, saat kuitenkin viisarin kääntymään. Jos haluat käyttää asteita, muuta tuo näin:

rad = Atn(1) * 4 / 180
x2 = x + Sin(kulma * rad) * ViisarinPituus
y2 = y - Cos(kulma * rad) * ViisarinPituus

Nyt voit käyttää kulmassa asteita. Voit laskea oikean kulman tuntiviisarille kertomalla tuntien määrän 30:llä. Tämä tarkoittaa siis, että jos haluat siirtää viisarin vaikkapa kello viiden kohtaan, muutat kulmaksi 150.
Ja viivan osaat varmaan Line-käskyllä vetää:

Line (x, y)-(x2, y2),0

Sitten teet vain saman toiselle viisarille.

kenkku [14.06.2004 17:08:58]

#

Siinäpä perusteellinen selitys! Kiitokset hunajavohveli :)

sooda [14.06.2004 17:21:39]

#

Paha hunajavohveli! Ehdit tehä ennen mua :D

Puhveli [14.06.2004 21:32:05]

#

https://www.ohjelmointiputka.net/koodivinkit/24255-qb-tikittävä-kello-kertoo-myös-viikonpäivän
edit: painiskelin ite joskus tollasen onkelman kanssa ja siitähän sitten syntyi tollanen ohjelma :D

JoreSoft [15.06.2004 18:03:08]

#

Mulla oli kerran saman tyyppinen ongelma kuin kenkulla, mutta mulla oli taustakuvana lehdestä scannattu kellon taulu, ja yritin vielä kopioida viisarinkin...
Yritin sitä viisaria sitten piirtää eri kulmiin, mutta viisarin kääntäminen bittitasolla on hidasta (vaikeaa).
Onko kellään hyvää ideaa kuinka esim . viisarin saisi aina oikein päin ko kellon ajan mukaan?? (Hunajavuhveli???)
Yksi tapa olisi tietysti muokata käsin jokainen aste, mutta silloin tulisi liikaa kuva-kontrolleja..

Blaze [15.06.2004 18:35:41]

#

JoreSoft kirjoitti:

Yritin sitä viisaria sitten piirtää eri kulmiin, mutta viisarin kääntäminen bittitasolla on hidasta (vaikeaa).
Onko kellään hyvää ideaa kuinka esim . viisarin saisi aina oikein päin ko kellon ajan mukaan??

Olisiko tästä koodivinkistä apua: https://www.ohjelmointiputka.net/koodivinkit/23794-vb6-kuvan-pyörittäminen-3 ?

Antti Laaksonen [15.06.2004 18:38:02]

#

JoreSoft kirjoitti:

Onko kellään hyvää ideaa kuinka esim . viisarin saisi aina oikein päin ko kellon ajan mukaan??

Pystyisitkö piirtämään viisarin sopivan muotoisen nelikulmion avulla? WinAPIssa on funktio Polygon, jolla tuollaisen kuvion voi helposti piirtää täytettynäkin. Valmiin kuvan pyörittäminen on hidasta, ja jälki ei välttämättä ole hyvää.

hunajavohveli [15.06.2004 20:07:28]

#

JoreSoft kirjoitti:

Onko kellään hyvää ideaa kuinka esim . viisarin saisi aina oikein päin ko kellon ajan mukaan?? (Hunajavuhveli???)

Pikseleistä muodostuvaa kuvaa en kyllä osaa käännellä, mutta Line-käskyllä olen aina vetänyt viisarit. Tietysti, jos niistä haluaa hienompia, ja enemmän viivoja, niin kyllä minä tuon saman Sinillä ja Cosinilla hoitaisin. Tuota Polygon-API-funktiota en tunne, mutta se ajanee saman asian.

JoreSoft [16.06.2004 15:20:50]

#

Kiitti! Yritän pärjätä tällä


Sivun alkuun

Vastaus

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

Tietoa sivustosta