Advertisement
Firex

AutoIt FVec Simple UDF

Dec 18th, 2014
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 1.95 KB | None | 0 0
  1. Func _FVec_Addition( $vector1, $vector2 )
  2.     Local $vector[3]
  3.  
  4.     $vector[0] = $vector1[0] + $vector2[0]
  5.     $vector[1] = $vector1[1] + $vector2[1]
  6.     $vector[2] = $vector1[2] + $vector2[2]
  7.     Return $vector
  8. EndFunc
  9.  
  10. Func _FVec_Subtract( $vector1, $vector2 )
  11.     Local $vector[3]
  12.  
  13.     $vector[0] = $vector1[0] - $vector2[0]
  14.     $vector[1] = $vector1[1] - $vector2[1]
  15.     $vector[2] = $vector1[2] - $vector2[2]
  16.     Return $vector
  17. EndFunc
  18.  
  19. Func _FVec_Multiply( $vector1, $vector2 )
  20.     Local $vector[3]
  21.  
  22.     $vector[0] = $vector1[0] * $vector2[0]
  23.     $vector[1] = $vector1[1] * $vector2[1]
  24.     $vector[2] = $vector1[2] * $vector2[2]
  25.     Return $vector
  26. EndFunc
  27.  
  28. Func _FVec_Divide( $vector1, $vector2 )
  29.     Local $vector[3]
  30.  
  31.     $vector[0] = $vector1[0] / $vector2[0]
  32.     $vector[1] = $vector1[1] / $vector2[1]
  33.     $vector[2] = $vector1[2] / $vector2[2]
  34.     Return $vector
  35. EndFunc
  36.  
  37. Func _FVec_Distance( $vector1, $vector2 )
  38.     Local $v = _FVec_Subtract($vector1, $vector2)
  39.  
  40.     Return _FVec_Length($v)
  41. EndFunc
  42.  
  43. Func _FVec_CrossProduct( $vector1, $vector2 )
  44.     If (UBound($vector1) = 2) Then
  45.         Return ($vector1[0] * $vector2[1]) - ($vector1[1] * $vector2[0])
  46.     ElseIf (UBound($vector1) = 3) Then
  47.         Local $v[3]
  48.  
  49.         $v[0] = ($vector1[1] * $vector2[2]) - ($vector1[2] * $vector2[1])
  50.         $v[1] = ($vector1[2] * $vector2[0]) - ($vector1[0] * $vector2[2])
  51.         $v[2] = ($vector1[0] * $vector2[1]) - ($vector1[1] * $vector2[0])
  52.  
  53.         Return $v
  54.     EndIf
  55. EndFunc
  56.  
  57. Func _FVec_DotProduct( $vector1, $vector2 )
  58.     Local $v
  59.  
  60.     $v = $vector1[0]*$vector2[0]
  61.     $v += $vector1[1]*$vector2[1]
  62.     $v += $vector1[2]*$vector2[2]
  63.  
  64.     Return $v
  65. EndFunc
  66.  
  67. Func _FVec_Normalize( $vector1 )
  68.     If $vector1[0] = 0 And $vector1[1] = 0 Then _
  69.         Return 0
  70.  
  71.     Local $v[2]
  72.     Local $length = _FVec_Length( $vector1 )
  73.     $v[0] = $vector1[0] / $length
  74.     $v[1] = $vector1[1] / $length
  75.  
  76.     Return $v
  77. EndFunc
  78.  
  79. Func _FVec_Length( $vector1 )
  80.     Local $v, $i
  81.  
  82.     For $i = 0 To UBound($vector1) - 1
  83.         $v += $vector1[$i] ^ 2
  84.     Next
  85.  
  86.     Return Sqrt($v)
  87. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement