Способы определения кривой

Я пытаюсь придать формам округлость/кривизну в моем физическом движке.

Я знаю различные методы математического определения кривых; такие как кривые Безье, эллипсы и т. д. Однако я не уверен, какие методы будут наиболее подходящими для использования в моем физическом движке, потому что необходимо учитывать скорость, осуществимость построения и гибкость каждого метода. Мне нужна система, в которой пользователь может легко формировать довольно сложные кривые, но при этом делать расчеты пересечений простыми и быстрыми.

Мой физический движок также полностью непрерывен, что означает, что я должен уметь вычислять время, в течение которого кривые будут сталкиваться с другими кривыми и линиями, на основе постоянной линейной/угловой скорости.

  • Какие существуют методы математического определения 2D-кривой?

  • Каковы преимущества/недостатки каждого из них с точки зрения скорости, гибкости и простоты построения?

  • Подходит ли этот метод для движка, где решающее значение имеет предсказуемость пересечения фигур?


person Griffin    schedule 02.12.2011    source источник


Ответы (1)


Как указано в вашем теге, вы описываете кривые Безье. Это математически хорошо определено, поэтому вы сможете использовать его для обнаружения столкновений, хотя в зависимости от того, что вы делаете, это может немного усложнить написание и решение уравнений. Я мало что знаю об этом, но мне кажется, что стандартным подходом к сплайнам является NURBS, и в Википедии, похоже, есть статья на эту тему. Статья NURBS, вероятно, охватывает все это, но быстрый и грязный способ нарисовать гладкую кривую между набором точек — использовать кубические сплайны путем интерполяции кубического многочлена между каждыми двумя точками таким образом, чтобы первые производные совпадали на краях. Таким образом, вы получите кривую, которая проходит через все ваши точки и выглядит гладкой везде, без острых углов в начальных точках.

person vlsd    schedule 06.12.2011