package org.ntlab.radishforandroidstudio.java3d;

public class Vector2f {
	public float x;
	public float y;

	// コンストラクタ
	public Vector2f() {
		x = 0.0f;
		y = 0.0f;
	}

	// コンストラクタ
	public Vector2f(float px, float py) {
		x = px;
		y = py;
	}

	public Vector2f(Vector2f v) {
		x = v.x;
		y = v.y;
	}
	
	public Vector2f clone() {
		return new Vector2f(this.x, this.y);
	}
	
	public double dot(Vector2f a) {
		return x*a.x + y*a.y;
	}
	
	public float length() {
		return (float) Math.sqrt(x*x + y*y);
	}
	
	public void scale(float s) {;
		x = x*s;
		y = y*s;
	}
	
	public void normalize() {
		float l = length();
		x = x / l;
		y = y / l;
	}

	/** v1とv2の和を格納する */
	public void add(Vector2f v1, Vector2f v2) {
		this.x = v1.x + v2.x;
		this.y = v1.y + v2.y;
	}
	
	/** v1との和を格納する */
	public void add(Vector2f v1) {
		this.x += v1.x;
		this.y += v1.y;
	}

	/** v1とv2の差を格納する */
	public void sub(Vector2f v1, Vector2f v2) {
		this.x = v1.x - v2.x;
		this.y = v1.y - v2.y;
	}
	
	/** v1との差を格納する */
	public void sub(Vector2f v1) {
		this.x -= v1.x;
		this.y -= v1.y;
	}
	
	/** Vector3dをセットする */
	public void set(Vector2f v) {
		this.x = v.x;
		this.y = v.y;
	}

	/** 符号を反転する */
	public void negate() {
		this.x = -x;
		this.y = -y;
	}

	/** this = d * axis + p */
	public void scaleAdd(float d, Vector2f axis, Vector2f p) {
		this.x = d * axis.x + p.x;
		this.y = d * axis.y + p.y;
	}

	public void setX(float x) {
		this.x = x;
	}
	
	public void setY(float y) {
		this.y = y;
	}

	public float getX() {
		return x;
	}
	
	public float getY() {
		return y;
	}
}
