comparison src/Robot.cpp @ 11:4727e16018cd

change src. punch motion using array
author tokumoritaichirou@w-133-13-243-110.cc.u-ryukyu.ac.jp
date Wed, 03 Feb 2010 12:02:57 +0900
parents 5727d511a13a
children d45a95c697c3
comparison
equal deleted inserted replaced
10:5727d511a13a 11:4727e16018cd
36 CollisionNode* collisionNode; 36 CollisionNode* collisionNode;
37 37
38 bodyForm->setMatrix(osg::Matrix()); 38 bodyForm->setMatrix(osg::Matrix());
39 39
40 collisionNode = new CollisionNode("Body-Node1", new osg::Sphere(osg::Vec3(0, 0, 0), 50)); 40 collisionNode = new CollisionNode("Body-Node1", new osg::Sphere(osg::Vec3(0, 0, 0), 50));
41 bodyForm->addChild(collisionNode->getGeode()); 41 //bodyForm->addChild(collisionNode->getGeode());
42 collisionNodeList.push_back(collisionNode); 42 collisionNodeList.push_back(collisionNode);
43 collisionNode = new CollisionNode("Body-Node2", new osg::Sphere(osg::Vec3(0, 0, 60), 50)); 43 collisionNode = new CollisionNode("Body-Node2", new osg::Sphere(osg::Vec3(0, 0, 60), 50));
44 bodyForm->addChild(collisionNode->getGeode()); 44 //bodyForm->addChild(collisionNode->getGeode());
45 collisionNodeList.push_back(collisionNode); 45 collisionNodeList.push_back(collisionNode);
46 collisionNode = new CollisionNode("Body-Node3", new osg::Sphere(osg::Vec3(0, 0, -60), 50)); 46 collisionNode = new CollisionNode("Body-Node3", new osg::Sphere(osg::Vec3(0, 0, -60), 50));
47 bodyForm->addChild(collisionNode->getGeode()); 47 //bodyForm->addChild(collisionNode->getGeode());
48 collisionNodeList.push_back(collisionNode); 48 collisionNodeList.push_back(collisionNode);
49 collisionNode = new CollisionNode("Left-Arm-Node", new osg::Sphere(osg::Vec3(100, -40, -70), 30)); 49 collisionNode = new CollisionNode("Left-Arm-Node", new osg::Sphere(osg::Vec3(100, -40, -70), 30));
50 leftUpperArmForm->addChild(collisionNode->getGeode()); 50 //leftUpperArmForm->addChild(collisionNode->getGeode());
51 collisionNodeList.push_back(collisionNode); 51 collisionNodeList.push_back(collisionNode);
52 collisionNode = new CollisionNode("Right-Arm-Node", new osg::Sphere(osg::Vec3(-100, -40, -70), 30)); 52 collisionNode = new CollisionNode("Right-Arm-Node", new osg::Sphere(osg::Vec3(-100, -40, -70), 30));
53 rightUpperArmForm->addChild(collisionNode->getGeode()); 53 //rightUpperArmForm->addChild(collisionNode->getGeode());
54 collisionNodeList.push_back(collisionNode); 54 collisionNodeList.push_back(collisionNode);
55 collisionNode = new CollisionNode("Left-Leg-Node", new osg::Sphere(osg::Vec3(0, 0, 0), 30)); 55 collisionNode = new CollisionNode("Left-Leg-Node", new osg::Sphere(osg::Vec3(0, 0, 0), 30));
56 leftUpperLegForm->addChild(collisionNode->getGeode()); 56 //leftUpperLegForm->addChild(collisionNode->getGeode());
57 collisionNodeList.push_back(collisionNode); 57 collisionNodeList.push_back(collisionNode);
58 collisionNode = new CollisionNode("Right-Leg-Node", new osg::Sphere(osg::Vec3(0, 0, 0), 30)); 58 collisionNode = new CollisionNode("Right-Leg-Node", new osg::Sphere(osg::Vec3(0, 0, 0), 30));
59 rightUpperLegForm->addChild(collisionNode->getGeode()); 59 //rightUpperLegForm->addChild(collisionNode->getGeode());
60 collisionNodeList.push_back(collisionNode); 60 collisionNodeList.push_back(collisionNode);
61 61
62 SearchGeodeVisitor gvisitor = SearchGeodeVisitor(); 62 SearchGeodeVisitor gvisitor = SearchGeodeVisitor();
63 63
64 gvisitor.setSearchGeodeName("Collision_right_leg1_geode"); 64 gvisitor.setSearchGeodeName("Collision_right_leg1_geode");
213 } 213 }
214 214
215 /* Robotの各モーションを定義 */ 215 /* Robotの各モーションを定義 */
216 216
217 void Robot::punch() { 217 void Robot::punch() {
218 moveCount += 0.5;
219 float sinVal = sin(moveCount); 218 float sinVal = sin(moveCount);
220 float cosVal = cos(moveCount); 219 float cosVal = cos(moveCount);
221 220 double punch[6][3] = {{5.0,-30.0,-30.0},{10.0,-30.0,-90.0},{15.0,-120.0,60.0}};
222 osg::Matrixd roteMatrix; 221 osg::Matrixd roteMatrix;
223 osg::Matrixd dirMatrix; 222 osg::Matrixd dirMatrix;
224 osg::Matrixd accMatrix; 223 osg::Matrixd accMatrix;
224
225 bodyForm->setMatrix(osg::Matrixf::rotate(osg::DegreesToRadians(punch[(int)moveCount%3][0]), osg::Vec3(0,0,1)));
226 rightUpperArmForm->setMatrix(osg::Matrixf::rotate(osg::DegreesToRadians(punch[(int)moveCount%3][1]), osg::Vec3(1,0,0)));
227 rightDownArmForm->setMatrix(osg::Matrixf::rotate(osg::DegreesToRadians(punch[(int)moveCount%3][2]), osg::Vec3(1,0,0)));
228 moveCount += 1;
225 //if(moveCount <= 0.5){ 229 //if(moveCount <= 0.5){
226 bodyForm->setMatrix(osg::Matrixf::rotate(osg::DegreesToRadians(sinVal*10.0), osg::Vec3(0,0,1))); 230 //bodyForm->setMatrix(osg::Matrixf::rotate(osg::DegreesToRadians(sinVal*10.0), osg::Vec3(0,0,1)));
227 rightUpperArmForm->setMatrix(osg::Matrixf::rotate(osg::DegreesToRadians(sinVal*60.0-90), osg::Vec3(1,0,0))); 231 //rightUpperArmForm->setMatrix(osg::Matrixf::rotate(osg::DegreesToRadians(sinVal*60.0-90), osg::Vec3(1,0,0)));
228 //rightDownArmForm->setMatrix(osg::Matrixf::rotate(osg::DegreesToRadians(sinVal*60.0-20), osg::Vec3(1,0,0))); 232 //rightDownArmForm->setMatrix(osg::Matrixf::rotate(osg::DegreesToRadians(sinVal*60.0-20), osg::Vec3(1,0,0)));
229 //} 233 //}
230 } 234 }
231 235
232 void Robot::walk() { 236 void Robot::walk() {
269 velocity = osg::Vec3(velocity.x(), velocity.y(), 4); 273 velocity = osg::Vec3(velocity.x(), velocity.y(), 4);
270 acceleration = osg::Vec3(acceleration.x(), acceleration.y(), -0.3); 274 acceleration = osg::Vec3(acceleration.x(), acceleration.y(), -0.3);
271 } 275 }
272 276
273 void Robot::stop() { 277 void Robot::stop() {
274 moveCount = 0; 278 //moveCount = 0;
275 motionTime = 0; 279 motionTime = 0;
276 velocity = osg::Vec3(0,0,0); 280 velocity = osg::Vec3(0,0,0);
277 angularVelocity = osg::Vec3(0,0,0); 281 angularVelocity = osg::Vec3(0,0,0);
278 } 282 }
279 283