1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# -*- coding: utf-8 -*-
from math import cos
from math import sin
from math import sqrt
class CVector(object):
EPSILON = 0.000001
def __init__(self, aX = 0, aY = 0):
self.x = aX
self.y = aY
# Initialize the vector, giving (x,y) cartesian coordinates.
def setXY(self, aX, aY):
self.x = aX
self.y = aY
# Sets the x value of the vector.
def setX(self, aX):
self.x = aX
# Sets the y value of the vector.
def setY(self, aY):
self.y = aY
# Gets the x value of the vector
def getX(self):
return self.x
# Gets the y value of the vector
def getY(self):
return self.y
def setVec(self, aVec):
self.x = aVec.x;
self.y = aVec.y;
# Initialize the vector, giving polar coordinates (angle and magnitude).
def setPolar(self, aAngle, aMag):
# Calculate cartesian coordinates.
self.x = aMag * cos(aAngle)
self.y = aMag * sin(aAngle)
# Add the vector aVec to itself.
def add(self, aVec):
self.x += aVec.x
self.y += aVec.y
def addXY(self, aX, aY):
self.x += aX
self.y += aY
# Substract the vector aVec from itself.
def sub(self, aVec):
self.x -= aVec.x
self.y -= aVec.y
def subXY(self, aX, aY):
self.x -= aX
self.y -= aY
# Multiplies the vector by a scalar.
def mul(self, aScale):
self.x *= aScale
self.y *= aScale
# Returns the magnitude of the vector.
def magnitude(self):
return sqrt(self.x * self.x + self.y * self.y)
def magnitudeSquared(self):
return (self.x * self.x + self.y * self.y)
# Normalizes the vector. The vector will have a magnitude of 1.
def normalize(self):
m = self.magnitude();
# Check division by zero.
if (m > self.EPSILON):
self.x /= m;
self.y /= m;
# Truncates the vector assuring that the magnitude not exceed the limit.
def truncate(self, aLength):
if (self.magnitude() > aLength):
self.normalize()
self.mul(aLength)
#def heading(self):
# """Return the direction of the Vector in radians."""
# return direction(self.x, self.y)
#def direction(self):
# """Return the direction component of a vector (in radians), given
# cartesian coordinates.
# """
# if x > 0:
# if y >= 0:
# return atan(y / x)
# else:
# return atan(y / x) + TwoPI
# elif x == 0:
# if y > 0:
# return HalfPI
# elif y == 0:
# return 0
# else:
# return OneAndHalfPI
# else:
# return atan(y / x) + PI
def destroy(self):
pass
# public function dot( aVector:CVector ): Number
# {
# return x * aVector.x + y * aVector.y;
# }
#
# public function dotXY( aX:Number, aY:Number ):Number
# {
# return x * aX + y * aY;
# }
|