samer@0
|
1 /*
|
samer@0
|
2 * Copyright (c) 2000, Samer Abdallah, King's College London.
|
samer@0
|
3 * All rights reserved.
|
samer@0
|
4 *
|
samer@0
|
5 * This software is provided AS iS and WITHOUT ANY WARRANTY;
|
samer@0
|
6 * without even the implied warranty of MERCHANTABILITY or
|
samer@0
|
7 * FITNESS FOR A PARTICULAR PURPOSE.
|
samer@0
|
8 */
|
samer@0
|
9
|
samer@0
|
10 package samer.tools;
|
samer@0
|
11
|
samer@0
|
12 public class vec2 implements java.io.Serializable {
|
samer@0
|
13 public double x, y;
|
samer@0
|
14
|
samer@0
|
15 public double norm() { return x*x+y*y; }
|
samer@0
|
16 public vec2 neg() { return new vec2(-x,-y); }
|
samer@0
|
17 public void add( vec2 a) { x+=a.x; y+=a.y; }
|
samer@0
|
18 public void sub( vec2 a) { x-=a.x; y-=a.y; }
|
samer@0
|
19 public void mul( double k) { x*=k; y*=k; }
|
samer@0
|
20 public void div( double k) { x/=k; y/=k; }
|
samer@0
|
21 public void assign( vec2 a) { x=a.x; y=a.y; }
|
samer@0
|
22 public void assign( double i, double j) { x=i; y=j; }
|
samer@0
|
23 public void normalise() { div( Math.sqrt(norm())); }
|
samer@0
|
24
|
samer@0
|
25 public static vec2 add( vec2 a, vec2 b) { return new vec2(a.x+b.x,a.y+b.y); }
|
samer@0
|
26 public static vec2 sub( vec2 a, vec2 b) { return new vec2(a.x-b.x,a.y-b.y); }
|
samer@0
|
27 public static vec2 div( vec2 a, double k) { return new vec2(a.x/k,a.y/k); }
|
samer@0
|
28 public static vec2 mul( vec2 a, double k) { return new vec2(a.x*k,a.y*k); }
|
samer@0
|
29 public static vec2 mul( double k, vec2 a) { return new vec2(a.x*k,a.y*k); }
|
samer@0
|
30 public static double dot( vec2 a, vec2 b) { return a.x*b.x + a.y*b.y; }
|
samer@0
|
31
|
samer@0
|
32 public vec2() {}
|
samer@0
|
33 public vec2( vec2 a) { x=a.x; y=a.y; }
|
samer@0
|
34 public vec2( double i, double j) { x=i; y=j; }
|
samer@0
|
35 }
|