Hallo,
ich würde gerne die Maus um eine Position kreisen lassen.
Mit Mouse Move kann ich ja die Maus positionieren.
sagen wir Mittelpunkt des kreises soll 600, 600 sein.
Radius 200
Wie würdet ihr sowas machen ?
Hallo,
ich würde gerne die Maus um eine Position kreisen lassen.
Mit Mouse Move kann ich ja die Maus positionieren.
sagen wir Mittelpunkt des kreises soll 600, 600 sein.
Radius 200
Wie würdet ihr sowas machen ?
Eine Möglichkeit:
[autoit]
HotKeySet ("{Esc}", "_Exit")
$kx = @DesktopWidth / 2
$ky = @DesktopHeight / 2
$r = 200
$i = 0
$deg = ACos(-1) / 180
MouseMove($kx + Cos($i * $deg) * $r, $ky + Sin($i * $deg) * $r, 10)
Do
MouseMove($kx + Cos($i * $deg) * $r, $ky + Sin($i * $deg) * $r)
$i += 2
$i = Mod($i, 360)
Until Not Sleep(10)
Func _Exit()
Exit
EndFunc
Gruß,
UEZ
HI
dies ist die Kreisgleichung:
Mittelpunkt = (mx I my)
Radius = r
(x - mx)² + (y - my)² = r²
Dann nimmste einfach die eine Sekante und verschiebst die immer ein Pixel nach oben und löst nach x bzw y auf und schwupp haste Punkte die aufm Kreis liegen, das ganze verpackste in ner Schleife und machst MouseMove immer zum nächsten Punkt aufm Kreis.
mfg Redclaw
edit: Zu spät aber das von UEZ is auch leichter
Hatten wir hier schonmal und da wollte ich meine Lösung von damals auch nochmal anbringen (prinzipiell nicht groß anders als bei UEZ):
_MouseCircle(200, 1)
[/autoit] [autoit][/autoit] [autoit]Func _MouseCircle($Radius, $Speed = 10)
Local Const $M = MouseGetPos(), $Pi = ACos(-1)
Local $Phi, $X, $Y
MouseMove($M[0] + $Radius, $M[1], 0)
[/autoit] [autoit][/autoit] [autoit]For $Phi = 0 To 2 * $Pi Step 0.04
$X = $M[0] + $Radius * Cos($Phi)
$Y = $M[1] + $Radius * Sin($Phi)
MouseMove($X, $Y, $Speed)
Next
EndFunc
@Redclaw
Mach mal bitte.
Das hast du schon gerade in dem anderen Thread angebracht.
Würde mich interessieren wie das dann am Ende aussieht.
HI
Is net schön aber es geht ja auch nur darum dass man sieht wie man die Punkte des Kreises herausbekommt, das Prog hab ich eben schnell mal zusammen geschrieben, ist also net gerade ordentlich
[autoit]
#include <GDIPlus.au3>
Dim $mx = @DesktopWidth / 2, $my = @DesktopHeight / 2, $r = 50
Dim $i = $my - $r, $count = 0
Dim $x[(2 * $r + 1) * 100]
Dim $y[(2 * $r + 1) * 100]
Dim $p = $mx * 2
Do
$a = ($r * $r) - (($i - $my) * ($i - $my))
$q = ($mx * $mx) - $a
$x[$count] = Round(-($p / 2) + Sqrt((($p / 2) * ($p / 2)) - $q))
$y[$count] = $i
$count = $count + 1
$i = $i + 0.01
Until $i > $my + $r
[/autoit][autoit][/autoit][autoit][/autoit][autoit]_GDIPlus_Startup()
[/autoit][autoit][/autoit][autoit]$hnd = GUICreate("", @DesktopWidth, @DesktopHeight)
GUISetState(@SW_SHOW)
$ghnd = _GDIPlus_GraphicsCreateFromHWND($hnd)
[/autoit][autoit][/autoit][autoit]For $i = 0 To UBound($x) - 1
_GDIPlus_GraphicsDrawRect($ghnd, Abs($x[$i]), $y[$i], 1, 1)
Next
For $i = 0 To UBound($x) - 1
_GDIPlus_GraphicsDrawRect($ghnd,abs($x[$i])+2*(Abs($x[$i]+$mx)), $y[$i], 1, 1)
Next
While 1
Sleep(1)
WEnd
Mir is klar dass man das alles viel schöner und sauberer machen kann aber ich glaub es ging eig auch nur um die Mathematik dahinter oder ?
mfg Redclaw
PS: dann lass die Maus mal kreiseln bis ihr schlecht wird Anton
edit: mir fällt gerade ein jetzt hab ichs ja doch umständlich gemacht zumindest den 2ten Teil so jetzt is besser.