Case 1. 고속으로 움직이는 물체에 1차원 MOTF(Marking On The Fly)를 하고자 한다면
- RTC5 객체를 생성한다 이때 인자로 CntPerMm (밀리미터당 엔코더 개수)를 측정하여 생성해 준다. 측정방법은 ctrlGetEncoder 함수를 사용하여 현재의 엔코더 펄스 개수를 확인할 수 있다. 예를 들어 1mm 물체를 이동하여 2000 개의 펄스가 생성되면 CntPerMm = 2000 을 인자로 준다.
- listBegin / listJump ... listMark... listArc / listEnd 가 통상적으로 사용하는 방식인데, MOTF 를 위해서 listOnTheFlyBegin / listOnTheFlyEnd 를 추가적으로 사용한다.
- 즉 listBegin / listOnTheFlyBegin / listJump ... listMark... listArc / llistOnTheFlyEnd / listEnd 의 순서로 호출하여 사용한다.
- listOnTheFlyBegin / llistOnTheFlyEnd 사이에 호출되는 Jump/Mark 명령의 좌표값은 호출당시의 입력된 엔코더의 값 만큼 상쇄되어 이동 물체를 추종하게 된다
- 마치 아래와 같은 방식의 동작이 가능해진다.
- 우선 TTF 폰트를 구성하는 제어점등의 정보를 얻어오도록 하자.
- 참고 링크 : http://www.ucancode.net/Visual_C_Control/GetPath-BeginPath-EndPath-draw-ourline-text.htm
- DC에 펜을 이용해 그리듯 스캐너를 이용해 그릴수 있도록 DC 에 대응하는 함수를 만들자
- pDC->MoveTo = pRtc->listJump
- pDC->LineTo = pRtc->listMark
- pDC->PolyBezierTo = 시작점, 끝점, 2개의 제어점으로 구성되므로 이 4개의 점을 통해 Cubic bezier 곡선을 근사한 점들의 집합을 만든다.
- 이 점들을 pRtc->listMark 를 이용하여 가공한다.
- 참고 링크 : https://stackoverflow.com/questions/3192097/fastest-way-to-calculate-cubic-bezier-curves
댓글 없음:
댓글 쓰기