Мне нужна реализация 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);
}
}
}