📄 vector2d.java
字号:
package sim.app.keepaway;import java.io.Serializable;import sim.util.Double2D;public /*strictfp*/ class Vector2D implements Serializable { public double x; public double y; public Vector2D( double x, double y ) { this.x = x; this.y = y; } public Vector2D( final Double2D d ) { this.x = d.x; this.y = d.y; } public final Vector2D add( final Vector2D b ) { return new Vector2D( x + b.x, y + b.y ); } public final Vector2D add( final Double2D b ) { return new Vector2D( x + b.x, y + b.y ); } public final Vector2D subtract( final Vector2D b ) { return new Vector2D( x - b.x, y - b.y ); } public final Vector2D subtract( final Double2D b ) { return new Vector2D( x - b.x, y - b.y ); } public final Vector2D amplify( double alpha ) { return new Vector2D( x * alpha, y * alpha ); } public final Vector2D normalize() { if( x != 0 || y != 0 ) { double temp = /*Strict*/Math.sqrt( x*x+y*y ); return new Vector2D( x/temp, y/temp ); } else return new Vector2D( 0, 0 ); } public final double length() { return /*Strict*/Math.sqrt( x*x+y*y ); } public final double angle() { double a = /*Strict*/Math.atan(y/x); if(x < 0) a += /*Strict*/Math.PI; return a; } public final Vector2D setLength( double dist ) { if( dist == 0 ) return new Vector2D( 0, 0 ); if( x == 0 && y == 0 ) return new Vector2D( 0, 0 ); double temp = /*Strict*/Math.sqrt( x*x+y*y ); return new Vector2D( x * dist / temp, y * dist / temp ); } public final double getDistTo( Vector2D a ) { double dx = x-a.x; double dy = y-a.y; return /*Strict*/Math.sqrt( dx*dx + dy*dy ); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -