/* GeoGebra - Dynamic Mathematics for Everyone http://www.geogebra.org This file is part of GeoGebra. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. */ /* * GeoVec3D.java * * Created on 31. August 2001, 11:22 */ package org.geogebra.common.geogebra3D.kernel3D.geos; import org.geogebra.common.kernel.Construction; import org.geogebra.common.kernel.Matrix.Coords; import org.geogebra.common.kernel.arithmetic3D.Vector3DValue; import org.geogebra.common.kernel.geos.SpreadsheetTraceable; import org.geogebra.common.kernel.geos.Traceable; import org.geogebra.common.kernel.kernelND.GeoPointND; /** * * @author Markus + ggb3D */ public abstract class GeoVec4D extends GeoElement3D implements GeoCoords4D, Vector3DValue, Traceable, SpreadsheetTraceable { public Coords v; public GeoVec4D(Construction c) { super(c); v = new Coords(4); setConstructionDefaults(); // init visual settings } /** Creates new GeoVec4D with coordinates (x,y,z,w) and label */ public GeoVec4D(Construction c, double x, double y, double z, double w) { this(c); setCoords(x, y, z, w); } @Override public void setCoords(double x, double y, double z, double w) { setCoords(new double[] { x, y, z, w }); } public void setCoords(double x, double y, double w) { setCoords(x, y, 0, w); } public double getX() { return getCoords().get(1); } public double getY() { return getCoords().get(2); } public double getZ() { return getCoords().get(3); } public double getW() { return getCoords().get(4); } /** * returns all class-specific xml tags for saveXML Geogebra File Format */ @Override protected void getXMLtags(StringBuilder sb) { super.getXMLtags(sb); sb.append("\t<coords"); sb.append(" x=\"" + getX() + "\""); sb.append(" y=\"" + getY() + "\""); sb.append(" z=\"" + getZ() + "\""); sb.append(" w=\"" + getW() + "\""); sb.append("/>\n"); } /** * Sets the coord style * * @param mode * new coord style */ public void setMode(int mode) { toStringMode = mode; } /** * get the coord style * * @return coord style */ public int getMode() { return toStringMode; } @Override public final boolean hasCoords() { return true; } public void setCoords(Coords vals) { setDefinition(null); v.set(vals); } public void setCoords(double[] vals) { setDefinition(null); v.set(vals); } public void setCoords(GeoVec4D vec) { setCoords(vec.v); } /** * set coords to point's coords (in 3D) * * @param p * point */ final public void setCoords(GeoPointND p) { setCoords(p.getCoordsInD3()); } final public Coords getCoords() { return v; } public void translate(Coords v0) { v.addInside(v0); setCoords(v); } }