Случайная кривая, сделанная только точками

Мне нужно создать случайную кривую, как это:

Случайная кривая

На этом рисунке 3 примера, отмеченные следующим образом:

  1. Красный овал - начало кривой и
  2. Синий овал показывает конец.
  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
Другие вопросы по тегам