Hola chicos, estoy tratando de calcular los vértices de un rectángulo girado (2D).Cálculo de vértices de un rectángulo girado
Es bastante fácil si el rectángulo no se ha girado, pensé que la parte fuera.
Si el rectángulo se ha girado, pensé en dos formas posibles de calcular los vértices. 1) Descubre cómo transformar los vértices del espacio local/objeto/modelo (los que descubrí a continuación) al espacio mundial. Honestamente, no tengo ni idea, y si es la mejor manera, entonces creo que aprendería mucho de ella si pudiera resolverlo ...
2) Utilice trig para averiguar de alguna manera dónde están los puntos finales de la rectángulo son relativos a la posición del rectángulo en el espacio mundial. Esta ha sido la forma en que he tratado de hacerlo hasta ahora, simplemente no he descubierto cómo.
Aquí está la función que calcula los vértices hasta ahora, gracias por cualquier ayuda
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 - Tiendo a preferir girar hacia atrás y luego hacer cualquier trabajo, hace la vida más simple. –
De esta manera puede salir adelante haciendo solo 2 operaciones trigonométricas (si almacena los resultados de 'cos (t)' y 'sin (t)' antes de calcular cualquier vértice girado). – jnylen
¿Cómo sería rotar esta fórmula en el sentido de las agujas del reloj? –