If you think the Android project DiceInDark listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
/* Dice in the dark. D & D app for the blind and seeing impaired,
* Copyright (C) <2013r> <Lovisa Irpa Helgadottir>
*/*www.java2s.com*/
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/package com.example.framework.math;
import android.util.FloatMath;
publicclass Vector2 {
publicstaticfloat TO_RADIANS = (1 / 180.0f) * (float) Math.PI;
publicstaticfloat TO_DEGREES = (1 / (float) Math.PI) * 180;
publicfloat x, y;
public Vector2() {
}
public Vector2(float x, float y) {
this.x = x;
this.y = y;
}
public Vector2(Vector2 other) {
this.x = other.x;
this.y = other.y;
}
public Vector2 cpy() {
returnnew Vector2(x, y);
}
public Vector2 set(float x, float y) {
this.x = x;
this.y = y;
returnthis;
}
public Vector2 set(Vector2 other) {
this.x = other.x;
this.y = other.y;
returnthis;
}
public Vector2 add(float x, float y) {
this.x += x;
this.y += y;
returnthis;
}
public Vector2 add(Vector2 other) {
this.x += other.x;
this.y += other.y;
returnthis;
}
public Vector2 sub(float x, float y) {
this.x -= x;
this.y -= y;
returnthis;
}
public Vector2 sub(Vector2 other) {
this.x -= other.x;
this.y -= other.y;
returnthis;
}
public Vector2 mul(float scalar) {
this.x *= scalar;
this.y *= scalar;
returnthis;
}
publicfloat len() {
return FloatMath.sqrt(x * x + y * y);
}
public Vector2 nor() {
float len = len();
if (len != 0) {
this.x /= len;
this.y /= len;
}
returnthis;
}
publicfloat angle() {
float angle = (float) Math.atan2(y, x) * TO_DEGREES;
if (angle < 0)
angle += 360;
return angle;
}
public Vector2 rotate(float angle) {
float rad = angle * TO_RADIANS;
float cos = FloatMath.cos(rad);
float sin = FloatMath.sin(rad);
float newX = this.x * cos - this.y * sin;
float newY = this.x * sin + this.y * cos;
this.x = newX;
this.y = newY;
returnthis;
}
publicfloat dist(Vector2 other) {
float distX = this.x - other.x;
float distY = this.y - other.y;
return FloatMath.sqrt(distX * distX + distY * distY);
}
publicfloat dist(float x, float y) {
float distX = this.x - x;
float distY = this.y - y;
return FloatMath.sqrt(distX * distX + distY * distY);
}
publicfloat distSquared(Vector2 other) {
float distX = this.x - other.x;
float distY = this.y - other.y;
return distX*distX + distY*distY;
}
publicfloat distSquared(float x, float y) {
float distX = this.x - x;
float distY = this.y - y;
return distX*distX + distY*distY;
}
}