2012-09-21 7 views
2

데이터 포인트가 x, y, z 형식입니다. 그들은 닫힌 매니 폴드의 점 구름을 형성합니다. R-Project 또는 Python을 사용하여 어떻게 그들을 보간 할 수 있습니까? (다항식 스플라인과 유사)3D 좌표 보간법

+1

닫힌 매니 폴드는 토폴로지 상 구체와 동일합니다. 구멍이나 가장자리가 없습니까? 일반적인 접근법은 표면을 삼각 측량하는 것입니다. 먼저 삼각형을 만듭니다 ... 이것을 위해 3D 시각화 패키지를 보셨습니까? – Spacedman

+0

다양한 방법이 있습니다. x, y, z 형식을 사용하면 어떤 의미인지 알 수 없습니다. 함수 f (x, y) = z를 설명하고 동일한 수의 x와 y를 가진 것이 좋으면 akima 패키지를 사용해보십시오. http://cran.r-project.org/web/packages /akima/index.html –

답변

1

"콤팩트 매니 폴드"란 궤도 또는 3d에 포함 된 서페이스와 같은 낮은 차원의 기능을 의미합니까? "파라 메트릭"또는 "비 파라 메트릭"방법에 따라 R의 표면 문제에 대한 여러 가지 대안이 있습니다. 다양한 종류의 회귀 스플라인은 평균 f (x, y)를 추정하는 틀 내에서 적용될 수 있으며 이러한 값이 "단단히"이격 된 경우 상대적으로 정확하고 간단한 요약 추정을 얻을 수 있습니다. 패키지 'locfit', 'akima'및 'mgcv'와 같은 여러 가지 매개 변수가없는 메소드가 있습니다. (3 차원 공간에서 통계적으로 1 차원 다양체를 추정하는 방법에 대해 어떻게 확신 할 수 있을지 모르겠다.)

편집 :하지만 3D 분포를보고 아이디어가 무엇인지 알고 싶다면 파라 메 트릭 곡선 또는 궤적을 사용하면 패키지 : rgl에 도달하고 회전 가능한 3D 프레임에 플롯 할 수 있습니다.

대신에 (보간법 단어가 잘못된 선택 인) 볼록 선체를 만들려고한다면 2 차원 솔루션이 있으며 3 차원 솔루션도 찾을 수 있다고 생각합니다. 올바른 검색 전략을 수립하는 것은 지금까지 2 개의 의견이 반영되지 않은 세부 사항에 달려 있습니다.나는 경계를 만들기 위해 회귀 노력을 사용하고 싶다면 (x, y)의 함수로서 1 백 99 번째 백분위 수와 같은 더 낮은 및 더 높은 차수의 통계를 모델링하려고 시도 할 수 있다고 추측하고있다. Roger Koenker의 'rq'는 잘 지원되는 quantile regression 패키지입니다.

4

원래 어떤 점을 나타내 었는지에 따라 다릅니다. 포인트 배열을 가지고있는 것은 일반적으로 원래 매니 폴드를 파생시키기에 충분하지 않습니다. 어느 지점이 함께 있는지 알아야합니다.

가장 일반적인 저수준 경계 표현 ("brep")은 삼각형 집합입니다. 예 : OpenGL과 Directx가 입력으로 얻는 것. 나는 STL 형식의 삼각형 메쉬를 예를 들어로 변환 할 수있는 파이썬 software을 작성했습니다. PDF 이미지. 어쩌면 당신은 당신의 목적에 맞게 적응할 수 있습니다. 삼각형을 보간하는 것은 일반적으로 필요하지 않지만 오히려 할일이 있습니다. 원래의 두 점 사이의 중간에 세 개의 새로운 점을 만듭니다. 이 세 점은 내부 삼각형을 형성하고 나머지 표면은 삼각형을 형성합니다. 그래서 이것으로 하나의 삼각형을 네 개의 삼각형으로 변형 시켰습니다.

포인트가 스플라인 서페이스 패치 (예 : NURBS 또는 Bézier surfaces)의 조절 점인 경우 어떤 점이 함께 패치를 형성해야 하는지를 알아야합니다. 이들이 파라 메트릭 서페이스이기 때문에 일단 컨트롤 포인트를 알게되면 서페이스상의 모든 점을 결정할 수 있습니다. 아래는 베 지어 표면의 함수입니다. 매개 변수 u 및 v는 표면의 파라 메트릭 좌표입니다. 패치의 두 인접 에지를 따라 0에서 1까지 실행됩니다. 제어점은 k_ij입니다.

formula of Bézier patch

상기 B 함수는 각각의 제어 포인트에 대한 가중치 함수이다;

weight functions

는 10 × 10 점의 격자에 의해 베 지어 표면에 근접한다고 가정. 이를 수행하려면 u 및 v가 0에서 1까지 10 단계로 실행되는 함수 p을 평가해야합니다 (단계 생성은 numpy.linspace으로 쉽게 수행됩니다).

각 (u, v) 쌍에 대해 p은 3D 점을 반환합니다.

이러한 점을 시각화하려면 matplotlib에서 mplot3d을 사용할 수 있습니다.