void BigPuppySymmetricSpiralSegments::addRodsLeg(tgStructure& s){ s.addPair(0,1,"rod"); s.addPair(1,2,"rod"); s.addPair(1,3,"rod"); s.addPair(1,4,"rod"); s.addPair(0,5,"rod"); }
void BigDoxieNoFeet::addRodsLeg(tgStructure& s){ s.addPair(0,1,"rod"); s.addPair(1,2,"rod"); s.addPair(1,3,"rod"); s.addPair(1,4,"rod"); s.addPair(0,5,"rod"); }
void BigPuppySymmetricArching::addRodsLeg(tgStructure& s) { s.addPair(0,1,"rod"); s.addPair(1,2,"rod"); s.addPair(1,3,"rod"); s.addPair(1,4,"rod"); s.addPair(0,5,"rod"); }
void VerticalSpineModel::addPairsB(tgStructure& tetra) { tetra.addPair(0, 4, "rodB"); tetra.addPair(1, 4, "rodB"); tetra.addPair(2, 4, "rodB"); tetra.addPair(3, 4, "rodB"); }
void T6Model::addRods(tgStructure& s) { s.addPair( 0, 1, "rod"); s.addPair( 2, 3, "rod"); s.addPair( 4, 5, "rod"); s.addPair( 6, 7, "rod"); s.addPair( 8, 9, "rod"); s.addPair(10, 11, "rod"); }
void T12SuperBallPayload::addRods(tgStructure& s) { s.addPair( 0, 6, "r1 rod"); s.addPair( 1, 7, "r2 rod"); s.addPair( 2, 8, "r3 rod"); s.addPair( 3, 4, "r4 rod"); s.addPair( 5, 11, "r5 rod"); s.addPair( 9, 10, "r6 rod"); }
void BigPuppySymmetricArching::addRodsFoot(tgStructure& s) { s.addPair(0,6,"rod"); s.addPair(1,7,"rod"); s.addPair(2,4,"rod"); s.addPair(3,5,"rod"); s.addPair(0,1,"rod"); s.addPair(0,3,"rod"); s.addPair(1,2,"rod"); s.addPair(2,3,"rod"); }
void TensegrityModel::addNodeEdgePairs(tgStructure& structure, const std::string& tags, const Yam& pairs, const std::string* childStructure1Name, const std::string* childStructure2Name, tgBuildSpec& spec) { if (pairs.size() < 3) { throw std::invalid_argument("Error: node_edge bonds must specify at least 3 node_edge pairs"); } tgStructure& childStructure1 = structure.findChild(*childStructure1Name); tgStructure& childStructure2 = structure.findChild(*childStructure2Name); // these are used for transformations std::vector<btVector3> structure1RefNodes; std::vector<btVector3> structure2RefNodes; // these are nodes std::vector<tgNode*> ligands; // these are edges std::vector< std::pair<tgNode*, tgNode*> > receptors; // populate refNodes arrays, ligands and receptors parseNodeEdgePairs(childStructure1, childStructure2, structure1RefNodes, structure2RefNodes, ligands, receptors, pairs); rotateAndTranslate(childStructure2, structure1RefNodes, structure2RefNodes); std::vector<tgBuildSpec::RigidAgent*> rigidAgents = spec.getRigidAgents(); for (unsigned int i = 0; i < ligands.size(); i++) { // remove old edge connections // try removing from both children since we are not sure which child the pair belongs to // (could add more information to receptors array so we don't have to do this) removePair(childStructure1, receptors[i].first, receptors[i].second, true, rigidAgents, spec); removePair(childStructure2, receptors[i].first, receptors[i].second, true, rigidAgents, spec); for (unsigned int j = 0; j < ligands.size(); j++) { // remove old string connections between nodes/ligands // try removing from both children since we are not sure which child the node belongs to removePair(childStructure1, ligands[i], ligands[j], false, rigidAgents, spec); removePair(childStructure2, ligands[i], ligands[j], false, rigidAgents, spec); } // make new connection from edge -> node -> edge structure.addPair(*(receptors[i].first), *ligands[i], tags); structure.addPair(*ligands[i], *(receptors[i].second), tags); } }
void T12SuperBallPayload::addMuscles(tgStructure& s) { int muscleConnections[13][13]; musclesPerNodes.resize(13); for(int i=0;i<13;i++) { musclesPerNodes[i].resize(13); for(int j=0;j<13;j++) musclesPerNodes[i][j]=NULL; } for(int i=0;i<13;i++) for(int j=0;j<13;j++) muscleConnections[i][j]=-1; muscleConnections[0][3]=0; muscleConnections[3][2]=0; muscleConnections[2][0]=0; muscleConnections[4][5]=0; muscleConnections[5][7]=0; muscleConnections[7][4]=0; muscleConnections[1][8]=0; muscleConnections[8][10]=0; muscleConnections[10][1]=0; muscleConnections[9][11]=0; muscleConnections[11][6]=0; muscleConnections[6][9]=0; muscleConnections[1][2]=1; muscleConnections[2][4]=1; muscleConnections[4][1]=1; muscleConnections[3][5]=1; muscleConnections[5][6]=1; muscleConnections[6][3]=1; muscleConnections[0][8]=1; muscleConnections[8][9]=1; muscleConnections[9][0]=1; muscleConnections[11][7]=1; muscleConnections[7][10]=1; muscleConnections[10][11]=1; for(int i=0;i<13;i++) { for(int j=0;j<13;j++) { if(muscleConnections[i][j]>=0) { std::stringstream tag; tag<<"muscle-"<<i<<"-"<<j; s.addPair(i, j, "muscle"); //musclesPerNodes[i][j]=s.addPair(i, j, tag); //musclesPerNodes[j][i]=musclesPerNodes[i][j]; } } } }
// Add muscles that connect the segments void VerticalSpineModel::addMuscles(tgStructure& snake) { const std::vector<tgStructure*> children = snake.getChildren(); for (size_t i = 1; i < children.size(); ++i) { tgNodes n0 = children[i-1]->getNodes(); tgNodes n1 = children[i ]->getNodes(); // vertical muscles snake.addPair(n0[0], n1[0], "vertical muscle a"); snake.addPair(n0[1], n1[1], "vertical muscle b"); snake.addPair(n0[2], n1[2], "vertical muscle c"); snake.addPair(n0[3], n1[3], "vertical muscle d"); // saddle muscles snake.addPair(n0[2], n1[1], tgString("saddle muscle seg", i-1)); snake.addPair(n0[3], n1[1], tgString("saddle muscle seg", i-1)); snake.addPair(n0[2], n1[0], tgString("saddle muscle seg", i-1)); snake.addPair(n0[3], n1[0], tgString("saddle muscle seg", i-1)); } }
//add param for top or bottom prismatic actuator void DuCTTTestModel::addPairs(tgStructure& tetra) { tetra.addPair(3, 0, "back right rod"); tetra.addPair(3, 1, "back left rod"); tetra.addPair(2, 0, "front right rod"); tetra.addPair(2, 1, "front left rod"); tetra.addPair(0, 1, "top rod"); tetra.addPair(2, 3, "bottom rod"); // tetra.addPair(0, 1, "top prismatic"); // tetra.addPair(2, 3, "bottom prismatic"); }
// Add muscles that connect the segments void DuCTTTestModel::addMuscles(tgStructure& snake) { const std::vector<tgStructure*> children = snake.getChildren(); for (size_t i = 1; i < children.size(); ++i) { tgNodes n0 = children[i-1]->getNodes(); tgNodes n1 = children[i ]->getNodes(); snake.addPair(n0[0], n1[0], "top right muscle"); snake.addPair(n0[1], n1[1], "top left muscle"); snake.addPair(n0[2], n1[0], "front right muscle"); snake.addPair(n0[2], n1[1], "front left muscle"); snake.addPair(n0[3], n1[0], "back right muscle"); snake.addPair(n0[3], n1[1], "back left muscle"); snake.addPair(n0[2], n1[2], "bottom front muscle"); snake.addPair(n0[3], n1[3], "bottom back muscle"); } }
void TensegrityModel::addNodeNodePairs(tgStructure& structure, const std::string& tags, const Yam& pairs, const std::string* childStructure1Name, const std::string* childStructure2Name) { for (YAML::const_iterator pairPtr = pairs.begin(); pairPtr != pairs.end(); ++pairPtr) { Yam pair = *pairPtr; std::string node1Path = pair[0].as<std::string>(); std::string node2Path = pair[1].as<std::string>(); tgNode* node1; tgNode* node2; if (childStructure1Name && childStructure2Name) { node1 = &getNode(structure.findChild(*childStructure1Name), node1Path); node2 = &getNode(structure.findChild(*childStructure2Name), node2Path); } else { node1 = &getNode(structure, node1Path); node2 = &getNode(structure, node2Path); } structure.addPair(*node1, *node2, tags); } }
// Nodes: center points of opposing faces of rectangles void CraterDeep::addNodes(tgStructure& s) { const int nBoxes = 4; // Accumulating rotation on boxes btVector3 rotationPoint = origin; btVector3 rotationAxis = btVector3(0, 1, 0); // y-axis double rotationAngle = M_PI/2; addBoxNodes(); addBoxNodes(); addBoxNodes(); addBoxNodes(); for(int i=0;i<nodes.size();i+=2) { s.addNode(nodes[i]); s.addNode(nodes[i+1]); s.addRotation(rotationPoint, rotationAxis, rotationAngle); s.addPair(i, i+1, "box"); } s.move(btVector3(0, -5, 0)); // Sink boxes into the ground }
void ScarrArmModel::addRods(tgStructure& s) { // ulna and radius s.addPair(8, 12, "rod"); s.addPair(12, 14, "rod"); s.addPair(12, 13, "rod"); //olecranon s.addPair(0, 1, "rod"); s.addPair(1, 2, "rod"); s.addPair(1, 11, "rod"); // humerus s.addPair(3, 5, "humerus massless"); s.addPair(4, 5, "humerus massless"); s.addPair(5, 6, "humerus massless"); }
// Nodes: center points of opposing faces of rectangles void tgCraterDeep::addNodes(tgStructure& s) { #if (0) const int nBoxes = 4; #endif // Suppress compiler warning unused variable // Accumulating rotation on boxes btVector3 rotationPoint = origin; btVector3 rotationAxis = btVector3(0, 1, 0); // y-axis double rotationAngle = M_PI/2; addBoxNodes(); addBoxNodes(); addBoxNodes(); addBoxNodes(); for(std::size_t i=0;i<nodes.size();i+=2) { s.addNode(nodes[i]); s.addNode(nodes[i+1]); s.addRotation(rotationPoint, rotationAxis, rotationAngle); s.addPair(i, i+1, "box"); } s.move(btVector3(0, -5, 0)); // Sink boxes into the ground }
void ScarrArmModel::addMuscles(tgStructure& s) { const std::vector<tgStructure*> children = s.getChildren(); s.addPair(0, 3, "olecranon muscle"); //NB actually fascial tissue s.addPair(0, 4, "olecranon muscle"); //NB actually fascial tissue s.addPair(1, 3, "olecranon muscle"); //NB actually fascial tissue s.addPair(1, 4, "olecranon muscle"); //NB actually fascial tissue s.addPair(2, 3, "olecranon muscle"); //NB actually fascial tissue s.addPair(2, 4, "olecranon muscle"); //NB actually fascial tissue s.addPair(0, 13, "olecranon muscle"); //NB actually fascial tissue s.addPair(1, 13, "olecranon muscle"); //NB actually fascial tissue s.addPair(11, 13, "olecranon muscle"); //NB actually fascial tissue s.addPair(0, 14, "olecranon muscle"); //NB actually fascial tissue s.addPair(1, 14, "olecranon muscle"); //NB actually fascial tissue s.addPair(11, 14, "olecranon muscle"); //NB actually fascial tissue s.addPair(0, 12, "olecranon muscle"); //NB actually fascial tissue s.addPair(11, 12, "olecranon muscle"); //NB actually fascial tissue s.addPair(0, 5, "brachioradialis muscle"); s.addPair(2, 5, "olecranon muscle"); //NB actually fascial tissue s.addPair(3, 13, "right anconeus muscle"); s.addPair(4, 14, "left anconeus muscle"); }
// 24 muscles in total void Escape_T6Model::addMuscles(tgStructure& s) { s.addPair(0, 4, "muscle"); s.addPair(0, 5, "muscle"); s.addPair(0, 8, "muscle"); s.addPair(0, 10, "muscle"); s.addPair(1, 6, "muscle"); s.addPair(1, 7, "muscle"); s.addPair(1, 8, "muscle"); s.addPair(1, 10, "muscle"); s.addPair(2, 4, "muscle"); s.addPair(2, 5, "muscle"); s.addPair(2, 9, "muscle"); s.addPair(2, 11, "muscle"); s.addPair(3, 7, "muscle"); s.addPair(3, 6, "muscle"); s.addPair(3, 9, "muscle"); s.addPair(3, 11, "muscle"); s.addPair(4, 10, "muscle"); s.addPair(4, 11, "muscle"); s.addPair(5, 8, "muscle"); s.addPair(5, 9, "muscle"); s.addPair(6, 10, "muscle"); s.addPair(6, 11, "muscle"); s.addPair(7, 8, "muscle"); s.addPair(7, 9, "muscle"); }
void BigDoxieNoFeet::addRodsFoot(tgStructure& s){ s.addPair(0,6,"rod"); s.addPair(1,7,"rod"); s.addPair(2,4,"rod"); s.addPair(3,5,"rod"); }
void BigDoxieNoFeet::addMuscles(tgStructure& puppy){ //Time to add the muscles to the structure. Todo: try to clean this up some more. std::vector<tgStructure*> children = puppy.getChildren(); for(std::size_t i = 2; i < (children.size() - (m_hips + m_legs)); i++) { tgNodes n0 = children[i-2]->getNodes(); tgNodes n1 = children[i-1]->getNodes(); tgNodes n2 = children[i]->getNodes(); if(i==2){ //Extra muscles, to keep front vertebra from swinging. puppy.addPair(n0[3], n1[3], tgString("spine front upper right muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[3], n1[4], tgString("spine front upper left muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[4], n1[3], tgString("spine front lower right muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[4], n1[4], tgString("spine front lower left muscleAct2 seg", i-2) + tgString(" seg", i-1)); } //Add muscles to the puppy if(i < 3){ if(i % 2 == 0){ //front puppy.addPair(n0[1], n1[3], tgString("spine front lower right muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[1], n1[4], tgString("spine front lower left muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n1[3], tgString("spine front upper right muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n1[4], tgString("spine front upper left muscleAct1 seg", i-2) + tgString(" seg", i-1)); } else{ //rear puppy.addPair(n0[1], n1[3], tgString("spine rear upper left muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[1], n1[4], tgString("spine rear lower left muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n1[3], tgString("spine rear upper right muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n1[4], tgString("spine rear lower right muscleAct2 seg", i-2) + tgString(" seg", i-1)); } } if(i < m_segments){//Was 6 if(i % 2 == 0){ puppy.addPair(n0[1], n2[4], tgString("spine2 bottom muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n2[3], tgString("spine2 top muscleAct1 seg", i-2) + tgString(" seg", i-1)); } else{ puppy.addPair(n0[1], n2[4], tgString("spine2 lateral left muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n2[3], tgString("spine2 lateral right muscleAct1 seg", i-2) + tgString(" seg", i-1)); } } if(i > 0 && i < m_segments){ if(i % 2 == 0){//rear puppy.addPair(n1[1], n2[3], tgString("spine rear upper left muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[1], n2[4], tgString("spine rear lower left muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[3], tgString("spine rear upper right muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[4], tgString("spine rear lower right muscleAct2 seg", i-1) + tgString(" seg", i)); } else{//front puppy.addPair(n1[1], n2[3], tgString("spine front lower right muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[1], n2[4], tgString("spine front lower left muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[3], tgString("spine front upper right muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[4], tgString("spine front upper left muscleAct1 seg", i-1) + tgString(" seg", i)); } } if (i >= 2 && i < m_segments){ puppy.addPair(n1[3], n2[3], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[4], n2[3], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[3], n2[4], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[4], n2[4], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i)); } if(i == m_segments - 1){ //rear puppy.addPair(n1[1], n2[2], tgString("spine rear lower left muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[2], tgString("spine rear lower right muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[1], n2[1], tgString("spine rear upper left muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[1], tgString("spine rear upper right muscleAct1 seg", i-1) + tgString(" seg", i)); } } //Now add muscles to hips.... tgNodes n0 = children[0]->getNodes(); tgNodes n1 = children[1]->getNodes(); tgNodes n2 = children[2]->getNodes(); tgNodes n3 = children[3]->getNodes(); tgNodes n4 = children[4]->getNodes(); tgNodes n5 = children[5]->getNodes(); tgNodes n6 = children[6]->getNodes(); tgNodes n7 = children[7]->getNodes(); tgNodes n8 = children[8]->getNodes(); tgNodes n9 = children[9]->getNodes(); tgNodes n10 = children[10]->getNodes(); tgNodes n11 = children[11]->getNodes(); tgNodes n12 = children[12]->getNodes(); tgNodes n13 = children[13]->getNodes(); tgNodes n14 = children[14]->getNodes(); tgNodes n15 = children[15]->getNodes(); tgNodes n16 = children[16]->getNodes(); //Left shoulder muscles puppy.addPair(n9[1], n1[1], tgString("left shoulder rear upper muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n9[1], n1[4], tgString("left shoulder front upper muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n9[1], n0[2], tgString("left shoulder front top muscleAct1 seg", 6) + tgString(" seg", 0)); puppy.addPair(n9[1], n2[3], tgString("left shoulder rear top muscleAct1 seg", 6) + tgString(" seg", 2)); puppy.addPair(n9[3], n1[1], tgString("left shoulder rear lower muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n9[3], n1[4], tgString("left shoulder front lower muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n9[3], n0[1], tgString("left shoulder front bottom muscleAct1 seg", 6) + tgString(" seg", 0)); puppy.addPair(n9[3], n2[4], tgString("left shoulder rear bottom muscleAct1 seg", 6) + tgString(" seg", 2)); //Extra muscles, to move left shoulder forward and back: puppy.addPair(n9[0], n1[1], tgString("left shoulder rear mid muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n9[0], n1[4], tgString("left shoulder front mid muscleAct1 seg", 6) + tgString(" seg", 1)); //Left hip muscles puppy.addPair(n10[1], n7[1], tgString("left hip rear upper muscleAct1 seg", 7) + tgString(" seg", 5)); puppy.addPair(n10[1], n7[4], tgString("left hip front upper muscleAct1 seg", 7) + tgString(" seg", 5)); puppy.addPair(n10[1], n6[2], tgString("left hip front top muscleAct1 seg", 7) + tgString(" seg", 4)); puppy.addPair(n10[1], n8[3], tgString("left hip rear top muscleAct1 seg", 7) + tgString(" seg", 4)); puppy.addPair(n10[3], n7[1], tgString("left hip rear lower muscleAct1 seg", 7) + tgString(" seg", 5)); puppy.addPair(n10[3], n7[4], tgString("left hip front lower muscleAct1 seg", 7) + tgString(" seg", 5)); puppy.addPair(n10[3], n6[1], tgString("left hip front bottom muscleAct1 seg", 7) + tgString(" seg", 4)); puppy.addPair(n10[3], n8[4], tgString("left hip front bottom muscleAct1 seg", 7) + tgString(" seg", 6)); //Extra muscles, to move left hip forward and back: puppy.addPair(n10[0], n7[1], tgString("left hip rear mid muscleAct1 seg", 7) + tgString(" seg", 3)); //could also be n3[3] puppy.addPair(n10[0], n7[4], tgString("left hip front mid muscleAct1 seg", 7) + tgString(" seg", 5)); //Right shoulder muscles puppy.addPair(n11[1], n1[2], tgString("right shoulder rear upper muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n11[1], n1[3], tgString("right shoulder front upper muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n11[1], n0[2], tgString("right shoulder front top muscleAct1 seg", 8) + tgString(" seg", 0)); puppy.addPair(n11[1], n2[3], tgString("right shoulder rear top muscleAct1 seg", 8) + tgString(" seg", 2)); puppy.addPair(n11[3], n1[2], tgString("right shoulder rear lower muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n11[3], n1[3], tgString("right shoulder front lower muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n11[3], n0[1], tgString("right shoulder front bottom muscleAct1 seg", 8) + tgString(" seg", 0)); puppy.addPair(n11[3], n2[4], tgString("right shoulder rear bottom muscleAct1 seg", 8) + tgString(" seg", 2)); //Extra muscles, to move right shoulder forward and back: puppy.addPair(n11[0], n1[2], tgString("right shoulder rear mid muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n11[0], n1[3], tgString("right shoulder front mid muscleAct1 seg", 8) + tgString(" seg", 1)); //Right hip muscles puppy.addPair(n12[1], n7[2], tgString("right hip rear upper muscleAct1 seg", 9) + tgString(" seg", 5)); puppy.addPair(n12[1], n7[3], tgString("right hip front upper muscleAct1 seg", 9) + tgString(" seg", 5)); puppy.addPair(n12[1], n6[2], tgString("right hip front top muscleAct1 seg", 9) + tgString(" seg", 4)); puppy.addPair(n12[1], n8[3], tgString("right hip rear top muscleAct1 seg", 9) + tgString(" seg", 4)); puppy.addPair(n12[3], n7[2], tgString("right hip rear lower muscleAct1 seg", 9) + tgString(" seg", 5)); puppy.addPair(n12[3], n7[3], tgString("right hip front lower muscleAct1 seg", 9) + tgString(" seg", 5)); puppy.addPair(n12[3], n6[1], tgString("right hip bottom muscleAct1 seg", 9) + tgString(" seg", 4)); puppy.addPair(n12[3], n8[4], tgString("right hip bottom muscleAct1 seg", 9) + tgString(" seg", 6)); //Extra muscles, to move right hip forward and back: puppy.addPair(n12[0], n7[2], tgString("right hip rear mid muscle seg", 9) + tgString(" seg", 3)); //could also be n3[3] puppy.addPair(n12[0], n7[3], tgString("right hip front mid muscleAct1 seg", 9) + tgString(" seg", 5)); //Leg/hip connections: //Left front leg/shoulder puppy.addPair(n13[4], n9[3], tgString("right outer bicep muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n13[4], n9[2], tgString("right inner bicep muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n13[4], n1[4], tgString("right front abdomen connection muscle3 seg", 13) + tgString(" seg", 1)); puppy.addPair(n13[3], n1[1],tgString("all left foreleg limb front abdomen connection muscle3 seg", 13) + tgString(" seg", 1)); //Active puppy.addPair(n13[2], n1[4],tgString("all left foreleg limb front abdomen connection muscle3 seg", 13) + tgString(" seg", 1)); //Active puppy.addPair(n13[3], n9[3], tgString("right outer tricep muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n13[3], n9[2], tgString("right inner tricep muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n13[2], n9[3], tgString("right outer front tricep muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n13[2], n9[2], tgString("right inner front tricep muscle3 seg", 13) + tgString(" seg", 9)); //Adding muscle to pull up on right front leg: puppy.addPair(n13[4], n9[1], tgString("right mid bicep muscle3 seg", 13) + tgString(" seg", 9)); //Right front leg/shoulder puppy.addPair(n15[4], n11[2], tgString("left inner bicep muscle3 seg", 15) + tgString(" seg", 11)); puppy.addPair(n15[4], n11[3], tgString("left outer bicep muscle3 seg", 15) + tgString(" seg", 11)); puppy.addPair(n15[4], n1[3], tgString("left front abdomen connection muscle3 seg", 12) + tgString(" seg", 1)); //Was n1[2] puppy.addPair(n15[3], n1[2], tgString("all right foreleg limb front abdomen connection muscle3 seg", 15) + tgString(" seg", 1)); //Active puppy.addPair(n15[2], n1[3], tgString("all right foreleg limb front abdomen connection muscle3 seg", 15) + tgString(" seg", 1)); //Active puppy.addPair(n15[3], n11[2], tgString("left inner tricep muscle3 seg", 12) + tgString(" seg", 8)); puppy.addPair(n15[3], n11[3], tgString("left outer tricep muscle3 seg", 12) + tgString(" seg", 8)); puppy.addPair(n15[2], n11[2], tgString("left inner front tricep muscle3 seg", 12) + tgString(" seg", 8)); puppy.addPair(n15[2], n11[3], tgString("left outer front tricep muscle3 seg", 12) + tgString(" seg", 8)); //Adding muscle to pull up on left front leg: puppy.addPair(n15[4], n11[1], tgString("left mid bicep muscle3 seg", 12) + tgString(" seg", 8)); //Left rear leg/hip puppy.addPair(n14[4], n10[3], tgString("right outer thigh muscle3 seg", 11) + tgString(" seg", 7)); puppy.addPair(n14[4], n10[2], tgString("right inner thigh muscle3 seg", 11) + tgString(" seg", 7)); puppy.addPair(n14[4], n5[1],tgString("right rear abdomen connection muscle3 seg", 11) + tgString(" seg", 3)); puppy.addPair(n14[3], n7[1],tgString("right rear abdomen connection muscle3 seg", 11) + tgString(" seg", 5)); puppy.addPair(n14[2], n7[4],tgString("right rear abdomen connection muscle3 seg", 11) + tgString(" seg", 5)); puppy.addPair(n14[3], n10[3], tgString("right outer calf muscle3 seg", 11) + tgString(" seg", 7)); puppy.addPair(n14[3], n10[2], tgString("right inner calf muscle3 seg", 11) + tgString(" seg", 7)); puppy.addPair(n14[2], n10[3], tgString("right outer front calf muscle3 seg", 11) + tgString(" seg", 7)); puppy.addPair(n14[2], n10[2], tgString("right inner front calf muscle3 seg", 11) + tgString(" seg", 7)); //Adding muscle to pull rear right leg up: puppy.addPair(n14[4], n10[1], tgString("right central thigh muscle3 seg", 11) + tgString(" seg", 7)); //Right rear leg/hip puppy.addPair(n16[4], n12[2], tgString("left inner thigh muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n16[4], n12[3], tgString("left outer thigh muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n16[4], n5[2], tgString("left rear abdomen connection muscle3 seg", 13) + tgString(" seg", 3)); puppy.addPair(n16[3], n7[2], tgString("left rear abdomen connection muscle3 seg", 13) + tgString(" seg", 5)); puppy.addPair(n16[2], n7[3], tgString("left rear abdomen connection muscle3 seg", 13) + tgString(" seg", 5)); puppy.addPair(n16[3], n12[2], tgString("left inner calf muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n16[3], n12[3], tgString("left outer calf muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n16[2], n12[2], tgString("left inner front calf muscle3 seg", 13) + tgString(" seg", 9)); puppy.addPair(n16[2], n12[3], tgString("left outer front calf muscle3 seg", 13) + tgString(" seg", 9)); //Adding muscle to pull rear left leg up: puppy.addPair(n16[4], n12[1], tgString("left central thigh muscle3 seg", 13) + tgString(" seg", 9)); //Populate feet with muscles. Todo: think up names to differentiate each! /*for(std::size_t i = (m_segments + m_hips + m_legs); i < children.size(); i++) { tgNodes ni = children[i]->getNodes(); tgNodes ni4 = children[i-4]->getNodes(); puppy.addPair(ni[0],ni[1],tgString("foot muscle seg", i)); puppy.addPair(ni[0],ni[3],tgString("foot muscle seg", i)); puppy.addPair(ni[1],ni[2],tgString("foot muscle seg", i)); puppy.addPair(ni[2],ni[3],tgString("foot muscle seg", i)); puppy.addPair(ni[0],ni[7],tgString("foot muscle2 seg", i)); puppy.addPair(ni[1],ni[4],tgString("foot muscle2 seg", i)); puppy.addPair(ni[2],ni[5],tgString("foot muscle2 seg", i)); puppy.addPair(ni[3],ni[6],tgString("foot muscle2 seg", i)); puppy.addPair(ni[4],ni[5],tgString("foot muscle2 seg", i)); puppy.addPair(ni[4],ni[7],tgString("foot muscle2 seg", i)); puppy.addPair(ni[5],ni[6],tgString("foot muscle2 seg", i)); puppy.addPair(ni[6],ni[7],tgString("foot muscle2 seg", i)); //Connect feet to legs: puppy.addPair(ni4[5],ni[0],tgString("foot muscle2 seg", i) + tgString(" seg", i-4)); puppy.addPair(ni4[5],ni[1],tgString("foot muscle2 seg", i) + tgString(" seg", i-4)); puppy.addPair(ni4[5],ni[2],tgString("foot muscle2 seg", i) + tgString(" seg", i-4)); puppy.addPair(ni4[5],ni[3],tgString("foot muscle2 seg", i) + tgString(" seg", i-4)); puppy.addPair(ni4[0],ni[4],tgString("foot muscle2 seg", i) + tgString(" seg", i-4)); puppy.addPair(ni4[0],ni[5],tgString("foot muscle2 seg", i) + tgString(" seg", i-4)); puppy.addPair(ni4[0],ni[6],tgString("foot muscle2 seg", i) + tgString(" seg", i-4)); puppy.addPair(ni4[0],ni[7],tgString("foot muscle2 seg", i) + tgString(" seg", i-4)); }*/ }
void BigDoxieNoFeet::addRodsVertebra(tgStructure& s){ s.addPair(0,1,"rod"); s.addPair(0,2,"rod"); s.addPair(0,3,"rod"); s.addPair(0,4,"rod"); }
void BigDoxieNoFeet::addRodsHip(tgStructure& s){ s.addPair(0,1,"rod"); s.addPair(0,2,"rod"); s.addPair(0,3,"rod"); }
void BigPuppySymmetricSpiralSegments::addRodsVertebra(tgStructure& s){ s.addPair(0,1,"rod"); s.addPair(0,2,"rod"); s.addPair(0,3,"rod"); s.addPair(0,4,"rod"); }
void BigPuppySymmetricSpiralSegments::addMuscles(tgStructure& puppy){ //Time to add the muscles to the structure. Todo: try to clean this up some more. std::vector<tgStructure*> children = puppy.getChildren(); for(std::size_t i = 2; i < (children.size() - (m_hips + m_legs)); i++) { tgNodes n0 = children[i-2]->getNodes(); tgNodes n1 = children[i-1]->getNodes(); tgNodes n2 = children[i]->getNodes(); if(i==2){ //Extra muscles, to keep front vertebra from swinging. puppy.addPair(n0[3], n1[3], tgString("spine all main front upper right muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[3], n1[4], tgString("spine all main front upper left muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[4], n1[3], tgString("spine all main front lower right muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[4], n1[4], tgString("spine all main front lower left muscleAct2 seg", i-2) + tgString(" seg", i-1)); } //Add muscles to the puppy if(i < 3){ if(i % 2 == 0){ //front puppy.addPair(n0[1], n1[3], tgString("spine all main front lower right muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[1], n1[4], tgString("spine all main front lower left muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n1[3], tgString("spine all main front upper right muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n1[4], tgString("spine main front upper left muscleAct1 seg", i-2) + tgString(" seg", i-1)); } else{ //rear puppy.addPair(n0[1], n1[3], tgString("spine all main rear upper left muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[1], n1[4], tgString("spine all main rear lower left muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n1[3], tgString("spine all main rear upper right muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n1[4], tgString("spine all main rear lower right muscleAct2 seg", i-2) + tgString(" seg", i-1)); } } if(i < 7){//Was 6 if(i % 2 == 0){ puppy.addPair(n0[1], n2[4], tgString("spine2 bottom muscleAct2 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n2[3], tgString("spine2 top muscleAct1 seg", i-2) + tgString(" seg", i-1)); } else{ puppy.addPair(n0[1], n2[4], tgString("spine2 lateral left muscleAct1 seg", i-2) + tgString(" seg", i-1)); puppy.addPair(n0[2], n2[3], tgString("spine2 lateral right muscleAct1 seg", i-2) + tgString(" seg", i-1)); } } if(i > 0 && i < 7){ if(i % 2 == 0){//rear puppy.addPair(n1[1], n2[3], tgString("spine all main rear upper left muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[1], n2[4], tgString("spine all main rear lower left muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[3], tgString("spine all main rear upper right muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[4], tgString("spine main rear lower right muscleAct2 seg", i-1) + tgString(" seg", i)); } else{//front puppy.addPair(n1[1], n2[3], tgString("spine all main front lower right muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[1], n2[4], tgString("spine all main front lower left muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[3], tgString("spine all main front upper right muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[4], tgString("spine all main front upper left muscleAct1 seg", i-1) + tgString(" seg", i)); } } if (i >= 2 && i < 7){ puppy.addPair(n1[3], n2[3], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[4], n2[3], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[3], n2[4], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[4], n2[4], tgString("spine spiral muscleAct1 seg", i-1) + tgString(" seg", i)); } if(i == 6){ //rear puppy.addPair(n1[1], n2[2], tgString("spine all rear lower left muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[2], tgString("spine all rear lower right muscleAct2 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[1], n2[1], tgString("spine all rear upper left muscleAct1 seg", i-1) + tgString(" seg", i)); puppy.addPair(n1[2], n2[1], tgString("spine all rear upper right muscleAct1 seg", i-1) + tgString(" seg", i)); } } //Now add muscles to hips.... tgNodes n0 = children[0]->getNodes(); tgNodes n1 = children[1]->getNodes(); tgNodes n2 = children[2]->getNodes(); tgNodes n3 = children[3]->getNodes(); tgNodes n4 = children[4]->getNodes(); tgNodes n5 = children[5]->getNodes(); tgNodes n6 = children[6]->getNodes(); tgNodes n7 = children[7]->getNodes(); tgNodes n8 = children[8]->getNodes(); tgNodes n9 = children[9]->getNodes(); tgNodes n10 = children[10]->getNodes(); tgNodes n11 = children[11]->getNodes(); tgNodes n12 = children[12]->getNodes(); tgNodes n13 = children[13]->getNodes(); tgNodes n14 = children[14]->getNodes(); //Adding long muscles to spine, for bending/arching: //puppy.addPair(n0[2], n6[3], tgString("spine secondary top arching muscleAct seg", 0) + tgString(" seg", 6)); //Change these to something other than "spine " or "spine2" when it's time to implement new code for them! //puppy.addPair(n0[1], n6[4], tgString("spine bottom arching muscleAct seg", 0) + tgString(" seg", 6)); //puppy.addPair(n1[4], n5[1], tgString("spine right lateral arching muscleAct seg", 1) + tgString(" seg", 5)); //puppy.addPair(n1[3], n5[2], tgString("spine left lateral arching muscleAct seg", 1) + tgString(" seg", 5)); //Left shoulder muscles puppy.addPair(n7[1], n1[1], tgString("all left hip shoulder rear upper muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n7[1], n1[4], tgString("all left hip shoulder front upper muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n7[1], n0[2], tgString("all left hip shoulder front top muscleAct1 seg", 6) + tgString(" seg", 0)); puppy.addPair(n7[1], n2[3], tgString("all left hip shoulder rear top muscleAct1 seg", 6) + tgString(" seg", 2)); puppy.addPair(n7[3], n1[1], tgString("all left hip shoulder rear lower muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n7[3], n1[4], tgString("all left hip shoulder front lower muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n7[3], n0[1], tgString("all left hip shoulder front bottom muscleAct1 seg", 6) + tgString(" seg", 0)); puppy.addPair(n7[3], n2[4], tgString("all left hip shoulder rear bottom muscleAct1 seg", 6) + tgString(" seg", 2)); //Extra muscles, to move left shoulder forward and back: puppy.addPair(n7[0], n1[1], tgString("all left hip shoulder rear mid muscleAct1 seg", 6) + tgString(" seg", 1)); puppy.addPair(n7[0], n1[4], tgString("all left hip shoulder front mid muscleAct1 seg", 6) + tgString(" seg", 1)); //Left hip muscles puppy.addPair(n8[1], n5[1], tgString("all left hip rear upper muscleAct1 seg", 7) + tgString(" seg", 5)); puppy.addPair(n8[1], n5[4], tgString("all left hip front upper muscleAct1 seg", 7) + tgString(" seg", 5)); puppy.addPair(n8[1], n4[2], tgString("all left hip front top muscleAct1 seg", 7) + tgString(" seg", 4)); puppy.addPair(n8[1], n6[3], tgString("all left hip rear top muscleAct1 seg", 7) + tgString(" seg", 4)); puppy.addPair(n8[3], n5[1], tgString("all left hip rear lower muscleAct1 seg", 7) + tgString(" seg", 5)); puppy.addPair(n8[3], n5[4], tgString("all left hip front lower muscleAct1 seg", 7) + tgString(" seg", 5)); puppy.addPair(n8[3], n4[1], tgString("all left hip front bottom muscleAct1 seg", 7) + tgString(" seg", 4)); puppy.addPair(n8[3], n6[4], tgString("all left hip front bottom muscleAct1 seg", 7) + tgString(" seg", 6)); //Extra muscles, to move left hip forward and back: puppy.addPair(n8[0], n5[1], tgString("all left hip rear mid muscleAct1 seg", 7) + tgString(" seg", 3)); puppy.addPair(n8[0], n5[4], tgString("all left hip front mid muscleAct1 seg", 7) + tgString(" seg", 5)); //Right shoulder muscles puppy.addPair(n9[1], n1[2], tgString("all right hip shoulder rear upper muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n9[1], n1[3], tgString("all right hip shoulder front upper muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n9[1], n0[2], tgString("all right hip shoulder front top muscleAct1 seg", 8) + tgString(" seg", 0)); puppy.addPair(n9[1], n2[3], tgString("all right hip shoulder rear top muscleAct1 seg", 8) + tgString(" seg", 2)); puppy.addPair(n9[3], n1[2], tgString("all right hip shoulder rear lower muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n9[3], n1[3], tgString("all right hip shoulder front lower muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n9[3], n0[1], tgString("all right hip shoulder front bottom muscleAct1 seg", 8) + tgString(" seg", 0)); puppy.addPair(n9[3], n2[4], tgString("all right hip shoulder rear bottom muscleAct1 seg", 8) + tgString(" seg", 2)); //Extra muscles, to move right shoulder forward and back: puppy.addPair(n9[0], n1[2], tgString("all right hip shoulder rear mid muscleAct1 seg", 8) + tgString(" seg", 1)); puppy.addPair(n9[0], n1[3], tgString("all right hip shoulder front mid muscleAct1 seg", 8) + tgString(" seg", 1)); //Right hip muscles puppy.addPair(n10[1], n5[2], tgString("all right hip rear upper muscleAct1 seg", 9) + tgString(" seg", 5)); puppy.addPair(n10[1], n5[3], tgString("all right hip front upper muscleAct1 seg", 9) + tgString(" seg", 5)); puppy.addPair(n10[1], n4[2], tgString("all right hip front top muscleAct1 seg", 9) + tgString(" seg", 4)); puppy.addPair(n10[1], n6[3], tgString("all right hip rear top muscleAct1 seg", 9) + tgString(" seg", 4)); puppy.addPair(n10[3], n5[2], tgString("all right hip rear lower muscleAct1 seg", 9) + tgString(" seg", 5)); puppy.addPair(n10[3], n5[3], tgString("all right hip front lower muscleAct1 seg", 9) + tgString(" seg", 5)); puppy.addPair(n10[3], n4[1], tgString("all right hip bottom muscleAct1 seg", 9) + tgString(" seg", 4)); puppy.addPair(n10[3], n6[4], tgString("all right hip bottom muscleAct1 seg", 9) + tgString(" seg", 6)); //Extra muscles, to move right hip forward and back: puppy.addPair(n10[0], n5[2], tgString("all right hip rear mid muscleAct1 seg", 9) + tgString(" seg", 3)); //could also be n3[3] puppy.addPair(n10[0], n5[3], tgString("all right hip front mid muscleAct1 seg", 9) + tgString(" seg", 5)); //Leg/hip connections: //Left front leg/shoulder puppy.addPair(n11[4], n7[3], tgString("right leg outer bicep muscle seg", 10) + tgString(" seg", 6)); puppy.addPair(n11[4], n7[2], tgString("right leg inner bicep muscle seg", 10) + tgString(" seg", 6)); puppy.addPair(n11[4], n1[4], tgString("right leg front abdomen connection muscle seg", 10) + tgString(" seg", 1)); puppy.addPair(n11[3], n1[1],tgString("right leg front abdomen connection muscle seg", 11) + tgString(" seg", 5)); puppy.addPair(n11[2], n1[4],tgString("right leg front abdomen connection muscle seg", 11) + tgString(" seg", 5)); puppy.addPair(n11[3], n7[3], tgString("right leg outer tricep muscle seg", 10) + tgString(" seg", 6)); puppy.addPair(n11[3], n7[2], tgString("right leg inner tricep muscle seg", 10) + tgString(" seg", 6)); puppy.addPair(n11[2], n7[3], tgString("right leg outer front tricep muscle seg", 10) + tgString(" seg", 6)); puppy.addPair(n11[2], n7[2], tgString("right leg inner front tricep muscle seg", 10) + tgString(" seg", 6)); //Adding muscle to pull up on right front leg: puppy.addPair(n11[4], n7[1], tgString("right legAct mid bicep muscle3 seg", 10) + tgString(" seg", 6)); //Right front leg/shoulder puppy.addPair(n13[4], n9[2], tgString("left leg inner bicep muscle seg", 12) + tgString(" seg", 8)); puppy.addPair(n13[4], n9[3], tgString("left leg outer bicep muscle seg", 12) + tgString(" seg", 8)); puppy.addPair(n13[4], n1[3], tgString("left leg front abdomen connection muscle seg", 12) + tgString(" seg", 1)); puppy.addPair(n13[3], n1[2], tgString("left leg front abdomen connection muscle seg", 13) + tgString(" seg", 5)); puppy.addPair(n13[2], n1[3], tgString("left leg front abdomen connection muscle seg", 13) + tgString(" seg", 5)); puppy.addPair(n13[3], n9[2], tgString("left leg inner tricep muscle seg", 12) + tgString(" seg", 8)); puppy.addPair(n13[3], n9[3], tgString("left leg outer tricep muscle seg", 12) + tgString(" seg", 8)); puppy.addPair(n13[2], n9[2], tgString("left leg inner front tricep muscle seg", 12) + tgString(" seg", 8)); puppy.addPair(n13[2], n9[3], tgString("left leg outer front tricep muscle seg", 12) + tgString(" seg", 8)); //Adding muscle to pull up on left front leg: puppy.addPair(n13[4], n9[1], tgString("left legAct mid bicep muscle3 seg", 12) + tgString(" seg", 8)); //Left rear leg/hip puppy.addPair(n12[4], n8[3], tgString("right leg outer thigh muscle seg", 11) + tgString(" seg", 7)); puppy.addPair(n12[4], n8[2], tgString("right leg inner thigh muscle seg", 11) + tgString(" seg", 7)); puppy.addPair(n12[4], n3[1],tgString("right leg rear abdomen connection muscle seg", 11) + tgString(" seg", 3)); puppy.addPair(n12[3], n5[1],tgString("right leg rear abdomen connection muscle seg", 11) + tgString(" seg", 5)); puppy.addPair(n12[2], n5[4],tgString("right leg rear abdomen connection muscle seg", 11) + tgString(" seg", 5)); puppy.addPair(n12[3], n8[3], tgString("right leg outer calf muscle seg", 11) + tgString(" seg", 7)); puppy.addPair(n12[3], n8[2], tgString("right leg inner calf muscle seg", 11) + tgString(" seg", 7)); puppy.addPair(n12[2], n8[3], tgString("right leg outer front calf muscle seg", 11) + tgString(" seg", 7)); puppy.addPair(n12[2], n8[2], tgString("right leg inner front calf muscle seg", 11) + tgString(" seg", 7)); //Adding muscle to pull rear right leg up: puppy.addPair(n12[4], n8[1], tgString("right legAct central thigh muscle3 seg", 11) + tgString(" seg", 7)); //Right rear leg/hip puppy.addPair(n14[4], n10[2], tgString("left leg inner thigh muscle seg", 13) + tgString(" seg", 9)); puppy.addPair(n14[4], n10[3], tgString("left leg outer thigh muscle seg", 13) + tgString(" seg", 9)); puppy.addPair(n14[4], n3[2], tgString("left leg rear abdomen connection muscle seg", 13) + tgString(" seg", 3)); puppy.addPair(n14[3], n5[2], tgString("left leg rear abdomen connection muscle seg", 13) + tgString(" seg", 5)); puppy.addPair(n14[2], n5[3], tgString("left leg rear abdomen connection muscle seg", 13) + tgString(" seg", 5)); puppy.addPair(n14[3], n10[2], tgString("left leg inner calf muscle seg", 13) + tgString(" seg", 9)); puppy.addPair(n14[3], n10[3], tgString("left leg outer calf muscle seg", 13) + tgString(" seg", 9)); puppy.addPair(n14[2], n10[2], tgString("left leg inner front calf muscle seg", 13) + tgString(" seg", 9)); puppy.addPair(n14[2], n10[3], tgString("left leg outer front calf muscle seg", 13) + tgString(" seg", 9)); //Adding muscle to pull rear left leg up: puppy.addPair(n14[4], n10[1], tgString("left legAct central thigh muscle3 seg", 13) + tgString(" seg", 9)); }
void T6Model::addActuators(tgStructure& s) { s.addPair(0, 4, "muscle"); s.addPair(0, 5, "muscle"); s.addPair(0, 8, "muscle"); s.addPair(0, 10, "muscle"); s.addPair(1, 6, "muscle"); s.addPair(1, 7, "muscle"); s.addPair(1, 8, "muscle"); s.addPair(1, 10, "muscle"); s.addPair(2, 4, "muscle"); s.addPair(2, 5, "muscle"); s.addPair(2, 9, "muscle"); s.addPair(2, 11, "muscle"); s.addPair(3, 7, "muscle"); s.addPair(3, 6, "muscle"); s.addPair(3, 9, "muscle"); s.addPair(3, 11, "muscle"); s.addPair(4, 2, "muscle"); s.addPair(4, 10, "muscle"); s.addPair(4, 11, "muscle"); s.addPair(5, 8, "muscle"); s.addPair(5, 9, "muscle"); s.addPair(6, 10, "muscle"); s.addPair(6, 11, "muscle"); s.addPair(7, 8, "muscle"); s.addPair(7, 9, "muscle"); }
void BigPuppySymmetricArching::addRodsVertebra(tgStructure& s) { s.addPair(0,1,"rod"); s.addPair(0,2,"rod"); s.addPair(0,3,"rod"); s.addPair(0,4,"rod"); }
void BigPuppySymmetricSpiral2::addRodsHip(tgStructure& s){ s.addPair(0,1,"rod"); s.addPair(0,2,"rod"); s.addPair(0,3,"rod"); }
void BigPuppySymmetricSpiral2::addRodsFoot(tgStructure& s){ s.addPair(0,6,"rod"); s.addPair(1,7,"rod"); s.addPair(2,4,"rod"); s.addPair(3,5,"rod"); }