samer@0: /* samer@0: * Copyright (c) 2000, Samer Abdallah, King's College London. samer@0: * All rights reserved. samer@0: * samer@0: * This software is provided AS iS and WITHOUT ANY WARRANTY; samer@0: * without even the implied warranty of MERCHANTABILITY or samer@0: * FITNESS FOR A PARTICULAR PURPOSE. samer@0: */ samer@0: samer@0: package samer.tools; samer@0: samer@0: public class vec2 implements java.io.Serializable { samer@0: public double x, y; samer@0: samer@0: public double norm() { return x*x+y*y; } samer@0: public vec2 neg() { return new vec2(-x,-y); } samer@0: public void add( vec2 a) { x+=a.x; y+=a.y; } samer@0: public void sub( vec2 a) { x-=a.x; y-=a.y; } samer@0: public void mul( double k) { x*=k; y*=k; } samer@0: public void div( double k) { x/=k; y/=k; } samer@0: public void assign( vec2 a) { x=a.x; y=a.y; } samer@0: public void assign( double i, double j) { x=i; y=j; } samer@0: public void normalise() { div( Math.sqrt(norm())); } samer@0: samer@0: public static vec2 add( vec2 a, vec2 b) { return new vec2(a.x+b.x,a.y+b.y); } samer@0: public static vec2 sub( vec2 a, vec2 b) { return new vec2(a.x-b.x,a.y-b.y); } samer@0: public static vec2 div( vec2 a, double k) { return new vec2(a.x/k,a.y/k); } samer@0: public static vec2 mul( vec2 a, double k) { return new vec2(a.x*k,a.y*k); } samer@0: public static vec2 mul( double k, vec2 a) { return new vec2(a.x*k,a.y*k); } samer@0: public static double dot( vec2 a, vec2 b) { return a.x*b.x + a.y*b.y; } samer@0: samer@0: public vec2() {} samer@0: public vec2( vec2 a) { x=a.x; y=a.y; } samer@0: public vec2( double i, double j) { x=i; y=j; } samer@0: }