안녕하세요!! 급하게 이미지 회전 관련 처리 때문에 문의 합니다.
포함된 그림과 같이 image 컴포넌트를 써서 처리 하고 있는데 문제는
그림에 보시는 배의 각도가 절대 좌표계에서 시계방향 30도를 돌리고 바람이 배쪽으로 시계 방향 30도 들어온다고 생각한다면 배의 이미지 컴포넌트는 Angle만 30도 돌리면 그림과 같이 되지만...
문제는 바람이 30도 배쪽으로 들어오는 좌표를 표현 하자니 어렵네요...
그리고 바람은 배의 세로 중앙선을 기준으로 오른쪽 30도 으로 들어오는것은 +30도 이고 왼쪽으로 들어오는것은 -30도 표현됩니다.
그러니까 절대 좌표계와 상대좌표계가 혼용 됐나 봅니다.
허걱~~
또한 바람은 배의 뒤쪽의 하얀 부분에 화살표가 만나야 합니다.
그래서 다음과 같이 좌표변환을 해 보았는데 안되네요~~
좋은 방법 부탁합니다.
Img1_Angle은 배가 도는 각도이고
중점은 배 이미지의 중앙을 잡았습니다.
그리고 이동하려고 하는 정점 (바람)의 좌표는 이미지2로 해서
Image의 Left, Top을 잡았습니다.
그런데 이식으로 돌리니까 잘 안나오네요~~
어디가 잘못 됐는지 좋은 의견 부탁합니다.
Img1_Angle := Psi_0*PI/180*-1;
R_Img_Ox1 := Round(Rotimg1.Left + Rotimg1.Width/2); //중점
R_Img_Oy1 := Round(Rotimg1.Top + Rotimg1.Height/2); //중점
R_Img_Ox2 := Round(Rotimg3.Left); //정점
R_Img_Oy2 := Round(Rotimg3.Top); //정점
R_Img_Nx := Round((R_Img_Ox2 * Cos(Img1_Angle)) - (R_Img_Oy2 * Sin(Img1_Angle)) -
(R_Img_Ox1 * Cos(Img1_Angle)) + (R_Img_Oy1 * Sin(Img1_Angle)) + R_Img_Ox1);
R_Img_Ny := Round((R_Img_Ox2 * Sin(Img1_Angle)) + (R_Img_Oy2 * Cos(Img1_Angle)) -
(R_Img_Ox1 * Sin(Img1_Angle)) - (R_Img_Oy1 * Cos(Img1_Angle))+ R_Img_Oy1);
Rotimg3.Left := R_Img_Nx;
Rotimg3.Top := R_Img_Ny;
암튼 불어오는 바람의 방향을 표시하시고 싶으신 거 같은데
간단한거 같은데..
음 그러니깐 보면 알지만
배의 방향에 + 180도 에서 오른쪽이면 - 쎄타
왼쪽이면 + 쎄타
이렇게 하면 될 것 같은데요.. --;;
그렇게 해서 그냥 화살표의 시작점을 배의 가운데로 옮겨주면되죠..
음 이거 아닌지 --;;