Ehi ragazzi, sto cercando di calcolare i vertici di un rettangolo ruotato (2D).Calcolo dei vertici di un rettangolo ruotato
È abbastanza facile se il rettangolo non è stato ruotato, ho capito quella parte.
Se il rettangolo è stato ruotato, ho pensato a due possibili modi per calcolare i vertici. 1) Scopri come trasformare i vertici dallo spazio locale/oggetto/modello (quelli che ho scoperto in basso) allo spazio mondiale. Onestamente non ne ho idea, e se è il modo migliore allora mi piacerebbe imparare molto da esso se potessi capirlo ...
2) Utilizzare trig per capire in qualche modo dove i punti finali del il rettangolo è relativo alla posizione del rettangolo nello spazio del mondo. Questo è stato il modo in cui ho cercato di fare fino ad ora, non ho ancora capito come.
Ecco la funzione che calcola i vertici finora, grazie per qualsiasi aiuto
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 - Io preferisco tornare indietro e quindi fare qualsiasi lavoro, semplifica la vita. –
In questo modo è possibile ottenere solo con 2 operazioni trigonometriche (se si memorizzano i risultati di 'cos (t)' e 'sin (t)' prima di calcolare qualsiasi vertice ruotato). – jnylen
Come si dovrebbe ruotare questa formula in senso orario? –