| 184 | } |
| 185 | |
| 186 | void Vec2::rotate(const Vec2& point, float angle) |
| 187 | { |
| 188 | float sinAngle = std::sin(angle); |
| 189 | float cosAngle = std::cos(angle); |
| 190 | |
| 191 | if (point.isZero()) |
| 192 | { |
| 193 | float tempX = x * cosAngle - y * sinAngle; |
| 194 | y = y * cosAngle + x * sinAngle; |
| 195 | x = tempX; |
| 196 | } |
| 197 | else |
| 198 | { |
| 199 | float tempX = x - point.x; |
| 200 | float tempY = y - point.y; |
| 201 | |
| 202 | x = tempX * cosAngle - tempY * sinAngle + point.x; |
| 203 | y = tempY * cosAngle + tempX * sinAngle + point.y; |
| 204 | } |
| 205 | } |
| 206 | |
| 207 | void Vec2::subtract(const Vec2& v1, const Vec2& v2, Vec2* dst) |
| 208 | { |