2012-05-21 4 views
3

반지에 '구부릴'필요가있는 직사각형이 있습니다. 즉, 직사각형의 위쪽 가장자리는 반지의 바깥 쪽 원, 아래쪽 안쪽 원으로 매핑되어야합니다. 사각형의 측면이 결합되어야합니다. 것이 도움이 또는 필요한 경우 나 수평 라인의 수집 및 원의 컬렉션으로 반지로 사각형을 처리 할 수 ​​ enter image description here직사각형을 반지로 변환

:

다음은 직사각형 링의 매우 원유 스케치입니다.

사각형에는 그라디언트가 원형 방향으로 진행되도록 매핑해야하는 a에서 b까지의 수평 그라디언트가 있습니다.

이것은 비선형 변환이지만이 문제를 해결하기위한 기법을 배우려는 곳을 놓친 것입니다. CG에서 적합한 경험을 가진 사람은 올바른 텍스트, 알고리즘의 올바른 이름 또는 올바른 그래픽 라이브러리와 같은 것을 가리켜 줄 수 있습니까?

+0

당신은 그것이 비선형 변환이라고 말합니다. 알아야 할 것은 원하는대로 번호를 볼 수 있다는 것입니다. 직사각형 내부의 한 점의 좌표 일 수 있습니다. 또는 쉽게 극좌표 형태의 점 좌표로 볼 수 있습니다. 숫자는 바로 그 숫자입니다. 오직 마음 만이 일련의 숫자에 의미를 부여합니다. –

답변

5

polar coordinates을 사용해보세요. x를 r과 y로 x를 θ으로 매핑하면 (θ은 0에서 2까지 π에서 실행 됨) r에 일부 오프셋을 추가하면 반지름이 달라지고 θ에 오프셋을 추가하면 원 주위로 회전합니다. A 및 B는 이러한 오프셋이다

r = fx + a 
g = (max_y - min_y)/(2*pi) 
theta = gy + b 

는 F 링의 폭을 축소하여 2 g π에 직사각형의 길이를 정규화한다. (x, y)는 원래 직사각형 (R, θ) 극 좌표 : 그런 다음 3 좌표계가

x' = r cos(theta) 
y' = r sin(theta) 

다음은 그냥 (화면 IE) 직교 이러한 극좌표에서 다시 변환 반지의 (x ', y') 좌표를 나타냅니다.

관련 문제