Tôi đang cố gắng tạo các thành phần tùy chỉnh trong Android bằng cách sử dụng Surfaceview và vẽ canvas. Các thành phần có kích thước lớn và có thể xoay bằng cách chạm vào. Xem xét việc tạo ra một hình ảnh xem các cạnh trên, phải, dưới và trái của nó có thể mở rộng bằng cách chạm và kéo cạnh được yêu cầu. Tôi đang sử dụng RectF
để giữ giới hạn của thành phần, Đối với xoay tôi đang sử dụng phương pháp canvas.rotate(angle, bounds.centerX(),bounds.centerY())
. Vấn đề là trong khi thay đổi kích thước cạnh trên, các cạnh Cho, Phải và Dưới phải được cố định và tôi không thể sửa lỗi nếu góc xoay khác 0 độ. Tôi cần một giải pháp toán học để tìm ra tọa độ x, y của một hình chữ nhật xoay đối với giới hạn hình chữ nhật thực tế.Tọa độ hình chữ nhật với sự tôn trọng góc quay
Tôi có thể giải thích nó với sự trợ giúp của một số hình ảnh. Hình sau đây hiển thị hai hình chữ nhật có giới hạn cũng được biết và hiển thị bằng các màu tương ứng. Hãy xem xét Rect xanh như các thành phần ban đầu giới hạn, tức là. xoay quanh -45 độ, Trung tâm là (10,10). Bây giờ sẽ tái kích thước Cạnh trên của hình chữ nhật và hiển thị trong hình tiếp theo 2.
Từ Hình 2 nó được hiểu rằng vị trí Y được giảm xuống 4 từ 6. xoay Hình chữ nhật cũng được hiển thị bằng màu hồng. Hãy nhớ rằng tôi đang thay đổi kích thước trong khi thành phần ở góc quay -45 độ, vì vậy trong khi kéo Cạnh trên Hình chữ nhật Vị trí trái, phải và dưới không được thay đổi. Vì vậy, các nhân Hình 2 hồng Rectangle nên có Left, Right, và dưới phối giống như Hình 1 của Xanh Rectangle. So sánh các hình chữ nhật đạt được và dự kiến sẽ được trình bày trong Hình 3.
Trong hình 3 hình chữ nhật màu vàng là dự kiến / Bắt buộc ra đặt. Hình chữ nhật thu được Hình chữ nhật Màu hồng được dịch chuyển lên trên so với Hình chữ nhật xoay màu xanh lá cây và thay đổi phụ thuộc vào Góc quay.
- Tôi có xoay góc = -45 độ
- Bounds của thực tế (Không tái kích thước) hình chữ nhật.
- Giới hạn hình chữ nhật thực (Không phải kích thước lại) ở Xoay = -45 độ.
- Giới hạn của hình chữ nhật có kích thước lại.
- Giới hạn của hình chữ nhật có kích thước lại khi xoay = -45 độ.
Làm cách nào để tính Bounds/Trung tâm của hình chữ nhật màu vàng. Vì vậy mà tôi có thể thực hiện việc thay đổi kích thước của các thành phần của tôi một cách chính xác? Hãy cho tôi biết là có bất kỳ toán học nào có thể được áp dụng không?
Những điểm cần thiết/tọa độ được đánh dấu là vòng tròn màu đỏ trong hình 3.
Chỉ cần xoay, công thức cơ bản là: X_ = x * cos (góc) - y * sin (góc); y_ = y * sin (góc) + y * cos (góc); http://en.wikipedia.org/wiki/Rotation_(mathematics) – user1410657