Java, NURBS, реализация, 3D - PullRequest
0 голосов
/ 02 мая 2019

Мне нужна реализация Nurbs для моего проекта.Бесплатный GPL, насколько это возможно.И если его не существует, я бы попробовал справочник по лучшему кодированию книг

.Формула Nurbs в Википедии, но мне нужно больше деталей, я думаю

     @Override
public Point3D calculerPoint3D(double t) {
    Point3D S = Point3D.O0;
    double s = 0;
    int m = knots.size();
    int n = pointsAndWeights.size();
    for (int i = 0; i < m - n - 1; i++) {
        S = S.plus(pointsAndWeights.get(i).getKey().mult(b(i, n, t) * pointsAndWeights.get(i).getValue()));
    }
    for (int i = 0; i < m - n - 1; i++) {
        s += b(i, n, t) * pointsAndWeights.get(i).getValue();
    }
    if (s != 0) {
        S = S.mult(1 / s);
    }
    return S;
}


protected double fOOO(double a, double b) {
    if (Double.isNaN(a) || Double.isNaN(b) || Double.isInfinite(b)) {
        return 1;
    } else {
        return a / b;
    }
}

protected double b(int i, int n, double t) {
    if (n == 0) {
        return (t < knots.get(0) ? knots.get(0) : (t <= knots.get(knots.size() - 1)) ? 1 :
                knots.get(knots.size() - 1));
    } else {
        return fOOO(t - knots.get(i), knots.get(i + n) - knots.get(i))
                * b(i, n - 1, t)
                + fOOO(knots.get(i + n) - t, knots.get(i + n) - knots.get(i))
                * b(i + 1, n - 1, t);

    }

}

}
...