2013-03-28 3 views
2

이것은 수학 문제 일 수 있습니다 ... 원형 축에 점 집합이 있습니다. 원 x와 점 y의 반지름을 부르 자. 문제는 두 가지입니다.원 주위의 점들을 부드럽게 그리는 법

  1. 나는 모든 지점에서 부드러운 선을 원합니다. 정상적인 x/y 그래프라고 가정합시다 : 정확한 좌표를 알고 있습니다. 이제 어떻게 모든 포인트 사이에 부드러운 경로를 만들 수 있습니까?
  2. 정상적인 x/y 그래프가 아닙니다. 이것은 a/r 그래프 (각도/반경)입니다. 1.에서 나온 해결책을 적용 할 수는 있지만 그 행을 어디서 그려야합니까? (나는 더 이상 어려워하게 그것이 A/R 그래프 것을 확실하지 않다.)

(나는 자바 스크립트와 <canvas>에이를 만들려면 나는 열망 위해 뭔가를 설정했습니다. http://jsfiddle.net/rudiedirkx/5LfdP/1/를) 내가 무엇을 찾고

가 끝 회의와 원 감싸

smooth line graph

이다 (그래서 0 % = 350 및 100 % = 350).

큐브 베 지어가 점 사이의 부드러운 경로를 만드는 데 필요하다고 느껴지지만 그게 전부입니다. This is the bezier function I usually use.

나는 어떤 의미인가? 나는 더 나은 그림을 찾을 수 없다. (나는 아무 생각했습니다 없기 때문에 아마이 호출 것.)

편집 1 :이 어떻게 보일지의 도면에서 내 시도 : http://www.sketchtoy.com/26800595은 (애니메이션을 잊어, 그건 얼마나 sketchtoy 작품)

편집 2 : quadraticCurveTo()를 사용하여 fiddle demo을 업데이트했지만 충분하지 않습니다. 베 지어 커브가 필요하고 커브를 두 배나 확대해야합니다. About Spline Interpolation에서와 같지만 희망적으로 더 간단합니다.

+0

350 ...도에서 360을 의미합니까? – ErikE

+0

아니, 그래프에서 350을 의미하는 것은 아닙니다. Y 값이 될 수 있습니다. 곡선이 원 둘레에서 닫히기 만하면됩니다. – Rudie

+0

그래서 0 % - 100 %는 끝을 연결하기 위해 원을 감싸는 X 축이고, y 축은 "원통"의 길이입니다. 그래서 당신은 정말로 3D 차트를 찾고 있습니까? 실린더가 투명 할 것인가 아니면 불투명 할 것인가? (그렇다면 모든 커브를 보려면 어떻게 회전시킬 것인가?) – ErikE

답변

1

그래프에 대한 함수식이있는 경우 좌표를 원형 오프셋이있는 극좌표로 바꾸면됩니다. 이러한 매핑을 사용하여 (각 "360", 또는 컴퓨터에 대한 "2π"인 max_x MIN_X 각도 "0"인 상태와) 당신의 각도로 'X'를 치료 :

φ (the angle) = map x from interval (min_x,max_x) to interval (0,2π); 
a (the amplitude) = map y from (min_y,max_y) to (0, max_distance); 

할 수 있습니다 다음 X/Y 당신은 항상 원래의 X/Y 값을 계산하는 데 우회 할 수 있도록

nx = a * cos(φ); 
ny = a * sin(φ); 

그리고 그래프 플로팅에 대한

, 나는 강력하게, 당신의 가치에 대한 조회 테이블을 구축 추천 할 수 있습니다 : 당신이 그려 함수가 원하는 좌표. 기능이 없지만 일련의 포인트 만 있으면 LUT가 이미 유효합니다.

LUT x/y 좌표를 변환 한 후에는 Catmull-Rom 스플라인이 사용하는 각 점을 통과하므로 베 지어가 아닌 Catmull-Rom 스플라인의 경우 각각을 통해 멋진 곡선을 그릴 수 있습니다. 베 지어 곡선은 시작점과 끝점을 제외한 모든 점을 스커트하므로 원하는 작업에 적합하지 않습니다.

+0

그게 무슨 뜻인지는 모르겠지만 ... 함수 표현식이 있나요? 고정 된 X와 Y 값만 있습니다. 베 지어 곡선이 필요하지 않니? 어떻게 원형으로 오프셋합니까? 나는 그것을 얻지 않는다! – Rudie

+0

귀하의 경우에 적용되는 것을보다 잘 반영하도록 답변을 편집했습니다. –