Случайная кривая, сделанная только точками
Мне нужно создать случайную кривую, как это:
На этом рисунке 3 примера, отмеченные следующим образом:
- Красный овал - начало кривой и
- Синий овал показывает конец.
- Между ними находятся точки, помеченные зелеными овалами.
Я могу использовать только точку, потому что после создания одного из них мне нужно создать еще одну маленькую кривую для каждой точки в предыдущей кривой. Я попытался с помощью функции sin или cos, но это сработало, если точка x или y одинакова как для начальной, так и для конечной точки.
Кто-нибудь знает, как это возможно с Graphics2D и Point?
1 ответ
Решение
Вы должны использовать кривые Безье.
Если у вас есть значение y для каждого значения x на кривой, вы можете взглянуть на реализацию Apache Commons. Здесь вы получите PolynomialSplineFunction, которую вы можете использовать для вычисления любой точки на вашей кривой.
SplineInterpolator interpolator = new SplineInterpolator();
PolynomialSplineFunction f
= interpolator.interpolate(xValues, yValues); //red and blue dots
f.value(4.0); //gets y-value for x = 4.0