Exemplo n.º 1
0
  protected static FloatVector crossProductAll(FloatVector... multiplicands) {
    int dimension = multiplicands.length + 1;

    if (dimension == 3) return multiplicands[0].crossProduct3D(multiplicands[1]);

    FloatVector nullVector = new FloatVector(dimension);
    FloatVector result = nullVector;

    FloatMatrix matrix = new FloatMatrix(true, multiplicands);
    float determinat;

    for (int row = 0; row < dimension; row++) {
      determinat = matrix.strikeRow(row).determinant();
      if ((row & 1) == 1) determinat = -determinat;

      result = result.add(nullVector.setComponent(row, 1f).scalarMultiply(determinat));
    }

    return result;
  }