TXGridTriangle::TXGridTriangle(TXTriangle *tp) { m_t = tp; m_n = m_t->m_norm; CVector3f tmp; tmp.Sub(m_t->m_v[0]->m_pos,m_t->m_v[1]->m_pos); tmp.Cross(tmp,m_n); m_en1.Normalize(tmp); tmp.Sub(m_t->m_v[1]->m_pos,m_t->m_v[2]->m_pos); tmp.Cross(tmp,m_n); m_en2.Normalize(tmp); tmp.Sub(m_t->m_v[2]->m_pos,m_t->m_v[0]->m_pos); tmp.Cross(tmp,m_n); m_en3.Normalize(tmp); }
void CCamera::lookTo( const CVector3f& fVector ) { if (CVector3f::ZERO == fVector) return; if (m_bYawFixed) { CVector3f dirFixed = fVector; dirFixed.Normalize(); CVector3f xVec,yVec; CMatrix kRot; xVec = m_vYawFixed.Cross(dirFixed); xVec.Normalize(); yVec = dirFixed.Cross(xVec); yVec.Normalize(); m_Quaternion.FromAxes( xVec,yVec,dirFixed ); m_bNeedUpdate = true; } else { setDIRECTION(fVector); } }