这篇教程C++ B2_NOT_USED函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中B2_NOT_USED函数的典型用法代码示例。如果您正苦于以下问题:C++ B2_NOT_USED函数的具体用法?C++ B2_NOT_USED怎么用?C++ B2_NOT_USED使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了B2_NOT_USED函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: ProcessThree// Possible regions:// - points[2]// - edge points[0]-points[2]// - edge points[1]-points[2]// - inside the trianglestatic int32 ProcessThree(b2Vec2* x1, b2Vec2* x2, b2Vec2* p1s, b2Vec2* p2s, b2Vec2* points){ b2Vec2 a = points[0]; b2Vec2 b = points[1]; b2Vec2 c = points[2]; b2Vec2 ab = b - a; b2Vec2 ac = c - a; b2Vec2 bc = c - b; float32 sn = -b2Dot(a, ab), sd = b2Dot(b, ab); float32 tn = -b2Dot(a, ac), td = b2Dot(c, ac); float32 un = -b2Dot(b, bc), ud = b2Dot(c, bc); // In vertex c region? if (td <= 0.0f && ud <= 0.0f) { // Single point *x1 = p1s[2]; *x2 = p2s[2]; p1s[0] = p1s[2]; p2s[0] = p2s[2]; points[0] = points[2]; return 1; } // Should not be in vertex a or b region. B2_NOT_USED(sd); B2_NOT_USED(sn); b2Assert(sn > 0.0f || tn > 0.0f); b2Assert(sd > 0.0f || un > 0.0f); float32 n = b2Cross(ab, ac);#ifdef TARGET_FLOAT32_IS_FIXED n = (n < 0.0)? -1.0 : ((n > 0.0)? 1.0 : 0.0);#endif // Should not be in edge ab region. float32 vc = n * b2Cross(a, b); b2Assert(vc > 0.0f || sn > 0.0f || sd > 0.0f); // In edge bc region? float32 va = n * b2Cross(b, c); if (va <= 0.0f && un >= 0.0f && ud >= 0.0f && (un+ud) > 0.0f) { b2Assert(un + ud > 0.0f); float32 lambda = un / (un + ud); *x1 = p1s[1] + lambda * (p1s[2] - p1s[1]); *x2 = p2s[1] + lambda * (p2s[2] - p2s[1]); p1s[0] = p1s[2]; p2s[0] = p2s[2]; points[0] = points[2]; return 2; } // In edge ac region? float32 vb = n * b2Cross(c, a); if (vb <= 0.0f && tn >= 0.0f && td >= 0.0f && (tn+td) > 0.0f) { b2Assert(tn + td > 0.0f); float32 lambda = tn / (tn + td); *x1 = p1s[0] + lambda * (p1s[2] - p1s[0]); *x2 = p2s[0] + lambda * (p2s[2] - p2s[0]); p1s[1] = p1s[2]; p2s[1] = p2s[2]; points[1] = points[2]; return 2; } // Inside the triangle, compute barycentric coordinates float32 denom = va + vb + vc; b2Assert(denom > 0.0f); denom = 1.0f / denom;#ifdef TARGET_FLOAT32_IS_FIXED *x1 = denom * (va * p1s[0] + vb * p1s[1] + vc * p1s[2]); *x2 = denom * (va * p2s[0] + vb * p2s[1] + vc * p2s[2]);#else float32 u = va * denom; float32 v = vb * denom; float32 w = 1.0f - u - v; *x1 = u * p1s[0] + v * p1s[1] + w * p1s[2]; *x2 = u * p2s[0] + v * p2s[1] + w * p2s[2];#endif return 3;}
开发者ID:6301158,项目名称:KinectHacks,代码行数:92,
示例2: B2_NOT_USEDbool b2PulleyJoint::SolvePositionConstraints(float32 baumgarte){ B2_NOT_USED(baumgarte); b2Body* b1 = m_bodyA; b2Body* b2 = m_bodyB; b2Vec2 s1 = m_groundAnchor1; b2Vec2 s2 = m_groundAnchor2; b2Vec2 r1 = b2Mul(b1->m_xf.R, m_localAnchor1 - b1->GetLocalCenter()); b2Vec2 r2 = b2Mul(b2->m_xf.R, m_localAnchor2 - b2->GetLocalCenter()); b2Vec2 p1 = b1->m_sweep.c + r1; b2Vec2 p2 = b2->m_sweep.c + r2; // Get the pulley axes. b2Vec2 u1 = p1 - s1; b2Vec2 u2 = p2 - s2; float32 length1 = u1.Length(); float32 length2 = u2.Length(); if (length1 > 10.0f * b2_linearSlop) { u1 *= 1.0f / length1; } else { u1.SetZero(); } if (length2 > 10.0f * b2_linearSlop) { u2 *= 1.0f / length2; } else { u2.SetZero(); } // Compute effective mass. float32 cr1u1 = b2Cross(r1, u1); float32 cr2u2 = b2Cross(r2, u2); float32 m1 = b1->m_invMass + b1->m_invI * cr1u1 * cr1u1; float32 m2 = b2->m_invMass + b2->m_invI * cr2u2 * cr2u2; float32 mass = m1 + m_ratio * m_ratio * m2; if (mass > 0.0f) { mass = 1.0f / mass; } float32 C = m_constant - length1 - m_ratio * length2; float32 linearError = b2Abs(C); float32 impulse = -mass * C; b2Vec2 P1 = -impulse * u1; b2Vec2 P2 = -m_ratio * impulse * u2; b1->m_sweep.c += b1->m_invMass * P1; b1->m_sweep.a += b1->m_invI * b2Cross(r1, P1); b2->m_sweep.c += b2->m_invMass * P2; b2->m_sweep.a += b2->m_invI * b2Cross(r2, P2); b1->SynchronizeTransform(); b2->SynchronizeTransform(); return linearError < b2_linearSlop;}
开发者ID:brigosx,项目名称:pybox2d-android,代码行数:73,
示例3: b2AllocDefault// Default implementation of b2AllocFunction.static void* b2AllocDefault(int32 size, void* callbackData){ B2_NOT_USED(callbackData); return malloc(size);}
开发者ID:SweedRaver,项目名称:FluidAnimations,代码行数:6,
示例4: post_solve virtual void post_solve(const b2Contact* contact, const b2ContactImpulse* impulse) { B2_NOT_USED(contact); B2_NOT_USED(impulse); }
开发者ID:navneetagarwal,项目名称:Box2d-Project,代码行数:5,
示例5: B2_NOT_USEDbool b2EdgeShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const{ B2_NOT_USED(xf); B2_NOT_USED(p); return false;}
开发者ID:AbePralle,项目名称:Plasmacore,代码行数:6,
示例6: mouse_move void mouse_move(const b2Vec2& p) { B2_NOT_USED(p); }
开发者ID:navneetagarwal,项目名称:Box2d-Project,代码行数:1,
示例7: begin_contact // Callbacks for derived classes. virtual void begin_contact(b2Contact* contact) { B2_NOT_USED(contact); }
开发者ID:navneetagarwal,项目名称:Box2d-Project,代码行数:2,
示例8: B2_NOT_USEDfloat32 b2ElasticRopeJoint::GetReactionTorque(float32 inv_dt) const{ B2_NOT_USED(inv_dt); return 0.0f;}
开发者ID:InPieces,项目名称:b2ElasticRopeJoint,代码行数:5,
示例9: mainint main(int argc, char *argv[]){ QApplication a(argc, argv); // Set up the scene QGraphicsScene scene; QRect sceneRect(0,0,740,540); scene.setSceneRect(sceneRect); scene.setItemIndexMethod(QGraphicsScene::NoIndex); Team A(5,QColor(0,0,255)); Team B(5,QColor(255,255,0),50); A.addToScene(scene); B.addToScene(scene); // Set up the view port MyGraphicsView v; v.setRenderHint(QPainter::Antialiasing); v.setCacheMode(QGraphicsView::CacheBackground); v.setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate); v.setDragMode(QGraphicsView::ScrollHandDrag); v.setScene(&scene); v.show(); // Call circle advance for every time interval of 1000/33 QTimer timer; QObject::connect(&timer, SIGNAL(timeout()), &scene, SLOT(advance())); timer.start(1000 / 33); a.exec(); #ifndef __NO_BOX2D__ B2_NOT_USED(argc); B2_NOT_USED(argv); // Define the ground body. b2BodyDef groundBodyDef[4]; groundBodyDef[0].position.Set(0.0f, 2.7f); //top groundBodyDef[1].position.Set(0.0f, -2.7f); //bottom groundBodyDef[2].position.Set(-3.7f, 0.0f); //left groundBodyDef[3].position.Set(3.7f, 0.0f); //right // Call the body factory which allocates memory for the ground body // from a pool and creates the ground box shape (also from a pool). // The body is also added to the world. b2Body* groundBody[4]; for(unsigned int i = 0; i < 4; i += 1){ groundBody[i] = m_world->CreateBody(&groundBodyDef[i]); } // Define the ground box shape. b2PolygonShape groundBox[4]; // The extents are the half-widths of the box. groundBox[0].SetAsBox(3.7f, 0.003f); groundBox[1].SetAsBox(3.7f, 0.003f); groundBox[2].SetAsBox(0.003f, 2.7f); groundBox[3].SetAsBox(0.003f, 2.7f); // Add the ground fixture to the ground body. for(unsigned int i = 0; i < 4; i += 1){ groundBody[i]->CreateFixture(&groundBox[i], 0.0f); } // Define the dynamic body. We set its position and call the body factory. b2BodyDef bodyDef[6]; for(unsigned int i = 0; i < 6; i += 1){ bodyDef[i].type = b2_dynamicBody; } bodyDef[0].position.Set(1.0f, 2.0f); bodyDef[1].position.Set(1.0f, 0.0f); bodyDef[2].position.Set(1.0f, -2.0f); bodyDef[3].position.Set(2.0f, 1.0f); bodyDef[4].position.Set(2.0f, -1.0f); bodyDef[5].position.Set(3.0f, 0.0f); b2Body* body[6]; for(unsigned int i = 0; i < 6; i += 1){ body[i] = m_world->CreateBody(&bodyDef[i]); b2Vec2 pos = body[i]->GetPosition(); body[i]->SetTransform(pos, 90.0); } // Define another box shape for our dynamic body. b2PolygonShape dynamicBox; dynamicBox.SetAsBox(0.09f, 0.09f); b2Vec2 vertices[19]; vertices[0].Set(-0.090000f, 0.000000f); vertices[1].Set(-0.087385f, -0.021538f); vertices[2].Set(-0.079691f, -0.041825f); vertices[3].Set(-0.067366f, -0.059681f); vertices[4].Set(-0.051126f, -0.074069f); vertices[5].Set(-0.031914f, -0.084151f); vertices[6].Set(-0.010848f, -0.089344f); vertices[7].Set(0.010848f, -0.089344f); vertices[8].Set(0.031914f, -0.084151f); vertices[9].Set(0.051126f, -0.074069f);//.........这里部分代码省略.........
开发者ID:uWaterloo-IEEE-StudentBranch,项目名称:WarBots-SSL,代码行数:101,
示例10: B2_NOT_USEDqreal b2RopeJoint::GetReactionTorque(qreal inv_dt) const{ B2_NOT_USED(inv_dt); return 0.0f;}
开发者ID:KDE,项目名称:kolf,代码行数:5,
示例11: B2_NOT_USEDbool b2RevoluteJoint::SolvePositionConstraints(float32 baumgarte){ // TODO_ERIN block solve with limit. B2_NOT_USED(baumgarte); b2Body* b1 = m_bodyA; b2Body* b2 = m_bodyB; float32 angularError = 0.0f; float32 positionError = 0.0f; // Solve angular limit constraint. if (m_enableLimit && m_limitState != e_inactiveLimit) { float32 angle = b2->m_sweep.a - b1->m_sweep.a - m_referenceAngle; float32 limitImpulse = 0.0f; if (m_limitState == e_equalLimits) { // Prevent large angular corrections float32 C = b2Clamp(angle - m_lowerAngle, -b2_maxAngularCorrection, b2_maxAngularCorrection); limitImpulse = -m_motorMass * C; angularError = b2Abs(C); } else if (m_limitState == e_atLowerLimit) { float32 C = angle - m_lowerAngle; angularError = -C; // Prevent large angular corrections and allow some slop. C = b2Clamp(C + b2_angularSlop, -b2_maxAngularCorrection, 0.0f); limitImpulse = -m_motorMass * C; } else if (m_limitState == e_atUpperLimit) { float32 C = angle - m_upperAngle; angularError = C; // Prevent large angular corrections and allow some slop. C = b2Clamp(C - b2_angularSlop, 0.0f, b2_maxAngularCorrection); limitImpulse = -m_motorMass * C; } b1->m_sweep.a -= b1->m_invI * limitImpulse; b2->m_sweep.a += b2->m_invI * limitImpulse; b1->SynchronizeTransform(); b2->SynchronizeTransform(); } // Solve point-to-point constraint. { b2Vec2 r1 = b2Mul(b1->GetTransform().R, m_localAnchor1 - b1->GetLocalCenter()); b2Vec2 r2 = b2Mul(b2->GetTransform().R, m_localAnchor2 - b2->GetLocalCenter()); b2Vec2 C = b2->m_sweep.c + r2 - b1->m_sweep.c - r1; positionError = C.Length(); float32 invMass1 = b1->m_invMass, invMass2 = b2->m_invMass; float32 invI1 = b1->m_invI, invI2 = b2->m_invI; // Handle large detachment. const float32 k_allowedStretch = 10.0f * b2_linearSlop; if (C.LengthSquared() > k_allowedStretch * k_allowedStretch) { // Use a particle solution (no rotation). b2Vec2 u = C; u.Normalize(); float32 k = invMass1 + invMass2; b2Assert(k > B2_FLT_EPSILON); float32 m = 1.0f / k; b2Vec2 impulse = m * (-C); const float32 k_beta = 0.5f; b1->m_sweep.c -= k_beta * invMass1 * impulse; b2->m_sweep.c += k_beta * invMass2 * impulse; C = b2->m_sweep.c + r2 - b1->m_sweep.c - r1; } b2Mat22 K1; K1.col1.x = invMass1 + invMass2; K1.col2.x = 0.0f; K1.col1.y = 0.0f; K1.col2.y = invMass1 + invMass2; b2Mat22 K2; K2.col1.x = invI1 * r1.y * r1.y; K2.col2.x = -invI1 * r1.x * r1.y; K2.col1.y = -invI1 * r1.x * r1.y; K2.col2.y = invI1 * r1.x * r1.x; b2Mat22 K3; K3.col1.x = invI2 * r2.y * r2.y; K3.col2.x = -invI2 * r2.x * r2.y; K3.col1.y = -invI2 * r2.x * r2.y; K3.col2.y = invI2 * r2.x * r2.x; b2Mat22 K = K1 + K2 + K3; b2Vec2 impulse = K.Solve(-C); b1->m_sweep.c -= b1->m_invMass * impulse; b1->m_sweep.a -= b1->m_invI * b2Cross(r1, impulse); b2->m_sweep.c += b2->m_invMass * impulse; b2->m_sweep.a += b2->m_invI * b2Cross(r2, impulse);//.........这里部分代码省略.........
开发者ID:HieuLsw,项目名称:cocos-svg,代码行数:101,
示例12: PreSolve virtual void PreSolve(b2Contact *contact, const b2Manifold *oldManifold) { B2_NOT_USED(contact); B2_NOT_USED(oldManifold); }
开发者ID:chengstory,项目名称:CocoStudioSamples,代码行数:5,
示例13: EndContact virtual void EndContact(b2Contact *contact) { //! clear list at end contact_list.clear(); B2_NOT_USED(contact); }
开发者ID:chengstory,项目名称:CocoStudioSamples,代码行数:6,
示例14: main// This is a simple example of building and running a simulation// using Box2D. Here we create a large ground box and a small dynamic// box.int main(int argc, char** argv){ B2_NOT_USED(argc); B2_NOT_USED(argv); // Define the size of the world. Simulation will still work // if bodies reach the end of the world, but it will be slower. b2AABB worldAABB; worldAABB.lowerBound.Set(-100.0f, -100.0f); worldAABB.upperBound.Set(100.0f, 100.0f); // Define the gravity vector. b2Vec2 gravity(0.0f, -10.0f); // Do we want to let bodies sleep? bool doSleep = true; // Construct a world object, which will hold and simulate the rigid bodies. b2World world(worldAABB, gravity, doSleep); // Define the ground body. b2BodyDef groundBodyDef; groundBodyDef.position.Set(0.0f, -10.0f); // Call the body factory which allocates memory for the ground body // from a pool and creates the ground box shape (also from a pool). // The body is also added to the world. b2Body* groundBody = world.CreateBody(&groundBodyDef); // Define the ground box shape. b2PolygonDef groundShapeDef; // The extents are the half-widths of the box. groundShapeDef.SetAsBox(50.0f, 10.0f); // Add the ground shape to the ground body. groundBody->CreateFixture(&groundShapeDef); // Define the dynamic body. We set its position and call the body factory. b2BodyDef bodyDef; bodyDef.position.Set(0.0f, 4.0f); b2Body* body = world.CreateBody(&bodyDef); // Define another box shape for our dynamic body. b2PolygonDef shapeDef; shapeDef.SetAsBox(1.0f, 1.0f); // Set the box density to be non-zero, so it will be dynamic. shapeDef.density = 1.0f; // Override the default friction. shapeDef.friction = 0.3f; // Add the shape to the body. body->CreateFixture(&shapeDef); // Now tell the dynamic body to compute it's mass properties base // on its shape. body->SetMassFromShapes(); // Prepare for simulation. Typically we use a time step of 1/60 of a // second (60Hz) and 10 iterations. This provides a high quality simulation // in most game scenarios. float32 timeStep = 1.0f / 60.0f; int32 velocityIterations = 8; int32 positionIterations = 1; // This is our little game loop. for (int32 i = 0; i < 60; ++i) { // Instruct the world to perform a single step of simulation. It is // generally best to keep the time step and iterations fixed. world.Step(timeStep, velocityIterations, positionIterations); // Now print the position and angle of the body. b2Vec2 position = body->GetPosition(); float32 angle = body->GetAngle(); printf("%4.2f %4.2f %4.2f/n", position.x, position.y, angle); } // When the world destructor is called, all bodies and joints are freed. This can // create orphaned pointers, so be careful about your world management. return 0;}
开发者ID:SoylentGraham,项目名称:Tootle,代码行数:89,
示例15: shift_mouse_down void shift_mouse_down(const b2Vec2& p) { B2_NOT_USED(p); }
开发者ID:navneetagarwal,项目名称:Box2d-Project,代码行数:1,
示例16: B2_NOT_USEDbool b2MotorJoint::SolvePositionConstraints(const b2SolverData& data){ B2_NOT_USED(data); return true;}
开发者ID:reworks,项目名称:REngine3,代码行数:6,
示例17: mouse_up virtual void mouse_up(const b2Vec2& p) { B2_NOT_USED(p); }
开发者ID:navneetagarwal,项目名称:Box2d-Project,代码行数:1,
示例18: B2_NOT_USEDbool b2PolygonShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& xf, int32 childIndex) const{ B2_NOT_USED(childIndex); // Put the ray into the polygon's frame of reference. b2Vec2 p1 = b2MulT(xf.q, input.p1 - xf.p); b2Vec2 p2 = b2MulT(xf.q, input.p2 - xf.p); b2Vec2 d = p2 - p1; float32 lower = 0.0f, upper = input.maxFraction; int32 index = -1; for (int32 i = 0; i < m_vertexCount; ++i) { // p = p1 + a * d // dot(normal, p - v) = 0 // dot(normal, p1 - v) + a * dot(normal, d) = 0 float32 numerator = b2Dot(m_normals[i], m_vertices[i] - p1); float32 denominator = b2Dot(m_normals[i], d); if (denominator == 0.0f) { if (numerator < 0.0f) { return false; } } else { // Note: we want this predicate without division: // lower < numerator / denominator, where denominator < 0 // Since denominator < 0, we have to flip the inequality: // lower < numerator / denominator <==> denominator * lower > numerator. if (denominator < 0.0f && numerator < lower * denominator) { // Increase lower. // The segment enters this half-space. lower = numerator / denominator; index = i; } else if (denominator > 0.0f && numerator < upper * denominator) { // Decrease upper. // The segment exits this half-space. upper = numerator / denominator; } } // The use of epsilon here causes the assert on lower to trip // in some cases. Apparently the use of epsilon was to make edge // shapes work, but now those are handled separately. //if (upper < lower - b2_epsilon) if (upper < lower) { return false; } } b2Assert(0.0f <= lower && lower <= input.maxFraction); if (index >= 0) { output->fraction = lower; output->normal = b2Mul(xf.q, m_normals[index]); return true; } return false;}
开发者ID:Ethanthecrazy,项目名称:ATHEngine,代码行数:71,
示例19: joint_destroyed // Let derived tests know that a joint was destroyed. virtual void joint_destroyed(b2Joint* joint) { B2_NOT_USED(joint); }
开发者ID:navneetagarwal,项目名称:Box2d-Project,代码行数:2,
示例20: B2_NOT_USEDbool b2PrismaticJoint::SolvePositionConstraints(float32 baumgarte){ B2_NOT_USED(baumgarte); b2Body* b1 = m_body1; b2Body* b2 = m_body2; b2Vec2 c1 = b1->m_sweep.c; float32 a1 = b1->m_sweep.a; b2Vec2 c2 = b2->m_sweep.c; float32 a2 = b2->m_sweep.a; // Solve linear limit constraint. float32 linearError = 0.0f, angularError = 0.0f; bool active = false; float32 C2 = 0.0f; b2Mat22 R1(a1), R2(a2); b2Vec2 r1 = b2Mul(R1, m_localAnchor1 - m_localCenter1); b2Vec2 r2 = b2Mul(R2, m_localAnchor2 - m_localCenter2); b2Vec2 d = c2 + r2 - c1 - r1; if (m_enableLimit) { m_axis = b2Mul(R1, m_localXAxis1); m_a1 = b2Cross(d + r1, m_axis); m_a2 = b2Cross(r2, m_axis); float32 translation = b2Dot(m_axis, d); if (b2Abs(m_upperTranslation - m_lowerTranslation) < 2.0f * b2_linearSlop) { // Prevent large angular corrections C2 = b2Clamp(translation, -b2_maxLinearCorrection, b2_maxLinearCorrection); linearError = b2Abs(translation); active = true; } else if (translation <= m_lowerTranslation) { // Prevent large linear corrections and allow some slop. C2 = b2Clamp(translation - m_lowerTranslation + b2_linearSlop, -b2_maxLinearCorrection, 0.0f); linearError = m_lowerTranslation - translation; active = true; } else if (translation >= m_upperTranslation) { // Prevent large linear corrections and allow some slop. C2 = b2Clamp(translation - m_upperTranslation - b2_linearSlop, 0.0f, b2_maxLinearCorrection); linearError = translation - m_upperTranslation; active = true; } } m_perp = b2Mul(R1, m_localYAxis1); m_s1 = b2Cross(d + r1, m_perp); m_s2 = b2Cross(r2, m_perp); b2Vec3 impulse; b2Vec2 C1; C1.x = b2Dot(m_perp, d); C1.y = a2 - a1 - m_refAngle; linearError = b2Max(linearError, b2Abs(C1.x)); angularError = b2Abs(C1.y); if (active) { float32 m1 = m_invMass1, m2 = m_invMass2; float32 i1 = m_invI1, i2 = m_invI2; float32 k11 = m1 + m2 + i1 * m_s1 * m_s1 + i2 * m_s2 * m_s2; float32 k12 = i1 * m_s1 + i2 * m_s2; float32 k13 = i1 * m_s1 * m_a1 + i2 * m_s2 * m_a2; float32 k22 = i1 + i2; float32 k23 = i1 * m_a1 + i2 * m_a2; float32 k33 = m1 + m2 + i1 * m_a1 * m_a1 + i2 * m_a2 * m_a2; m_K.col1.Set(k11, k12, k13); m_K.col2.Set(k12, k22, k23); m_K.col3.Set(k13, k23, k33); b2Vec3 C; C.x = C1.x; C.y = C1.y; C.z = C2; impulse = m_K.Solve33(-C); } else { float32 m1 = m_invMass1, m2 = m_invMass2; float32 i1 = m_invI1, i2 = m_invI2; float32 k11 = m1 + m2 + i1 * m_s1 * m_s1 + i2 * m_s2 * m_s2; float32 k12 = i1 * m_s1 + i2 * m_s2; float32 k22 = i1 + i2;//.........这里部分代码省略.........
开发者ID:DarthMike,项目名称:Hydro,代码行数:101,
示例21: end_contact virtual void end_contact(b2Contact* contact) { B2_NOT_USED(contact); }
开发者ID:navneetagarwal,项目名称:Box2d-Project,代码行数:1,
示例22: b2Cross//.........这里部分代码省略......... // d := incremental impulse // // For the current iteration we extend the formula for the incremental impulse // to compute the new total impulse: // // vn = A * d + b // = A * (x - a) + b // = A * x + b - A * a // = A * x + b' // b' = b - A * a; b2VelocityConstraintPoint* cp1 = vc->points + 0; b2VelocityConstraintPoint* cp2 = vc->points + 1; b2Vec2 a(cp1->normalImpulse, cp2->normalImpulse); b2Assert(a.x >= 0.0f && a.y >= 0.0f); // Relative velocity at contact b2Vec2 dv1 = vB + b2Cross(wB, cp1->rB) - vA - b2Cross(wA, cp1->rA); b2Vec2 dv2 = vB + b2Cross(wB, cp2->rB) - vA - b2Cross(wA, cp2->rA); // Compute normal velocity float32 vn1 = b2Dot(dv1, normal); float32 vn2 = b2Dot(dv2, normal); b2Vec2 b; b.x = vn1 - cp1->velocityBias; b.y = vn2 - cp2->velocityBias; // Compute b' b -= b2Mul(vc->K, a); const float32 k_errorTol = 1e-3f; B2_NOT_USED(k_errorTol); for (;;) { // // Case 1: vn = 0 // // 0 = A * x + b' // // Solve for x: // // x = - inv(A) * b' // b2Vec2 x = - b2Mul(vc->normalMass, b); if (x.x >= 0.0f && x.y >= 0.0f) { // Get the incremental impulse b2Vec2 d = x - a; // Apply incremental impulse b2Vec2 P1 = d.x * normal; b2Vec2 P2 = d.y * normal; vA -= mA * (P1 + P2); wA -= iA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); vB += mB * (P1 + P2); wB += iB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); // Accumulate cp1->normalImpulse = x.x; cp2->normalImpulse = x.y;
开发者ID:AbePralle,项目名称:Plasmacore,代码行数:66,
示例23: Keyboardvoid Keyboard(unsigned char key, int x, int y){ B2_NOT_USED(x); B2_NOT_USED(y); switch (key) { case 27: exit(0); break; // Press 'z' to zoom out. case 'z': viewZoom = b2Min(1.1f * viewZoom, 20.0f); Resize(width, height); break; // Press 'x' to zoom in. case 'x': viewZoom = b2Max(0.9f * viewZoom, 0.02f); Resize(width, height); break; // Press 'r' to reset. case 'r': delete test; test = entry->createFcn(); break; // Press space to launch a bomb. case ' ': if (test) { test->LaunchBomb(); } break; case 'p': settings.pause = !settings.pause; break; // Press [ to prev test. case '[': --testSelection; if (testSelection < 0) { testSelection = testCount - 1; } glui->sync_live(); break; // Press ] to next test. case ']': ++testSelection; if (testSelection == testCount) { testSelection = 0; } glui->sync_live(); break; default: if (test) { test->Keyboard(key); } }}
开发者ID:4ian,项目名称:GD,代码行数:68,
示例24: b2Cross//.........这里部分代码省略......... // // Substitute: // // x = x' - a // // Plug into above equation: // // vn = A * x + b // = A * (x' - a) + b // = A * x' + b - A * a // = A * x' + b' // b' = b - A * a; b2ContactConstraintPoint* cp1 = c->points + 0; b2ContactConstraintPoint* cp2 = c->points + 1; b2Vec2 a(cp1->normalImpulse, cp2->normalImpulse); b2Assert(a.x >= 0.0f && a.y >= 0.0f); // Relative velocity at contact b2Vec2 dv1 = vB + b2Cross(wB, cp1->rB) - vA - b2Cross(wA, cp1->rA); b2Vec2 dv2 = vB + b2Cross(wB, cp2->rB) - vA - b2Cross(wA, cp2->rA); // Compute normal velocity float32 vn1 = b2Dot(dv1, normal); float32 vn2 = b2Dot(dv2, normal); b2Vec2 b; b.x = vn1 - cp1->velocityBias; b.y = vn2 - cp2->velocityBias; b -= b2Mul(c->K, a); const float32 k_errorTol = 1e-3f; B2_NOT_USED(k_errorTol); for (;;) { // // Case 1: vn = 0 // // 0 = A * x' + b' // // Solve for x': // // x' = - inv(A) * b' // b2Vec2 x = - b2Mul(c->normalMass, b); if (x.x >= 0.0f && x.y >= 0.0f) { // Resubstitute for the incremental impulse b2Vec2 d = x - a; // Apply incremental impulse b2Vec2 P1 = d.x * normal; b2Vec2 P2 = d.y * normal; vA -= invMassA * (P1 + P2); wA -= invIA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); vB += invMassB * (P1 + P2); wB += invIB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); // Accumulate cp1->normalImpulse = x.x; cp2->normalImpulse = x.y;
开发者ID:ChadyG,项目名称:MUGE,代码行数:66,
示例25: B2_NOT_USEDbool b2PulleyJoint::SolvePositionConstraints(float32 baumgarte){ B2_NOT_USED(baumgarte); b2Body* b1 = m_body1; b2Body* b2 = m_body2; b2Vec2 s1 = m_ground->GetXForm().position + m_groundAnchor1; b2Vec2 s2 = m_ground->GetXForm().position + m_groundAnchor2; float32 linearError = 0.0f; if (m_state == e_atUpperLimit) { b2Vec2 r1 = b2Mul(b1->GetXForm().R, m_localAnchor1 - b1->GetLocalCenter()); b2Vec2 r2 = b2Mul(b2->GetXForm().R, m_localAnchor2 - b2->GetLocalCenter()); b2Vec2 p1 = b1->m_sweep.c + r1; b2Vec2 p2 = b2->m_sweep.c + r2; // Get the pulley axes. m_u1 = p1 - s1; m_u2 = p2 - s2; float32 length1 = m_u1.Length(); float32 length2 = m_u2.Length(); if (length1 > b2_linearSlop) { m_u1 *= 1.0f / length1; } else { m_u1.SetZero(); } if (length2 > b2_linearSlop) { m_u2 *= 1.0f / length2; } else { m_u2.SetZero(); } float32 C = m_constant - length1 - m_ratio * length2; linearError = b2Max(linearError, -C); C = b2Clamp(C + b2_linearSlop, -b2_maxLinearCorrection, 0.0f); float32 impulse = -m_pulleyMass * C; b2Vec2 P1 = -impulse * m_u1; b2Vec2 P2 = -m_ratio * impulse * m_u2; b1->m_sweep.c += b1->m_invMass * P1; b1->m_sweep.a += b1->m_invI * b2Cross(r1, P1); b2->m_sweep.c += b2->m_invMass * P2; b2->m_sweep.a += b2->m_invI * b2Cross(r2, P2); b1->SynchronizeTransform(); b2->SynchronizeTransform(); } if (m_limitState1 == e_atUpperLimit) { b2Vec2 r1 = b2Mul(b1->GetXForm().R, m_localAnchor1 - b1->GetLocalCenter()); b2Vec2 p1 = b1->m_sweep.c + r1; m_u1 = p1 - s1; float32 length1 = m_u1.Length(); if (length1 > b2_linearSlop) { m_u1 *= 1.0f / length1; } else { m_u1.SetZero(); } float32 C = m_maxLength1 - length1; linearError = b2Max(linearError, -C); C = b2Clamp(C + b2_linearSlop, -b2_maxLinearCorrection, 0.0f); float32 impulse = -m_limitMass1 * C; b2Vec2 P1 = -impulse * m_u1; b1->m_sweep.c += b1->m_invMass * P1; b1->m_sweep.a += b1->m_invI * b2Cross(r1, P1); b1->SynchronizeTransform(); } if (m_limitState2 == e_atUpperLimit) { b2Vec2 r2 = b2Mul(b2->GetXForm().R, m_localAnchor2 - b2->GetLocalCenter()); b2Vec2 p2 = b2->m_sweep.c + r2; m_u2 = p2 - s2; float32 length2 = m_u2.Length();//.........这里部分代码省略.........
开发者ID:vHanda,项目名称:Survival,代码行数:101,
示例26: B2_NOT_USEDfloat32 b2DistanceJoint::GetReactionTorque(float32 inv_dt) const{ B2_NOT_USED(inv_dt); return 0.0f;}
开发者ID:carriercomm,项目名称:anaconda,代码行数:5,
示例27: keyboard_up virtual void keyboard_up(unsigned char key) { B2_NOT_USED(key); }
开发者ID:navneetagarwal,项目名称:Box2d-Project,代码行数:1,
示例28: b2FreeDefault// Default implementation of b2FreeFunction.static void b2FreeDefault(void* mem, void* callbackData){ B2_NOT_USED(callbackData); free(mem);}
开发者ID:SweedRaver,项目名称:FluidAnimations,代码行数:6,
示例29: B2_NOT_USEDbool b2FrictionJoint::SolvePositionConstraints(qreal baumgarte){ B2_NOT_USED(baumgarte); return true;}
开发者ID:KDE,项目名称:kolf,代码行数:6,
注:本文中的B2_NOT_USED函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ B43_WARN_ON函数代码示例 C++ B2函数代码示例 |