Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Hiiri liikkumaan ympyrää

Sivun loppuun

JussiR [17.01.2007 00:18:39]

#

Jos minulla on kohdat x1,y1 niin miten saisin että ohjelma laskisi 360 uutta x,y kohtaa nykyisestä alkaen ympyrän malliin, että jos laittaisin hiiren liikkumaan uusiin kohtiin se tekisi ympyrän, joka alkaisi x1,y1:stä?
Toivottavasti joku ymmärtää mitä meinaan. Sen ympyrän minkä se tekee halkaisija saisi olla jotain 80 pikseliä. Sen ei tarvitse olla täydellinen ympyrä.
Kiitos.

Nesci [17.01.2007 02:48:11]

#

Tuli mieleen etta helpoiten varmaan onnistuu polar graphing:ia kayttaen (ei mitaan hajua mita tuo voisi olla suomeksi jos joku sen tietaa niin kertokoon ihmeessa). Kaavat x = r * cos(kulma) ja y = r * sin(kulma). Nuo kulmat pitaa olla radiaaneissa jos vb:lla teet. Tassa koodiesimerkki vb:lle:

Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

Private Type POINTAPI
    x As Long
    y As Long
End Type

'tama on jostain joskus kopioitu yksinkertainen hiirenliikutus
Sub MoveMouse(x, y)
    Dim pt As POINTAPI
    pt.x = x
    pt.y = y
    ClientToScreen hwnd, pt
    SetCursorPos pt.x, pt.y
End Sub

Private Sub Form_Load()
    r = 100 'sade
    Dim i As Double
    xentinen = 150 'entiset x coordinaatit
    yentinen = 150 'entiset y coordinaatit

    For i = 1 To 360 'asteina
        ajastin = Timer 'hidastellaan
        Do While ajastin + 0.01 > Timer
            DoEvents
        Loop
        v = i * 3.14 / 180 'muutetaan asteet radiaaneiksi, 3.14 = koyhan miehen pii
        x = r * Cos(v) 'lasketaan x:n coorinaatit
        y = r * Sin(v) 'lasketaan y:n coorinaatit
        x = x + xentinen
        y = y + yentinen
        MoveMouse x, y
    Next
End Sub

Edit: Ja pyydan jo etukateen anteeksi skandeja, ei satu olemaan nappiksessa niita ja on niin pirun hidasta kirjoittaa niita tuolla "ctrl shift a/o" hakkyralla jonka niita varten tein...

tkarkkainen [17.01.2007 09:22:59]

#

Nesci kirjoitti:

Tuli mieleen etta helpoiten varmaan onnistuu polar graphing:ia kayttaen (ei mitaan hajua mita tuo voisi olla suomeksi jos joku sen tietaa niin kertokoon ihmeessa).

Polar coordinate on napakoordinaatti, joten kaipa tuo tarkoittaa napakäyrän kuvaajaa tai sen piirtoa.

Nesci [17.01.2007 17:28:16]

#

Kuullostaa melko loogiselta. En ollut kuullut tuollaista sanaa kuin "napakoordinaatit" niin en lahetenyt sita suomentamaan sitten. Kiitos tasta, taas ollaan viisaampia.

JussiR [17.01.2007 20:27:54]

#

Kiitos!
Tälläsen tein siitä

Private Sub DoCircle()
  Randomize Timer
    r = (Int(Rnd * 200) + 10) 'sade
        Randomize
    r2 = (Int(Rnd * 200) + 10) 'sade
    pii = 9
    aika = 0.004
    Dim i As Double
    xentinen = GetX
    yentinen = GetY

    For i = 1 To (Int(Rnd * 110) + 20) 'asteina
        ajastin = Timer 'hidastellaan
        Do While ajastin + aika > Timer
            DoEvents
Randomize
aika = (Int(Rnd * 0.8) + 0.004)
        Loop
        v = i * pii / 180
        X = r * Cos(v) 'lasketaan x:n coorinaatit
        Y = r2 * Sin(v) 'lasketaan y:n coorinaatit
        X = X + xentinen - r
        Y = Y + yentinen
        moveMouse X, Y
    Next
End Sub

Nesci [18.01.2007 02:07:20]

#

No toi ei kylla ihan vastaa sita sun kysymaas ympyran piirtoa, mutta kiva jos tuo esimerkkini auttoi. Esim tuo ei laske valttamatta 360 uutta pistetta, eika ne valttamatta ole ympyran muodossa.

JussiR [18.01.2007 20:29:12]

#

Nesci kirjoitti:

No toi ei kylla ihan vastaa sita sun kysymaas ympyran piirtoa, mutta kiva jos tuo esimerkkini auttoi. Esim tuo ei laske valttamatta 360 uutta pistetta, eika ne valttamatta ole ympyran muodossa.

Mutta tuollaisen halusin. =)

JussiR [20.01.2007 12:30:21]

#

Mitenkäs saisin sen tekemään tuon ympyrän sitten vastapäivään? :)

neau33 [20.01.2007 14:02:09]

#

Moikka JussiR!

Pistä se laskuri pyörimään toisin päin...

For i = (Int(Rnd * 110) + 20) To 1 STEP - 1

JussiR [02.02.2007 23:20:37]

#

Kiitos. Nyt tiedän miten saan hiiren liikkumaan hienoissa kurveissa, mutta miten saisin että ne kurvit loppuisin johonkin x,y kohtaa niinkuin tässä esimerkissä? http://cruels.net/downloads/MoveMouseCC.exe

JussiR [07.02.2007 16:09:36]

#

Kukaan ei jaksa miettiä niin vaikeita laskuja vai?


Sivun alkuun

Vastaus

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

Tietoa sivustosta