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

import java.nio.DoubleBuffer;

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