package jscl.math.operator.product;
import jscl.math.Generic;
import jscl.math.JsclVector;
import jscl.math.Variable;
import jscl.math.operator.Operator;
import jscl.math.operator.VectorOperator;
import jscl.mathml.MathML;
import javax.annotation.Nonnull;
public class VectorProduct extends VectorOperator {
public static final String NAME = "vector";
public VectorProduct(Generic vector1, Generic vector2) {
super(NAME, new Generic[]{vector1, vector2});
}
private VectorProduct(Generic parameter[]) {
super(NAME, parameter);
}
@Override
public int getMinParameters() {
return 2;
}
public Generic selfExpand() {
if (parameters[0] instanceof JsclVector && parameters[1] instanceof JsclVector) {
JsclVector v1 = (JsclVector) parameters[0];
JsclVector v2 = (JsclVector) parameters[1];
return v1.vectorProduct(v2);
}
return expressionValue();
}
protected void bodyToMathML(MathML element) {
parameters[0].toMathML(element, null);
MathML e1 = element.element("mo");
e1.appendChild(element.text("\u2227"));
element.appendChild(e1);
parameters[1].toMathML(element, null);
}
@Nonnull
public Variable newInstance() {
return new VectorProduct(null, null);
}
@Nonnull
@Override
public Operator newInstance(@Nonnull Generic[] parameters) {
return new VectorProduct(parameters);
}
}