package org.geogebra.common.kernel.Matrix;
import org.geogebra.common.kernel.Kernel;
/**
* class for 3 double (x, y, z)
*
* @author mathieu
*
*/
public class CoordsDouble3 extends Coords3 {
public double x, y, z;
/**
* constructor
*/
public CoordsDouble3() {
}
/**
* constructor
*
* @param x
* x coord
* @param y
* y coord
* @param z
* z coord
*/
public CoordsDouble3(double x, double y, double z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
final public boolean isDefined() {
return !Double.isNaN(x) && !Double.isNaN(y) && !Double.isNaN(z);
}
@Override
final public CoordsDouble3 copyVector() {
return new CoordsDouble3(x, y, z);
}
@Override
final public void addInside(Coords3 v) {
x += v.getXd();
y += v.getYd();
z += v.getZd();
}
@Override
final public void mulInside(float v) {
x *= v;
y *= v;
z *= v;
}
@Override
final public void mulInside(double v) {
x *= v;
y *= v;
z *= v;
}
@Override
public void normalizeIfPossible() {
double l = Math.sqrt(x * x + y * y + z * z);
if (!Kernel.isZero(l)) {
mulInside(1 / l);
}
}
@Override
final public void set(float x, float y, float z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
final public void set(double x, double y, double z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
final public double getXd() {
return x;
}
@Override
final public double getYd() {
return y;
}
@Override
final public double getZd() {
return z;
}
@Override
final public float getXf() {
return (float) x;
}
@Override
final public float getYf() {
return (float) y;
}
@Override
final public float getZf() {
return (float) z;
}
@Override
public String toString() {
StringBuilder ret = new StringBuilder();
ret.append(x);
ret.append(',');
ret.append(y);
ret.append(',');
ret.append(z);
return ret.toString();
}
@Override
public void mulInside(double a, double b, double c){
x *= a;
y *= b;
z *= c;
}
}