Imports System
Public Class Main
Shared oX As Single = 30 'origin x'
Shared oY As Single = 40 'origin y'
Shared dX As Single = 100 'destination x'
Shared dY As Single = 100 'destination y'
Shared cX As Single 'current x'
Shared cY As Single 'current y'
Shared CurTimeMs As Integer = 0
Shared TargetTimeMs As Integer = 10000 'the longer the target time, the more time it will take'
Shared Steps As Integer = 10 'The more steps there are the smoother the movement will be'
Public Shared Sub Main()
cX = oX
cY = oY
System.Console.WriteLine("x " + cX.ToString() + ", y " + cY.ToString())
While CurTimeMs < TargetTimeMs 'while we havent reached TT yet...'
'it might be worth sleeping the thread here for TT/steps ms,'
'or using a timer instead of the loop'
CurTimeMs += TargetTimeMs / Steps 'add TT/steps to CT'
cX = UpdateLocation(oX, dX, CurTimeMs / TargetTimeMs) 'update x'
cY = UpdateLocation(oY, dY, CurTimeMs / TargetTimeMs) 'update y'
System.Console.WriteLine("x " + cX.ToString() + ", y " + cY.ToString())
End While
End Sub
Public Shared Function UpdateLocation(ByVal Origin As Single, ByVal Destination As Single, ByVal Time As Single) As Single
Return (Origin + (Destination - Origin) * Time)
End Function
End Class
SW1wb3J0cyBTeXN0ZW0KClB1YmxpYyBDbGFzcyBNYWluCgogICAgU2hhcmVkIG9YIEFzIFNpbmdsZSA9IDMwIAkJCQknb3JpZ2luIHgnCiAgICBTaGFyZWQgb1kgQXMgU2luZ2xlID0gNDAgCQkJCSdvcmlnaW4geScKCiAgICBTaGFyZWQgZFggQXMgU2luZ2xlID0gMTAwIAkJCQknZGVzdGluYXRpb24geCcKICAgIFNoYXJlZCBkWSBBcyBTaW5nbGUgPSAxMDAgCQkJCSdkZXN0aW5hdGlvbiB5JwoKICAgIFNoYXJlZCBjWCBBcyBTaW5nbGUgCQkJCQknY3VycmVudCB4JwogICAgU2hhcmVkIGNZIEFzIFNpbmdsZSAJCQkJCSdjdXJyZW50IHknCgogICAgU2hhcmVkIEN1clRpbWVNcyBBcyBJbnRlZ2VyID0gMAogICAgU2hhcmVkIFRhcmdldFRpbWVNcyBBcyBJbnRlZ2VyID0gMTAwMDAgCSd0aGUgbG9uZ2VyIHRoZSB0YXJnZXQgdGltZSwgdGhlIG1vcmUgdGltZSBpdCB3aWxsIHRha2UnCgogICAgU2hhcmVkIFN0ZXBzIEFzIEludGVnZXIgPSAxMCAJCQknVGhlIG1vcmUgc3RlcHMgdGhlcmUgYXJlIHRoZSBzbW9vdGhlciB0aGUgbW92ZW1lbnQgd2lsbCBiZScKCiAgICBQdWJsaWMgU2hhcmVkIFN1YiBNYWluKCkKICAgICAgICBjWCA9IG9YCiAgICAgICAgY1kgPSBvWQogICAgICAgIFN5c3RlbS5Db25zb2xlLldyaXRlTGluZSgieCAiICsgY1guVG9TdHJpbmcoKSArICIsIHkgIiArIGNZLlRvU3RyaW5nKCkpCiAgICAgICAgV2hpbGUgQ3VyVGltZU1zIDwgVGFyZ2V0VGltZU1zCQkJCQkJCSd3aGlsZSB3ZSBoYXZlbnQgcmVhY2hlZCBUVCB5ZXQuLi4nCiAgICAgICAgCSdpdCBtaWdodCBiZSB3b3J0aCBzbGVlcGluZyB0aGUgdGhyZWFkIGhlcmUgZm9yIFRUL3N0ZXBzIG1zLCcKICAgICAgICAJJ29yIHVzaW5nIGEgdGltZXIgaW5zdGVhZCBvZiB0aGUgbG9vcCcKICAgICAgICAgICAgQ3VyVGltZU1zICs9IFRhcmdldFRpbWVNcyAvIFN0ZXBzIAkJCQkJCSdhZGQgVFQvc3RlcHMgdG8gQ1QnCiAgICAgICAgICAgIGNYID0gVXBkYXRlTG9jYXRpb24ob1gsIGRYLCBDdXJUaW1lTXMgLyBUYXJnZXRUaW1lTXMpCSd1cGRhdGUgeCcKICAgICAgICAgICAgY1kgPSBVcGRhdGVMb2NhdGlvbihvWSwgZFksIEN1clRpbWVNcyAvIFRhcmdldFRpbWVNcykJJ3VwZGF0ZSB5JwogICAgICAgICAgICBTeXN0ZW0uQ29uc29sZS5Xcml0ZUxpbmUoInggIiArIGNYLlRvU3RyaW5nKCkgKyAiLCB5ICIgKyBjWS5Ub1N0cmluZygpKQogICAgICAgIEVuZCBXaGlsZQogICAgRW5kIFN1YgoKICAgIFB1YmxpYyBTaGFyZWQgRnVuY3Rpb24gVXBkYXRlTG9jYXRpb24oQnlWYWwgT3JpZ2luIEFzIFNpbmdsZSwgQnlWYWwgRGVzdGluYXRpb24gQXMgU2luZ2xlLCBCeVZhbCBUaW1lIEFzIFNpbmdsZSkgQXMgU2luZ2xlCiAgICAgICAgUmV0dXJuIChPcmlnaW4gKyAoRGVzdGluYXRpb24gLSBPcmlnaW4pICogVGltZSkKICAgIEVuZCBGdW5jdGlvbgpFbmQgQ2xhc3M=
x 30, y 40
x 37, y 46
x 44, y 52
x 51, y 58
x 58, y 64
x 65, y 70
x 72, y 76
x 79, y 82
x 86, y 88
x 93, y 94
x 100, y 100