반응형
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
반응형
'programing' 카테고리의 다른 글
Flutter : HintText가 있지만 밑줄이없는 TextField를 만드는 방법은 무엇입니까? (0) | 2021.01.17 |
---|---|
C # int에서 열거 형으로 변환 (0) | 2021.01.17 |
Grails 컨트롤러에서 404 / 50x 상태 코드를 반환하려면 어떻게해야합니까? (0) | 2021.01.17 |
Rails 3 — Bundler / Capistrano 오류 (0) | 2021.01.17 |
여러 인수가있는 xargs (0) | 2021.01.17 |