void flInit(Flag* F, float cellH, float cellW, unsigned int H, unsigned int W, Texture TexFlag, Texture TexPole) { F->cellH = cellH; F->cellW = cellW; F->W = W; F->H = H; F->TexFlag = TexFlag; F->TexPole = TexPole; daInit(&F->Vertices); daInit(&F->Rigids); daReserve(&F->Vertices, W*H); daReserve(&F->Rigids, (W*H*2 - W - H + 1)); for(unsigned int i = 0; i < H; i++) { for(unsigned int j = 0; j < W; j++) { daAdd(&F->Vertices, newVertex()); vxSetPosition((Vertex*) daGet(&F->Vertices, i*W + j), vec2(j*cellW, i*cellH)); vxSetMass((Vertex*) daGet(&F->Vertices, i*W + j), 0.01f); } } for(unsigned int i = 0; i < H; i++) { vxSetFixed((Vertex*) daGet(&F->Vertices, i*W), 1); } for(unsigned int i = 0; i < H; i++) { for(unsigned int j = 0; j < W - 1 ; j++) { daAdd(&F->Rigids, newRigid((Vertex*) daGet(&F->Vertices, i*W + j), (Vertex*) daGet(&F->Vertices, i*W + j + 1), cellW)); } } for(unsigned int j = 0; j < W - 1 ; j++) { for(unsigned int i = 0; i < H - 1; i++) { daAdd(&F->Rigids, newRigid((Vertex*) daGet(&F->Vertices, i*W + j), (Vertex*) daGet(&F->Vertices, (i + 1)*W + j), cellH)); } } }
void zdrDacRoutine(void) { if (s) { daInit(); s = 0; } if (tv != vVoltage) { daSetVoltage(1, vVoltage); tv = vVoltage; } if (tc != vCurr) { daSetVoltage(2, vCurr); tc = vCurr; } }
DynArr* newDynArr() { DynArr* DA = (DynArr*) malloc(sizeof(DynArr)); daInit(DA); return DA; }
DynArr da() { DynArr DA; daInit(&DA); return DA; }