2011-12-30 2 views
1

저는 인간이 일상적으로 수행하는 일상적인 작업을 수행 할 수있는 보편적 인 로봇을 연구하고 있습니다.자바 로봇 클래스의 베 지어 곡선

클래스 중 하나는 '마우스'입니다. 마우스와 관련된 모든 명령 (예 : 이동, 버튼 누르기 등)을 처리합니다.

Bezier 스플라인 (베 지어 곡선)에 대해 많이 읽었지만 이해가되지 않습니다.

필자가 읽은 바로는 4 개의 제어점이 필요합니다.

Point0 = Start X 
Point1 = Unknown 
Point2 = Unknown 
Point3 = End X 

는 어떻게 알 수없는 나의 마우스 움직임이 부드러운 곡선이 될 것입니다 좌표는 어디에서 찾을 수 있습니까?

시간을 크게 주셔서 감사 드리며 답변을 기다리겠습니다.

+1

도움이되기를 바랍니다 ... 마우스의 위치입니다 그냥 줄을 써요? – Randy

+0

안녕 랜디, 현실적인 움직임이 필요해. 점을 이동하는 것은 단순히 너무 로봇 식입니다. –

답변

2

않음 개의 제어점을 정의함으로써, 매끄러운 베 지어 곡선을 줄 것이며, 시작점과 끝점 사이의 직선은 부드러운 곡선 일 것이다. 실제로 두 가지 질문 중 하나 또는 둘 모두를 요구할 수 있습니다.

1) 마우스가 따라야하는 경로가 주어지면 경로를 따라 점을 계산하는 방법은 무엇입니까? 경로의 파라 메트릭 방정식이 필요합니다. 직선 세그먼트 PQ 따라 점 파라 메트릭 식 PQ 선분의 벡터 형태, ​​P 시작점이다

r(t) = P + tPQ 

이며 t 1.

2) 0 다르다 내 마우스가 "자연스러운"경로를 따르는 베 지어 제어점은 어떻게 찾습니까? 이것은 매우 주관적입니다. 내가 말했듯이 두 개의 제어점은 연속 경로를 산출하기 때문에 올바른 대답이 없습니다. 좌표를 기준으로 1/3과 2/3의 제어점을 선택할 수 있습니다 (예 : 좌표의 5 %). 그런 다음 파라 메트릭 베 지어 방정식을 사용하여 곡선을 따라 점을 계산합니다. 당신을 기쁘게하는 것을 얻기 위해 그 5 % 숫자로 바이올린을하십시오.

+0

신속한 응답을 보내 주셔서 감사합니다. 작은 예제를 쓸 시간이 있다고 생각합니까? 나는 이것을 몇 시간 동안 연구 해왔다. 나는 머리카락을 꺼낼 준비가되어있다. –

+0

작은 예를 들면, 지금은? 너는 네가 정말로 묻고있는 질문을 말하지 않았다. –

+0

죄송합니다. 기본적으로 A와 B 두 점을 시작하고 끝내고 제어점을 생성하고 직선 경로를 다음과 같은 곡선으로 바 꾸고 싶습니다. http://mathworld.wolfram.com/images/eps -gif/Bezier_700.gif –

1

둘 이상의 4 포인트 베젤에서 곡선을 더 잘 샘플링하십시오. 원활이 수행해야 개의 4 점 베지에 합류 :

Bezier1를 (A2, A1, A0, A3 ...) a0..a3 이전 곡선 (벡터)를 포인트 좌표는

Bezier2 (B0, B1, B2, B3 ...) b0..b3이 곡선 (벡터)를 포인트 좌표는

B0 = A3 ... 연속성 C0에게

B1 = B0 + (A3을 보장 -a2) ...연속성 C1에게 알려지지

B2를 = 보장

는 A0를 설정할 수있는 제 곡선 A1 = 마우스 위치에 대하여 마우스

의 B3 = 위치

모든 B3 포인트가 마우스 위치를이다

모든 b2 점은 마우스 위치가 일정한 크기로 왜곡되어 있습니다. 크기를 사용하지 않으면 ok ...

마우스로 그릴 때 일부 일정 길이가 처음부터 이동 된 후 다음 베 지어 곡선을 추가 할 수 있습니다. 마우스 경로의 정확한 근사가 필요하면 곡선 세그먼트의 길이 상수를 더 낮추려면 시작 부분에서 이동 한 후

을 추가 할 수 있습니다. 충분하지 않은 경우 4 포인트 보간을 4 포인트 베 지어로 변환해야합니다. 이는 단순하지 않습니다. 대신 베 지어 사용 보간에 의해 제한되지 않는 경우

, 모든 점

가 원하는 버튼을, 왜 현재 위치에서 옮길 경우가