Визуализируйте B-сплайн в.NET

Типы описаны в perlguts (см. Perl Internals для соответствующей документации) - и AV для массивов и HV для хэшей.

1
задан Coral Doe 22 October 2012 в 11:08
поделиться

2 ответа

Некоторое время назад я написал очень быструю программу для научного кода, в котором использовались сплайны. В частности, эти сплайны являются NURBS (неоднородными рациональными базисными сплайнами). Это наиболее обобщенная форма сплайна. Все остальные шлицы являются частными случаями этого типа. Узловой вектор используется для создания сплайна, а рекурсивный алгоритм Кокса-де-Бура используется для вычисления значения точки. Код C # очень плохой, я быстро собрал его для решения проблемы и до того, как стал более опытным разработчиком. Если вы погуглите Cox de Boor, вы найдете множество страниц, на которых обсуждаются теоретические основы сплайнов. Остерегайтесь, у большинства из них есть какая-то ошибка (некоторые из них в своем обсуждении вектора узлов)

http://stochfit.svn.sourceforge.net/viewvc/stochfit/trunk/NURBs/

Я не ' Я не могу вспомнить все математические детали, но постараюсь помочь, если знаю ответ. Удачи, это было очень сложно получить с моей стороны!

РЕДАКТИРОВАТЬ - Я считаю, что вы получите B-сплайн из этих методов, если установите вес для данной точки равным 1.

1
ответ дан 3 September 2019 в 01:17
поделиться

B-Spline - это решение проблемы. Может быть, вам стоит описать вашу проблему и спросить, какое решение лучше всего. GDI + содержит DrawBezier и DrawCurve для рисования сплайнов, что может быть хорошей отправной точкой. Примерно так:

Point p1 = new Point(10, 10);
Point p2 = new Point(50, 10);
Point p3 = new Point(10, 50);
Point p4 = new Point(50, 50);
e.Graphics.DrawBezier(Pens.Blue, p1, p2, p3, p4);

p2 и p3 не являются частью кривой, а являются «контрольными точками», переместите их, чтобы увидеть эффект.

1
ответ дан 3 September 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: