Mercurial > hg > Members > e075743
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 |