void Forward(DdNode *root, int nex) { int i, j; if (boolVars_ex[nex]) { nodesToVisit = (DdNode ***)malloc(sizeof(DdNode **) * boolVars_ex[nex]); NnodesToVisit = (int *)malloc(sizeof(int) * boolVars_ex[nex]); nodesToVisit[0] = (DdNode **)malloc(sizeof(DdNode *)); nodesToVisit[0][0] = root; NnodesToVisit[0] = 1; for (i = 1; i < boolVars_ex[nex]; i++) { nodesToVisit[i] = NULL; NnodesToVisit[i] = 0; } add_node(nodesF, Cudd_Regular(root), 1); for (i = 0; i < boolVars_ex[nex]; i++) { for (j = 0; j < NnodesToVisit[i]; j++) UpdateForward(nodesToVisit[i][j], nex); } for (i = 0; i < boolVars_ex[nex]; i++) { free(nodesToVisit[i]); } free(nodesToVisit); free(NnodesToVisit); } else { add_node(nodesF, Cudd_Regular(root), 1); } }
void CCamera::Pitch(float rad) { CMatrix44f rotate; rotate.Rotate(rad, right); forward = rotate.Mul(forward); forward.Normalize(); rot.y = atan2(forward.x,forward.z); rot.x = asin(forward.y); UpdateForward(); }