You surely heard of Pythagoras in school. I like this guy because he invented one of the formulas you can really use sometimes in live. For game programming this is all common basics, however. I pre-made this function for you so you don't have to dig in your math books:
Public Function Distance( X1 as Long, Y1 as Long, X2 as Long, Y2 as Long ) as Long 'Return delta (distance) Distance = Sqr( CDbl( X2 - X1 ) ^ 2 + CDbl( Y2 - Y1 ) ^ 2 ) End Function
I'ts nothing more than Pythagoras, really.
Now the second function is a little harder and longer. The function takes 2 points and returns the angle between them (in rad). You really don't have to understand this, it's a general maths function you can copy and use.
Public Function GetAngle( X1 as Single, Y1 as Single, X2 as Single, Y2 as Single ) as Single Dim TempX as Single Dim TempY as Single Dim Angle as Single 'Get difference TempX = ( X2 - X1 ) TempY = ( Y2 - Y1 ) 'Special case X If TempX = 0 Then If Y2 > Y1 Then Angle = Pi * 0.5 ElseIf Y2 < Y1 Then Angle = Pi * 1.5 End If 'Return angle GetAngle = Angle Exit Function End If 'Special case Y If TempY = 0 Then If X2 > X1 Then Angle = 0 ElseIf X2 < X1 Then Angle = Pi End If 'Return angle GetAngle = Angle Exit Function End If 'Get angle Angle = Atn( Abs( TempY ) / Abs( TempX ) ) 'Calculate angle If TempX < 0 And TempY > 0 Then: Angle = Pi - Angle If TempX < 0 And TempY < 0 Then: Angle = Pi + Angle If TempX > 0 And TempY < 0 Then: Angle = Pi2 - Angle 'Put in range If Angle < 0 Then: Angle = Angle + Pi2 'Return angle GetAngle = Angle End Function
Put both functions into a new Module named mMath. But to make it work you also need the Pi declarations in this Module:
'Consts Public Const Pi as Single = 3.141593 Public Const Pi2 as Single = 6.283185
So that's it for the moment, let's start extending the camera!