fix: division by 0

This commit is contained in:
TrèsAbhi committed 2024-02-16 10:00:09 -06:00
1 parent 0e57c37296
commit c128d8ab0c
2 files changed
+9 -8

No files matched your search

@@ -230,12 +230,13 @@ export function ArmorMesh({
shell.caliber > shell.caliber >
2 * 2 *
(event.object.userData.thickness * thicknessCoefficient); (event.object.userData.thickness * thicknessCoefficient);
const normalization = twoCalibersRule const normalization =
? ((shell.normalization ?? 0) * 1.4 * shell.caliber) / twoCalibersRule && event.object.userData.thickness > 0
(2 * ? ((shell.normalization ?? 0) * 1.4 * shell.caliber) /
event.object.userData.thickness * (2 *
thicknessCoefficient) event.object.userData.thickness *
: shell.normalization ?? 0; thicknessCoefficient)
: shell.normalization ?? 0;
const angled = const angled =
(event.object.userData.thickness * thicknessCoefficient) / (event.object.userData.thickness * thicknessCoefficient) /
Math.cos(angle - degToRad(normalization)); Math.cos(angle - degToRad(normalization));
@@ -63,7 +63,7 @@ void main() {
if (isUnderSpacedArmor) { if (isUnderSpacedArmor) {
// spaced armor on the other hand, does care about angle // spaced armor on the other hand, does care about angle
bool spacedArmorTwoCalibersRule = caliber > 2.0 * spacedArmorNominalThickness; bool spacedArmorTwoCalibersRule = caliber > 2.0 * spacedArmorNominalThickness && spacedArmorNominalThickness > 0.0;
float finalSpacedArmorNormalization = spacedArmorTwoCalibersRule ? (normalization * 1.4 * caliber) / (2.0 * spacedArmorNominalThickness) : normalization; float finalSpacedArmorNormalization = spacedArmorTwoCalibersRule ? (normalization * 1.4 * caliber) / (2.0 * spacedArmorNominalThickness) : normalization;
float finalSpacedArmorThickness = spacedArmorNominalThickness / cos(spacedArmorAngle - finalSpacedArmorNormalization); float finalSpacedArmorThickness = spacedArmorNominalThickness / cos(spacedArmorAngle - finalSpacedArmorNormalization);
remainingPenetration -= finalSpacedArmorThickness; remainingPenetration -= finalSpacedArmorThickness;
@@ -79,7 +79,7 @@ void main() {
remainingPenetration -= 0.5 * remainingPenetration * distanceFromSpacedArmor; remainingPenetration -= 0.5 * remainingPenetration * distanceFromSpacedArmor;
} }
bool coreArmorTwoCalibersRule = caliber > 2.0 * thickness; bool coreArmorTwoCalibersRule = caliber > 2.0 * thickness && thickness > 0.0;
float finalNormalization = coreArmorTwoCalibersRule ? (normalization * 1.4 * caliber) / (2.0 * thickness) : normalization; float finalNormalization = coreArmorTwoCalibersRule ? (normalization * 1.4 * caliber) / (2.0 * thickness) : normalization;
float finalCoreArmorThickness = thickness / cos(coreArmorangle - finalNormalization); float finalCoreArmorThickness = thickness / cos(coreArmorangle - finalNormalization);
float deltaPenetration = finalCoreArmorThickness - remainingPenetration; float deltaPenetration = finalCoreArmorThickness - remainingPenetration;