programing

2D에서 다른 점으로 점 회전

kingscode 2021. 1. 17. 10:59
반응형

2D에서 다른 점으로 점 회전


다른 점을 기준으로 한 각도로 회전 할 때 한 점의 새 좌표를 계산하는 방법을 알고 싶습니다.

블록 화살표가 있고 화살표 밑면의 중앙에있는 점을 기준으로 세타 각도만큼 회전시키고 싶습니다.

이것은 2 개의 화면 컨트롤 사이에 다각형을 그리는 데 필요합니다. 이미지를 사용하거나 회전 할 수 없습니다.

지금까지 제가 고려한 것보다 더 복잡한 것은 화면의 원점이 왼쪽 상단에 있다는 것입니다.


이 점 회전하면 (px, py)점을 중심을 (ox, oy)각도로 theta당신은 얻을 것이다 :

p'x = cos (theta) * (px-ox)-sin (theta) * (py-oy) + ox
p'y = sin (theta) * (px-ox) + cos (theta) * (py-oy) + oy

이를 위해 GDI +를 사용 Transform하는 경우 Graphics개체의 메서드를 사용할 수 있습니다 .

graphics.TranslateTransform(point of origin);
graphics.RotateTransform(rotation angle);

그런 다음 실제 물건을 그립니다.


System.Windows.Media사용 가능한 네임 스페이스 가있는 경우 기본 제공 변환을 사용할 수 있습니다.

    using System.Windows.Media;

    var transform = new RotateTransform() {Angle = angleInDegrees, CenterX = center.X, CenterY = center.Y};
    var transformedPoint = transform.Transform(point);

참조 URL : https://stackoverflow.com/questions/786472/rotate-a-point-by-another-point-in-2d

반응형