Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 2a11fe13 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

intersect engine FLD: only add intersection point if it is not already part of the entries.

parent e2270408
No related branches found
No related tags found
No related merge requests found
......@@ -308,17 +308,22 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
});
} else {
// segment intersects maxTorque line -> add new entry at intersection
var edgeFull = Edge.Create(new Point(entry.Item1.EngineSpeed.Value(), entry.Item1.TorqueFullLoad.Value()),
var edgeFull = Edge.Create(
new Point(entry.Item1.EngineSpeed.Value(), entry.Item1.TorqueFullLoad.Value()),
new Point(entry.Item2.EngineSpeed.Value(), entry.Item2.TorqueFullLoad.Value()));
var edgeDrag = Edge.Create(new Point(entry.Item1.EngineSpeed.Value(), entry.Item1.TorqueDrag.Value()),
var edgeDrag = Edge.Create(
new Point(entry.Item1.EngineSpeed.Value(), entry.Item1.TorqueDrag.Value()),
new Point(entry.Item2.EngineSpeed.Value(), entry.Item2.TorqueDrag.Value()));
var intersectionX = (maxTorque.Value() - edgeFull.OffsetXY) / edgeFull.SlopeXY;
entries.Add(new EngineFullLoadCurve.FullLoadCurveEntry {
EngineSpeed = intersectionX.SI<PerSecond>(),
TorqueFullLoad = maxTorque,
TorqueDrag = VectoMath.Interpolate(edgeDrag.P1, edgeDrag.P2, intersectionX).SI<NewtonMeter>()
});
entries.Add(new EngineFullLoadCurve.FullLoadCurveEntry {
if (!entries.Any(x => x.EngineSpeed.IsEqual(intersectionX))) {
entries.Add(new EngineFullLoadCurve.FullLoadCurveEntry {
EngineSpeed = intersectionX.SI<PerSecond>(),
TorqueFullLoad = maxTorque,
TorqueDrag = VectoMath.Interpolate(edgeDrag.P1, edgeDrag.P2, intersectionX).SI<NewtonMeter>()
});
}
entries.Add(new EngineFullLoadCurve.FullLoadCurveEntry {
EngineSpeed = entry.Item2.EngineSpeed,
TorqueFullLoad = entry.Item2.TorqueFullLoad > maxTorque ? maxTorque : entry.Item2.TorqueFullLoad,
TorqueDrag = entry.Item2.TorqueDrag
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment