2D에서 한 점을 다른 점을 기준으로 회전시키는 작업
컴퓨터 그래픽에서는 특정 점을 중심으로 객체를 회전시키는 것이 일반적인 작업입니다. 이 경우 Allegro API를 사용하여 카드의 모서리 점 4개를 회전하려고 합니다. 이를 달성하려면 다음 접근 방식을 고려하세요.
旋转点函数
rotate_point라는 함수를 구현하여 원하는 방식으로 회전 작업을 수행할 수 있습니다. 다음 매개변수를 사용합니다:
구현:
rotate_point 함수는 먼저 주어진 점 p에서 피벗점을 뺍니다. 그러면 점이 좌표계의 원점으로 이동됩니다. 다음으로 회전 각도의 사인과 코사인을 이용하여 회전을 수행합니다. 마지막으로 회전된 점을 얻기 위해 피벗점을 다시 추가합니다.
코드:
POINT rotate_point(float cx, float cy, float angleInRads, POINT p) { float s = sin(angleInRads); float c = cos(angleInRads); // translate point back to origin: p.x -= cx; p.y -= cy; // rotate point float xnew = p.x * c - p.y * s; float ynew = p.x * s + p.y * c; // translate point back: p.x = xnew + cx; p.y = ynew + cy; return p; }
이 회전을 카드의 4개 모서리 점에 적용하면, 충돌 감지에 사용할 수 있는 회전된 다각형을 생성할 수 있습니다.
위 내용은 Allegro를 사용하여 2D에서 다른 점 주위로 점을 회전하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!