package de.gaalop.tba;
import java.util.Arrays;
import java.util.Vector;
/**
* Represents a multivector, e.g. a vector of blades
* @author Christian Steinmetz
*/
public class Multivector {
private Vector<BladeRef> blades;
public Multivector() {
blades = new Vector<BladeRef>();
}
/**
* Adds a BladeRef object to this multivector
* @param blade The bladeref object to be added
*/
public void addBlade(BladeRef blade) {
blades.add(blade);
}
/**
* Returns the values of all blades in this multivector
* @return The values of all blades
*/
public byte[] getValueArr(Algebra algebra) {
int size = algebra.getBladeCount();
byte[] result = new byte[size];
Arrays.fill(result, (byte) 0);
for (BladeRef cur : blades) {
result[cur.getIndex()] += cur.getPrefactor();
}
return result;
}
@Override
public String toString() {
return blades.toString();
}
public Vector<BladeRef> getBlades() {
return blades;
}
public String print() {
StringBuilder sb = new StringBuilder();
for (BladeRef ref: blades) {
switch (ref.getPrefactor()) {
case -1:
sb.append("-E"+ref.getIndex());
break;
case 0:
break;
case 1:
sb.append("+E"+ref.getIndex());
break;
default:
System.err.println("Only -1,0,1 allowed as prefactors in multivectors");
break;
}
}
if (sb.length()==0) return "";
if (sb.charAt(0) == '+')
return sb.substring(1);
else
return sb.toString();
}
}