2009-06-22 3 views
1

.NET에서 B- 스플라인 (http://en.wikipedia.org/wiki/B-spline)을 시각화해야 할 수도 있습니다. 나는 시작할 곳이 없다. 어떤 쉬운 방법이나 도서관 그것을 할 수 있습니까? 나는 Silverlight에서 그것을하는 것을 선호 할 것이지만 WPF와 Win Forms 또한 괜찮습니다. 소프트웨어를 추가, 삭제 또는 이동하여 스플라인을 다시 칠할 수있는 몇 가지 제어점이있는 좌표계로 상상해보십시오. 수학적 배경이 부족하다는 점에 유의하십시오. GDI +에서 스플라인 그리기를위한 것으로 보이는 몇 가지 메소드가 있지만 B- 스플라인인지 확실하지 않습니다..NET에서 B- 스플라인 시각화

모든 조언을 주시면 감사하겠습니다. 도서관, 코드, 가이드 링크 또는 일반적인 제안을 환영합니다.

답변

1

저는 스플라인을 활용 한 과학적 코드에 대해 아주 빠른 프로그램을 작성했습니다. 특히 이러한 스플라인은 NURBS (비 균일 합리성 기본 스플라인)입니다. 이것은 가장 일반적인 형태의 스플라인입니다. 다른 모든 스플라인은이 유형의 특별한 경우입니다. 매듭 벡터는 스플라인을 생성하는 데 사용되며 재귀 Cox de Boor 알고리즘은 점의 값을 계산하는 데 사용됩니다. C# 코드는 매우 열악합니다. 문제를 해결하기 위해 빠르게 던져 버렸고, 더 세련된 개발자였습니다. 당신이 구글 콕스 드 부어 (Cox de Boor)라면 스플라인의 이론적 토대에 대해 논의하는 많은 페이지를 찾을 수 있습니다. 그들의 대부분은 내가 수학적 모든 세부 사항을 기억하지 않습니다

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

일부 오류의 종류 (매듭 벡터의 자신의 토론 그들 중 일부)가, 조심,하지만 난 알고 있다면 도움을 위해 노력할 것입니다 대답. 행운을 빌어 요, 이것은 내 입장에서 얻는 매우 어려운 지식이었습니다!

편집 - 난 당신이 내가 제어점을 이동하는 곡선에 미치는 영향을 visualy 보여 시각화를 만드는 데 필요한입니다 1.

+0

이 태그는 정말 도움이 될 것 같습니다. 나는 내일 세부 사항에서 그것을 점검 할 것이다. – Stilgar

1

B 스플라인은 문제에 대한 해결책입니다. 문제를 설명하고 가장 좋은 해결책이 무엇인지 물어보십시오. 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는, 곡선의 일부지만 '컨트롤 포인트'하지 않은 것은 효과를보기 위해 이동합니다.

+0

에 주어진 지점에 대한 가중치를 설정하면 이러한 방법에서 B 스플라인을 얻을 생각합니다. 데모 용입니다. 위키피디아 읽기 B- 스플라인은 매듭이라는 것을 사용합니다. 제어점과 달리 매듭 점은 곡선에 속하지 않습니다. Graphics 메서드는 매듭이라 불리는 인자 나 아무것도 가지고 있지 않지만 긴장이라는 무언가를 가지고 있으므로 아마도 매듭이 어떤 식 으로든 긴장을 결정합니다. 다음 그림과 같은 대화 형 버전을 만들어야합니다. http://77.77.167.148/Education/manev/CompGeom/Upr/Upr5_files/hull.gif – Stilgar

+0

숙제 인 경우 태그를 붙이십시오. –

+0

그것은 숙제 이상입니다. 죄송합니다. – Stilgar