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

import speiger.src.coreengine.math.vector.Vec;
import speiger.src.coreengine.math.vector.doubles.Vecd;
import speiger.src.coreengine.math.vector.floats.Vecf;
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 Vecb extends Vec {
	public Vecb set(byte value);
	public Vecb add(byte value);
	public Vecb sub(byte value);
	public Vecb multiply(byte value);
	public Vecb devide(byte value);
	public Vecb clamp(byte min, byte max);
	public Vecb clamp(byte min, byte max, int filter);
	public long lengthSquared();
	public default double length() { return Math.sqrt(lengthSquared()); }
	public byte[] asArray();
	public Vecs asShort();
	public Veci asInt();
	public Vecl asLong();
	public Vecf asFloat();
	public Vecd asDouble();
}
