Kirjautuminen

Haku

Tehtävät

Koodit: VB6: Kultainen leikkaus

Kirjoittaja: sooda

Kirjoitettu: 09.05.2004 – 19.04.2013

Tagit: matematiikka, koodi näytille, vinkki

Laskee fiin(tai mikä se on, se kultainen leikkaus -arvo) ja pyörittelee säännöllistä viisikulmiota jonka sisällä on säännöllinen viisisakarainen tähti. Idea tähän tuli vinkistäni https://www.ohjelmointiputka.net/koodivinkit/24326-vb6-lävistäjäleikki Hunajavohvelin kommentista. Tätä vähän soveltamalla saa tuon ite lävistäjälelunkin pyörimään :P

Alla olevassa viestissä linkki ei toimi. Binääri: http://sooda.dy.fi/foo/fii.exe

normaali versio

Private Sub Form_Click()

    End 'lopetus helpompaa

End Sub

Private Sub Form_Load()

    pi = 4 * Atn(1) 'radiaaneiksi laskemista varten lasketaan pii
    AutoRedraw = True 'aina päälle tämä!
    ScaleMode = 3 'pixelit
    Show 'esiin
    Dim kx(4), ky(4) 'kulmacoordit
    Do 'pyöritetään
        DoEvents 'ettei tilttaa
        Cls 'vanha kuva pois
        koko = ScaleWidth 'halkaisija
        If ScaleHeight < koko Then koko = ScaleHeight 'halkaisija sopivaksi
        koko = koko / 2 'säteeksi
        a = (a + 1) Mod 360 'pyöritysjuttu
        k = a 'aloituskohta kehällä vaihtelee a:n mukaan
        For i = 0 To 4 'lasketaan kulmat
            kx(i) = koko * Cos(k * pi / 180)
            ky(i) = koko * Sin(k * pi / 180)
            k = k + 360 / 5
        Next
        'pituudet
        yks = Sqr((kx(0) - kx(1)) ^ 2 + (ky(0) - ky(1)) ^ 2)
        kaks = Sqr((kx(0) - kx(2)) ^ 2 + (ky(0) - ky(2)) ^ 2)
        Caption = "Fii on suunnilleen " & kaks / yks
        'ja piirretään ite homma
        For i = 0 To 4
            For j = i + 1 To 4
                Line (ScaleWidth / 2 + kx(i), ScaleHeight / 2 + ky(i))-(ScaleWidth / 2 + kx(j), ScaleHeight / 2 + ky(j))
            Next
        Next
    Loop

End Sub

Private Sub Form_Unload(Cancel As Integer)

    End 'muuten ei loppuisi koskaan kun nytkin lopetus lagaa rajusti :D

End Sub

saatanallisempi versio

saatanallisempi versio Juhis^ta ja Blazea varten :DD
lisätty 10.05.2004 11:21
tämän binääri: http://sooda.dy.fi/foo/stn_fii.exe

Private Sub Form_Click()

   End 'lopetus helpompaa

End Sub

Private Sub Form_Load()

   pi = 4 * Atn(1) 'radiaaneiksi laskemista varten lasketaan pii
   AutoRedraw = True 'aina päälle tämä!
   ScaleMode = 3 'pixelit
   Show 'esiin
   Dim kx(4), ky(4) 'kulmacoordit
   ForeColor = 255
   BackColor = 0
   DrawWidth = 5
   WindowState = 2
   Do 'pyöritetään
       DoEvents 'ettei tilttaa
       Cls 'vanha kuva pois
       koko = ScaleWidth 'halkaisija
       If ScaleHeight < koko Then koko = ScaleHeight 'halkaisija sopivaksi
       koko = koko / 2 'säteeksi
       a = (a + 1) Mod 360 'pyöritysjuttu
       k = a 'aloituskohta kehällä vaihtelee a:n mukaan
       For i = 0 To 4 'lasketaan kulmat
           kx(i) = koko * Cos(k * pi / 180)
           ky(i) = koko * Sin(k * pi / 180)
           k = k + 360 / 5
       Next
       'pituudet
       yks = Sqr((kx(0) - kx(1)) ^ 2 + (ky(0) - ky(1)) ^ 2)
       kaks = Sqr((kx(0) - kx(2)) ^ 2 + (ky(0) - ky(2)) ^ 2)
       Caption = "Fii on suunnilleen " & kaks / yks
       'ja piirretään ite homma
       For i = 0 To 4
           For j = i + 2 To 4 + (i = 0)
               Line (ScaleWidth / 2 + kx(i), ScaleHeight / 2 + ky(i))-(ScaleWidth / 2 + kx(j), ScaleHeight / 2 + ky(j))
           Next
       Next
       Circle (ScaleWidth / 2, ScaleHeight / 2), koko
   Loop

End Sub

Private Sub Form_Unload(Cancel As Integer)

   End 'muuten ei loppuisi koskaan kun nytkin lopetus lagaa rajusti :D

End Sub

Kommentit

hunajavohveli [09.05.2004 17:45:34]

#

Hienosti pyörii tuo kulmio. Ja fiikin pysyy samana, vaikka pisteiden paikat vaihtelevat.

tuomas [09.05.2004 17:47:43]

#

Löytyisikö binääriä?

sooda [09.05.2004 18:38:17]

#

Ainiinjjoo nyt löytyy: http://koti.mbnet.fi/koodaaja/jotaki/fii.exe

Juhis [09.05.2004 19:59:24]

#

Kaskas, me saatananpalvojat löysimme uuden lelun ;)

Gwaur [09.05.2004 21:57:28]

#

Fii (engl. phi) on siis Fibonaccin kehittämä luku, joka lasketaan jakamalla Fibonaccin sarjan luku sitä edeltävällä samaan sarjaan kuuluvalla luvulla. Fibonaccin lukusarja alkaa luvuilla 0, 1, 1, 2, 3, 5, 8 jne. ja uusi luku lasketaan edellinen plus sitäedellinen.

Gwaur [09.05.2004 21:57:57]

#

...ihan vaan jos joku ei ymmärrä mikä fii on :)

Blaze [09.05.2004 22:32:23]

#

> Kaskas, me saatananpalvojat löysimme uuden lelun ;)
Indeed \m/
Pitänee tehä oma versio, jossa on musta tausta ja punanen viiskulmio...
:P

sooda [10.05.2004 10:07:25]

#

Juhis^ kirjoitti:

Kaskas, me saatananpalvojat löysimme uuden lelun ;)

Tässä on vaan viisikulmio eikä ympyrää. Voin mä tehdä oikean saatanalelunkin :D

hunajavohveli [10.05.2004 22:08:45]

#

Eikä noiden lukujen välttämättä tartte olla edes fibonaccin sarjaa. Voidaan tempaista mitkä tahansa kaksia lukua ja lähteä laskemaan niistä eteenpäin samalla periaatteella kuin fibonaccin jonoa. Mitä pidemmälle laskee, sitä tarkemmaksi fii tulee. Ja jos joku ei vielä Gwaurinkaan kommentin jälkeen tajunnut laskukaavaa, niin tämä selittänee aika hyvin:

1 + 1 = 2
    1 + 2 = 3
        2 + 3 = 5
            3 + 5 = 8
                5 + 8 = 13
                    8 + 13 = 21
                        13 + 21 = 34
                          jne...

Gwaur [11.05.2004 14:34:57]

#

Pidin ala-asteella Fibonaccista esitelmän kun jostain historian henkilöstä piti esitelmä tehdä. :P

hunajavohveli [12.05.2004 21:11:20]

#

Eikös se Fibonacci selittänyt tuota samaa jotenkin jänisten määrän lisääntymisellä, vai muistanko ihan väärin? Numeropiru-nimisessä kirjassa on lisää tästä jutusta ja monista muistakin matikan ihmeistä. Kannattaa lukea. Tuossa fiissähän oli vielä sekin, että kun vähennät fiistä puoli ja kerrot sen sitten kahdella ja sitten vielä korotat toiseen potenssiin, saat tasan viisi. Eli selvä yhteys siinä on. Jotkuthan väittää, että mustat aukot pyörii jotenkin tuon fiin mukaan ja kaikkea muutakin... on se kumma luku. :)

sooda [13.05.2004 08:11:24]

#

Jäniksillä juuri. Ne lisääntyy juuri jotenkin samalla tavalla kuin toi hunajavohvelin ja gwaurin aiempi kaava, eli lasketaan kahden peräkkäisen luvun suhde. Tämä esiintyy myös melkein kaikkialla luonnossa, esim. auringonkukan keskustan siementen järjestäytymismuodossa(?)!!! Hulluuks! Niin ja tarkan arvon tolle saa laskettua (1 + Sqr(5)) / 2, eli melkein hunajavohvelin selitys. Tää on tosi maaginen! Kuulemma antiikin kreikassa kaikki rakennettiin siten että niihin sisältyi suorakulmioita joiden sivun pituuksien suhde on fii.

InvalidCo [13.05.2004 08:25:58]

#

Hei toi kuvio ekassa versiossa hidastuu kun vie hiiren pois ikkunan luota ja nopeutuu kun vie yläpalkkiin

moptim [06.08.2006 19:26:02]

#

Hyvän näkönenhän toi... Ala-astelainen ei vain ymmärrä trigonometriasta yhtään mitään :D

moptim [27.08.2006 19:26:12]

#

muute laskisko tää fibonaccia?

Function LaskeFibonacciMikäLieOlisikaanTälleHyväNimi(Monesko As Integer)As Long
Dim vl As Long, sitäedeltävä As Long
  LaskeFibonacciMikäLieOlisikaanTälleHyväNimi = 1 'alkuarvo
  If Monesko < 3 Then Exit Function
  vl = 1: sitäedeltävä = 1
  For i = 3 To Monesko
    LaskeFibonacciMikäLieOlisikaanTälleHyväNimi = vl + sitäedeltävä
    sitäedeltävä = vl
    vl = LaskeFibonacciMikäLieOlisikaanTälleHyväNimi
  Next i
End Function

moptim [28.08.2006 17:41:15]

#

ai niin ja miten ton tähden saa täytettyä? varmaan POINTAPI tyyppi ja API-kutsu Polygon ovat käytössä. ajattelin tehdä cccp-lelun itselleni.

moptim [29.08.2006 08:57:01]

#

hauskempi muute jos muuttaa piin kaavan 3 * Atn(1) tai muuten sählää sitä
esim. 5 * Atn(1) antaa nuolen.

moptim [22.04.2009 17:24:34]

#

Munpa oli pakko pilata niiden ilo, jotka haluis ite säätää niin että voi vaikuttaa kulmien määrään 8)

Testatkaa jos satutte kattomaan, ite en oo testannu enkä oo aikoihin vb:tä koodiskellu mut pitäis olla oikein. VB:tä ei oo nyt käytettävissä (ainakaan tällä koneella) joten ei myöskään pysty testaamaan. Jos ei toimi niin yksinkertaisilla muutoksilla pystyy halukkaat tekevän toimivan tosta alkuperäisestä :)

Dim kulmat As Integer

Private Sub Form_Click()

    ' End 'lopetus helpompaa
    ' eihän tarvi sulkea tuosta? kun tälle ois hyvää käyttöä muussakin :P
    kulmat = Int(InputBox("Jaa montako kulmaa pitäis olla?"))
    If kulmat < 3 Then MsgBox "Onks noita kulmia nyt liian vähän että saatais monikulmio?", vbYesNo: Form_Click

End Sub

Private Sub Form_Load()

    pi = 4 * Atn(1) 'radiaaneiksi laskemista varten lasketaan pii
    AutoRedraw = True 'aina päälle tämä!
    ScaleMode = 3 'pixelit
    Show 'esiin
    Dim kx(kulmat), ky(kulmat) 'kulmacoordit
    Do 'pyöritetään
        DoEvents 'ettei tilttaa
        Cls 'vanha kuva pois
        koko = ScaleWidth 'halkaisija
        If ScaleHeight < koko Then koko = ScaleHeight 'halkaisija sopivaksi
        koko = koko / 2 'säteeksi
        a = (a + 1) Mod 360 'pyöritysjuttu
        k = a 'aloituskohta kehällä vaihtelee a:n mukaan
        For i = 0 To kulmat 'lasketaan kulmat
            kx(i) = koko * Cos(k * pi / 180)
            ky(i) = koko * Sin(k * pi / 180)
            k = k + 360 / kulmat
        Next
        'pituudet
        yks = Sqr((kx(0) - kx(1)) ^ 2 + (ky(0) - ky(1)) ^ 2)
        kaks = Sqr((kx(0) - kx(2)) ^ 2 + (ky(0) - ky(2)) ^ 2)
        Caption = "Fii on suunnilleen " & kaks / yks
        'ja piirretään ite homma
        For i = 0 To 4
            For j = i + 1 To 4
                Line (ScaleWidth / 2 + kx(i), ScaleHeight / 2 + ky(i))-(ScaleWidth / 2 + kx(j), ScaleHeight / 2 + ky(j))
            Next
        Next
    Loop

End Sub

Private Sub Form_Unload(Cancel As Integer)

    End 'muuten ei loppuisi koskaan kun nytkin lopetus lagaa rajusti :D

End Sub

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta