package speiger.src.coreengine.math.vector.floats;

import java.nio.FloatBuffer;

import speiger.src.coreengine.math.vector.Vec;
import speiger.src.coreengine.math.vector.bytes.Vecb;
import speiger.src.coreengine.math.vector.doubles.Vecd;
import speiger.src.coreengine.math.vector.ints.Veci;
import speiger.src.coreengine.math.vector.longs.Vecl;
import speiger.src.coreengine.math.vector.shorts.Vecs;

public interface Vecf extends Vec {
	public Vecf set(float value);
	public Vecf add(float value);
	public Vecf sub(float value);
	public Vecf multiply(float value);
	public Vecf devide(float value);
	public Vecf clamp(float min, float max);
	public Vecf clamp(float min, float max, int filter);
	public float lengthSquared();
	public default float length() { return (float)Math.sqrt(lengthSquared()); }
	public Vecf store(FloatBuffer buffer);
	public Vecf load(FloatBuffer buffer);
	public float[] asArray();
	public Vecb asByte();
	public Vecs asShort();
	public Veci asInt();
	public Vecl asLong();
	public Vecd asDouble();
}
