[#2209] Average segment centroids

This commit is contained in:
SiboVG 2023-05-11 21:06:51 +02:00
parent 7aaaf4bce9
commit ab878a82f0

View File

@ -544,7 +544,7 @@ public abstract class FinSet extends ExternalComponent implements AxialPositiona
return centerOfMass; return centerOfMass;
} }
private static Coordinate calculateFilletCrossSection(final double filletRadius, final double bodyRadius){ private static Coordinate calculateFilletCrossSection(final double filletRadius, final double bodyRadius) {
final double hypotenuse = filletRadius + bodyRadius; final double hypotenuse = filletRadius + bodyRadius;
final double innerArcAngle = Math.asin(filletRadius / hypotenuse); final double innerArcAngle = Math.asin(filletRadius / hypotenuse);
final double outerArcAngle = Math.acos(filletRadius / hypotenuse); final double outerArcAngle = Math.acos(filletRadius / hypotenuse);
@ -554,17 +554,17 @@ public abstract class FinSet extends ExternalComponent implements AxialPositiona
- outerArcAngle * filletRadius * filletRadius / 2 - outerArcAngle * filletRadius * filletRadius / 2
- innerArcAngle * bodyRadius * bodyRadius / 2); - innerArcAngle * bodyRadius * bodyRadius / 2);
if(Double.isNaN(crossSectionArea)) { if (Double.isNaN(crossSectionArea)) {
crossSectionArea = 0.; crossSectionArea = 0.;
}else { } else {
// each fin has a fillet on each side // each fin has a fillet on each side
crossSectionArea *= 2; crossSectionArea *= 2;
} }
// heuristic, relTo the body center // heuristic, relTo the body center
double yCentroid = bodyRadius + filletRadius /5; double yCentroid = bodyRadius + filletRadius / 5;
return new Coordinate(0,yCentroid,0,crossSectionArea); return new Coordinate(0, yCentroid, 0, crossSectionArea);
} }
/* /*
@ -617,7 +617,7 @@ public abstract class FinSet extends ExternalComponent implements AxialPositiona
final Coordinate segmentCentroid = segmentCrossSection.setWeight(segmentVolume); final Coordinate segmentCentroid = segmentCrossSection.setWeight(segmentVolume);
filletVolumeCentroid = filletVolumeCentroid.add(segmentCentroid); filletVolumeCentroid = filletVolumeCentroid.average(segmentCentroid);
prev = cur; prev = cur;
} }