本文整理匯總了Java中org.jbox2d.common.Vec2.setZero方法的典型用法代碼示例。如果您正苦於以下問題:Java Vec2.setZero方法的具體用法?Java Vec2.setZero怎麽用?Java Vec2.setZero使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類org.jbox2d.common.Vec2
的用法示例。
在下文中一共展示了Vec2.setZero方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: getSearchDirection
import org.jbox2d.common.Vec2; //導入方法依賴的package包/類
public final void getSearchDirection(final Vec2 out) {
switch (m_count) {
case 1:
out.set(m_v1.w).negateLocal();
return;
case 2:
e12.set(m_v2.w).subLocal(m_v1.w);
// use out for a temp variable real quick
out.set(m_v1.w).negateLocal();
float sgn = Vec2.cross(e12, out);
if (sgn > 0f) {
// Origin is left of e12.
Vec2.crossToOutUnsafe(1f, e12, out);
return;
} else {
// Origin is right of e12.
Vec2.crossToOutUnsafe(e12, 1f, out);
return;
}
default:
assert (false);
out.setZero();
return;
}
}
示例2: getClosestPoint
import org.jbox2d.common.Vec2; //導入方法依賴的package包/類
/**
* this returns pooled objects. don't keep or modify them
*
* @return
*/
public void getClosestPoint(final Vec2 out) {
switch (m_count) {
case 0:
assert (false);
out.setZero();
return;
case 1:
out.set(m_v1.w);
return;
case 2:
case22.set(m_v2.w).mulLocal(m_v2.a);
case2.set(m_v1.w).mulLocal(m_v1.a).addLocal(case22);
out.set(case2);
return;
case 3:
out.setZero();
return;
default:
assert (false);
out.setZero();
return;
}
}
示例3: computeCentroidToOut
import org.jbox2d.common.Vec2; //導入方法依賴的package包/類
public final void computeCentroidToOut(final Vec2[] vs, final int count, final Vec2 out) {
assert (count >= 3);
out.set(0.0f, 0.0f);
float area = 0.0f;
// pRef is the reference point for forming triangles.
// It's location doesn't change the result (except for rounding error).
final Vec2 pRef = pool1;
pRef.setZero();
final Vec2 e1 = pool2;
final Vec2 e2 = pool3;
final float inv3 = 1.0f / 3.0f;
for (int i = 0; i < count; ++i) {
// Triangle vertices.
final Vec2 p1 = pRef;
final Vec2 p2 = vs[i];
final Vec2 p3 = i + 1 < count ? vs[i + 1] : vs[0];
e1.set(p2).subLocal(p1);
e2.set(p3).subLocal(p1);
final float D = Vec2.cross(e1, e2);
final float triangleArea = 0.5f * D;
area += triangleArea;
// Area weighted centroid
e1.set(p1).addLocal(p2).addLocal(p3).mulLocal(triangleArea * inv3);
out.addLocal(e1);
}
// Centroid
assert (area > Settings.EPSILON);
out.mulLocal(1.0f / area);
}
示例4: solvePositionConstraints
import org.jbox2d.common.Vec2; //導入方法依賴的package包/類
@Override
public boolean solvePositionConstraints(final SolverData data) {
final Rot qA = pool.popRot();
final Rot qB = pool.popRot();
final Vec2 rA = pool.popVec2();
final Vec2 rB = pool.popVec2();
final Vec2 uA = pool.popVec2();
final Vec2 uB = pool.popVec2();
final Vec2 temp = pool.popVec2();
final Vec2 PA = pool.popVec2();
final Vec2 PB = pool.popVec2();
Vec2 cA = data.positions[m_indexA].c;
float aA = data.positions[m_indexA].a;
Vec2 cB = data.positions[m_indexB].c;
float aB = data.positions[m_indexB].a;
qA.set(aA);
qB.set(aB);
Rot.mulToOutUnsafe(qA, temp.set(m_localAnchorA).subLocal(m_localCenterA), rA);
Rot.mulToOutUnsafe(qB, temp.set(m_localAnchorB).subLocal(m_localCenterB), rB);
uA.set(cA).addLocal(rA).subLocal(m_groundAnchorA);
uB.set(cB).addLocal(rB).subLocal(m_groundAnchorB);
float lengthA = uA.length();
float lengthB = uB.length();
if (lengthA > 10.0f * Settings.linearSlop) {
uA.mulLocal(1.0f / lengthA);
} else {
uA.setZero();
}
if (lengthB > 10.0f * Settings.linearSlop) {
uB.mulLocal(1.0f / lengthB);
} else {
uB.setZero();
}
// Compute effective mass.
float ruA = Vec2.cross(rA, uA);
float ruB = Vec2.cross(rB, uB);
float mA = m_invMassA + m_invIA * ruA * ruA;
float mB = m_invMassB + m_invIB * ruB * ruB;
float mass = mA + m_ratio * m_ratio * mB;
if (mass > 0.0f) {
mass = 1.0f / mass;
}
float C = m_constant - lengthA - m_ratio * lengthB;
float linearError = MathUtils.abs(C);
float impulse = -mass * C;
PA.set(uA).mulLocal(-impulse);
PB.set(uB).mulLocal(-m_ratio * impulse);
cA.x += m_invMassA * PA.x;
cA.y += m_invMassA * PA.y;
aA += m_invIA * Vec2.cross(rA, PA);
cB.x += m_invMassB * PB.x;
cB.y += m_invMassB * PB.y;
aB += m_invIB * Vec2.cross(rB, PB);
// data.positions[m_indexA].c.set(cA);
data.positions[m_indexA].a = aA;
// data.positions[m_indexB].c.set(cB);
data.positions[m_indexB].a = aB;
pool.pushRot(2);
pool.pushVec2(7);
return linearError < Settings.linearSlop;
}