Java,nurbs,实现,3D

时间:2019-05-02 08:16:43

标签: java 3d renderer nurbs

我需要为我的项目实施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);

    }

}

}

0 个答案:

没有答案