scale integrals before adding
This commit is contained in:
parent
151ce1f385
commit
fd04c35886
@ -135,22 +135,22 @@ b3Vec3 b3Hull::GetCentroid() const
|
|||||||
b3Subexpressions(p1.y, p2.y, p3.y, f1y, f2y, f3y);
|
b3Subexpressions(p1.y, p2.y, p3.y, f1y, f2y, f3y);
|
||||||
b3Subexpressions(p1.z, p2.z, p3.z, f1z, f2z, f3z);
|
b3Subexpressions(p1.z, p2.z, p3.z, f1z, f2z, f3z);
|
||||||
|
|
||||||
intgex += d.x * f1x;
|
intgex += inv6 * (d.x * f1x);
|
||||||
|
|
||||||
intgcx += d.x * f2x;
|
intgcx += inv24 * (d.x * f2x);
|
||||||
intgcy += d.y * f2y;
|
intgcy += inv24 * (d.y * f2y);
|
||||||
intgcz += d.z * f2z;
|
intgcz += inv24 * (d.z * f2z);
|
||||||
|
|
||||||
edge = next;
|
edge = next;
|
||||||
} while (GetEdge(edge->next) != begin);
|
} while (GetEdge(edge->next) != begin);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply constants
|
// Apply constants
|
||||||
intgex *= inv6;
|
//intgex *= inv6;
|
||||||
|
|
||||||
intgcx *= inv24;
|
//intgcx *= inv24;
|
||||||
intgcy *= inv24;
|
//intgcy *= inv24;
|
||||||
intgcz *= inv24;
|
//intgcz *= inv24;
|
||||||
|
|
||||||
// Center of volume
|
// Center of volume
|
||||||
B3_ASSERT(intgex > B3_EPSILON);
|
B3_ASSERT(intgex > B3_EPSILON);
|
||||||
|
@ -100,29 +100,29 @@ void b3HullShape::ComputeMass(b3MassData* data, float32 density) const
|
|||||||
b3Subexpressions(p1.y, p2.y, p3.y, f1y, f2y, f3y, g0y, g1y, g2y);
|
b3Subexpressions(p1.y, p2.y, p3.y, f1y, f2y, f3y, g0y, g1y, g2y);
|
||||||
b3Subexpressions(p1.z, p2.z, p3.z, f1z, f2z, f3z, g0z, g1z, g2z);
|
b3Subexpressions(p1.z, p2.z, p3.z, f1z, f2z, f3z, g0z, g1z, g2z);
|
||||||
|
|
||||||
is[0] += d.x * f1x;
|
is[0] += ks[0] * (d.x * f1x);
|
||||||
|
|
||||||
is[1] += d.x * f2x;
|
is[1] += ks[1] * (d.x * f2x);
|
||||||
is[2] += d.y * f2y;
|
is[2] += ks[2] * (d.y * f2y);
|
||||||
is[3] += d.z * f2z;
|
is[3] += ks[3] * (d.z * f2z);
|
||||||
|
|
||||||
is[4] += d.x * f3x;
|
is[4] += ks[4] * (d.x * f3x);
|
||||||
is[5] += d.y * f3y;
|
is[5] += ks[5] * (d.y * f3y);
|
||||||
is[6] += d.z * f3z;
|
is[6] += ks[6] * (d.z * f3z);
|
||||||
|
|
||||||
is[7] += d.x * (p1.y * g0x + p2.y * g1x + p3.y * g2x);
|
|
||||||
is[8] += d.y * (p1.z * g0y + p2.z * g1y + p3.z * g2y);
|
|
||||||
is[9] += d.z * (p1.x * g0z + p2.x * g1z + p3.x * g2z);
|
|
||||||
|
|
||||||
|
is[7] += ks[7] * (d.x * (p1.y * g0x + p2.y * g1x + p3.y * g2x));
|
||||||
|
is[8] += ks[8] * (d.y * (p1.z * g0y + p2.z * g1y + p3.z * g2y));
|
||||||
|
is[9] += ks[9] * (d.z * (p1.x * g0z + p2.x * g1z + p3.x * g2z));
|
||||||
|
|
||||||
edge = next;
|
edge = next;
|
||||||
} while (m_hull->GetEdge(edge->next) != begin);
|
} while (m_hull->GetEdge(edge->next) != begin);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply constants
|
// Apply constants
|
||||||
for (u32 i = 0; i < 10; ++i)
|
//for (u32 i = 0; i < 10; ++i)
|
||||||
{
|
//{
|
||||||
is[i] *= ks[i];
|
//is[i] *= ks[i];
|
||||||
}
|
//}
|
||||||
|
|
||||||
// Volume
|
// Volume
|
||||||
float32 V = is[0];
|
float32 V = is[0];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user