Xin chào các bạn, tôi đang cố tính các đỉnh của hình chữ nhật xoay (2D).Tính các đỉnh của hình chữ nhật xoay
Thật dễ dàng nếu hình chữ nhật không được xoay, tôi đã tìm ra phần đó.
Nếu hình chữ nhật đã được xoay, tôi nghĩ về hai cách có thể để tính toán các đỉnh. 1) Tìm hiểu cách chuyển đổi các đỉnh từ không gian địa phương/đối tượng/mô hình (những cái tôi đã tìm ra bên dưới) thành không gian thế giới. Tôi thành thật không có đầu mối, và nếu đó là cách tốt nhất thì tôi cảm thấy như tôi sẽ học được rất nhiều từ nó nếu tôi có thể tìm ra nó ...
2) Sử dụng trig để tìm ra điểm cuối của hình chữ nhật có liên quan đến vị trí của hình chữ nhật trong không gian thế giới. Đây là cách tôi đã cố gắng để làm cho đến bây giờ, tôi chỉ không tìm ra cách.
Đây là chức năng cho phép tính đỉnh vậy, đến nay, nhờ sự giúp đỡ nào
void Rect::calculateVertices()
{
if(m_orientation == 0) // if no rotation
{
setVertices(
&Vertex((m_position.x - (m_width/2) * m_scaleX), (m_position.y + (m_height/2) * m_scaleY), m_position.z),
&Vertex((m_position.x + (m_width/2) * m_scaleX), (m_position.y + (m_height/2) * m_scaleY), m_position.z),
&Vertex((m_position.x + (m_width/2) * m_scaleX), (m_position.y - (m_height/2) * m_scaleY), m_position.z),
&Vertex((m_position.x - (m_width/2) * m_scaleX), (m_position.y - (m_height/2) * m_scaleY), m_position.z));
}
else
{
// if the rectangle has been rotated..
}
//GLfloat theta = RAD_TO_DEG(atan(((m_width/2) * m_scaleX)/((m_height/2) * m_scaleY)));
//LOG->writeLn(&theta);
}
+1 - Tôi có xu hướng thích quay lại và sau đó thực hiện bất kỳ công việc nào, giúp cuộc sống đơn giản hơn. –
Bằng cách này bạn có thể nhận được bằng cách chỉ thực hiện 2 thao tác trig (nếu bạn lưu trữ kết quả của 'cos (t)' và 'sin (t)' trước khi tính toán bất kỳ đỉnh nào được xoay). – jnylen
Công thức này sẽ xoay theo chiều kim đồng hồ như thế nào? –