Kirjautuminen

Haku

Tehtävät

Koodit: VB6: Kuviogeneraattori

Kirjoittaja: sooda

Kirjoitettu: 07.06.2004 – 07.06.2004

Tagit: grafiikka, koodi näytille, vinkki

Hankin joskus kauan sitten laserpointterin ja tein rotaattorin sille että on kaksi moottoria joissa on peilit ja niitten pyörimisnopeutta säätämällä saadaan aikaan vaikkamitä kuvioita. Noh se oli niin hieano että pitihän siitä tehdä vb-versiokin :D Eli tämä toimii silleen että... hmm, helpompi selittää ton koneen toiminta. Toinen moottori pyörittää ite pistettä ympäri niin että syntyy ympyrä, ja toinen moottori pyörittää sitten ite ympyrää niin nopeasti että sitä ite ympyrää ei ehditä piirtää enneku silmä kelaa jonkun ihan ihme kuvion siitä :D en tajua itekään tarkalleen miten se toimii, mutta se vaan toimii ihan kuin tää ohjelmakin. Vaikea selittää, koita tajuta timerin i:stä ja j:stä että miten niitä lisäillään.
Lisää formille timer kello, picturebox b ja neljä scrollbaria voima1, voima2, vauhti ja rotaatio.
Exen (ja muutkin filut jos ei jaksa lisäillä objuja) löytyy: http://sooda.dy.fi/foo/rotaatio/

editti: mainittakoon nyt, että kuva muuttuu parhaiten kun säätää kahden ylimmän scrollbarin suhdetta tai toiseksi alinta scrolleria(rotaatio).

Private kx, ky, i, j, rot
Private Sub Form_Load()

    b.Visible = False 'puskuri piiloon
    b.AutoRedraw = True 'pakollinen :P
    b.ScaleMode = 3 'pixelit
    b.DrawWidth = 2 'selkeämpää
    rad = Atn(1) / 45 'radiaaneiksi-kerroin
    'oletusarvot
    Show
    Form_Resize
    voima1 = voima1.Max / 2
    voima2 = voima2.Max / 4
    rotaatio.Min = -30
    rotaatio.Max = 30
    rotaatio = 9
    vauhti.Min = -30
    vauhti.Max = 30
    vauhti = 20

    kello.Interval = 1 'pyöritys päälle

End Sub

Private Sub Form_Resize()

    'siirretään skrollbaarit
    voima1.Move 0, 0, ScaleWidth, 255
    voima2.Move 0, 255, ScaleWidth, 255
    rotaatio.Move 0, 510, ScaleWidth, 255
    vauhti.Move 0, 765, ScaleWidth, 255

    'skaalataan voimien maksimiarvoja
    voima = b.ScaleWidth
    If b.ScaleHeight < voima Then voima = b.ScaleHeight
    voima1.Max = voima / 2
    voima2.Max = voima / 2

    'temppi-bufferin skaalaus
    b.Move 0, 0, ScaleWidth, ScaleHeight
    kx = b.ScaleWidth / 2
    ky = b.ScaleHeight / 2

End Sub

Private Sub kello_Timer()

    b.Cls 'bufferista vanhat roskat pois
    rot = (rot + vauhti) Mod 360 'pyöritys
    j = rot
    rad = Atn(1) / 45 'radiaaneiksi-kerroin
    'alkukohta
    x = kx + voima1 * Cos(rad * i) + voima2 * Cos(rad * j)
    y = ky + voima1 * Sin(rad * i) + voima2 * Sin(rad * j)
    b.PSet (x, y), 255
    For i = 0 To 360 'piirretään "ympyrä"
        x = kx + voima1 * Cos(rad * i) + voima2 * Cos(rad * j)
        y = ky + voima1 * Sin(rad * i) + voima2 * Sin(rad * j)
        b.Line -(x, y), 255
        j = j - rotaatio 'toista rotaattia eteenpäin
    Next
    DoEvents
    Picture = b.Image 'kuva bufferista formille

End Sub

Kommentit

petrinm [07.06.2004 17:54:16]

#

Aika hieno!

Gaxx [07.06.2004 18:42:08]

#

Siisti!

pipopää [07.06.2004 18:55:44]

#

vähäks upea! =)=p

mamaze [07.06.2004 19:12:16]

#

hieno :D

pitää yrittää soveltaa vähä joka paikkaan tota koodivinkkiä :)

BlueByte [07.06.2004 20:28:15]

#

nätti

hunajavohveli [08.06.2004 00:11:54]

#

Hieno kuvio tulee. Olen kerran saanut aikaan vähän samantapaisen kuvion, joten osaisin ehkä sanoa jotenkin, miten tuo toimii, mutta en kyllä muista tarkalleen, miten sen tein.

Bill Keltanen [08.06.2004 08:05:05]

#

Aiiii mikä kuvio :) vähäks kiva

EDIT: Muistankin sen laserin :P aika samannäkönen

rndprogy [09.06.2004 10:08:03]

#

Kun tarpeeksi säädin jäi johonkin loputtomaan looppiin tai jotain kun ei enää antanut tehdä mitään. Ei edes sulkea ohjelmaa.

comi [09.06.2004 17:09:24]

#

ihan hieno ohjelma on, mut mistä oikein sait idean tehdä tommosen? : )

miiro [09.06.2004 19:12:45]

#

masee ja idean se sai tod. näk. laaserista...

Sami [11.06.2004 19:22:59]

#

Hehhee... tuollainen on tullut tehtyä laskimellakin :)
Tosin se ei pyörinyt, arvot piti muuttaa manuaalisesti koodista ja piirtämiseen kesti muutamia sekunteja... :D

wzw [13.06.2004 18:44:36]

#

Juu, ihan hieno ...

sami kauppinen [16.06.2004 08:20:45]

#

mulla tuli virhe.sellanen et ne koordinaatit menee koko ajan sattuman varaisesti.

fouli [06.04.2007 19:41:37]

#

todella hieno donitsi :D:D:D

fouli [06.04.2007 19:44:30]

#

onneksi kohta on vappu ja saa munkkia...

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta