void dMeshNodeInfo::CalculateOOBBGizmo (const dMatrix& matrix, dVector& p0, dVector& p1) const { p0 = dVector ( 1.0e10f, 1.0e10f, 1.0e10f, 1.0f); p1 = dVector (-1.0e10f, -1.0e10f, -1.0e10f, 1.0f); dMatrix tranform (m_matrix * matrix) ; int stride = NewtonMeshGetVertexStrideInByte(m_mesh) / sizeof(dFloat); float* const vertexList = NewtonMeshGetVertexArray(m_mesh); for (void* vertex = NewtonMeshGetFirstVertex(m_mesh); vertex; vertex = NewtonMeshGetNextVertex(m_mesh, vertex)) { int index = NewtonMeshGetVertexIndex(m_mesh, vertex) * stride; dVector p (vertexList[index + 0], vertexList[index + 1], vertexList[index + 2], 1.0); p = tranform.TransformVector(p); p0.m_x = min (p.m_x, p0.m_x); p0.m_y = min (p.m_y, p0.m_y); p0.m_z = min (p.m_z, p0.m_z); p1.m_x = max (p.m_x, p1.m_x); p1.m_y = max (p.m_y, p1.m_y); p1.m_z = max (p.m_z, p1.m_z); } }
int main( void ) { tranform("4*(3+2)/(2+2)"); printf("\n"); return 0; }