auto-sync

This commit is contained in:
rusEfi 2015-12-26 22:01:27 -05:00
parent b461a59169
commit 09930ae448
2 changed files with 33 additions and 3 deletions

View File

@ -45,6 +45,25 @@ public class IgnitionMapBuilder {
return round10(result);
}
public static double interpolate(double x1, double y1, double x2, double y2, double x) {
double a = ((y1 - y2) / (x1 - x2));
double b = y1 - a * x1;
return a * x + b;
}
public static double getAdvanceForRpm(int rpm, double advanceMax) {
if (rpm >= 3000)
return advanceMax;
if (rpm < 600)
return 10;
return interpolate(600, 10, 3000, advanceMax, rpm);
}
public static double getInitialAdvance(int rpm, double map, double advanceMax) {
double advance = getAdvanceForRpm(rpm, advanceMax);
return round10(advance + 0.3 * (100 - map));
}
public static double round10(double result) {
return ((int)(result * 10)) / 10.0;
}

View File

@ -3,10 +3,8 @@ package com.rusefi.logic.test;
import com.rusefi.logic.IgnitionMapBuilder;
import org.junit.Test;
import static com.rusefi.logic.IgnitionMapBuilder.*;
import static com.rusefi.logic.IgnitionMapBuilder.ChamberStyle.*;
import static com.rusefi.logic.IgnitionMapBuilder.getBoreCorrection;
import static com.rusefi.logic.IgnitionMapBuilder.getTopAdvanceForBore;
import static com.rusefi.logic.IgnitionMapBuilder.round10;
import static junit.framework.Assert.assertEquals;
/**
@ -29,5 +27,18 @@ public class IgnitionMapBuilderTest {
assertEquals(22.0, getTopAdvanceForBore(SWIRL_TUMBLE, 89, 9, 101.6));
assertEquals(32.2, getTopAdvanceForBore(SWIRL_TUMBLE, 89, 9, 145));
assertEquals(10.0, interpolate(0, 10, 10, 20, 0));
assertEquals(20.0, interpolate(0, 10, 10, 20, 10));
assertEquals(10.0, getAdvanceForRpm(0, 36));
assertEquals(10.0, getAdvanceForRpm(600, 36));
assertEquals(36.0, getAdvanceForRpm(6500, 36));
assertEquals(16.5, getAdvanceForRpm(1200, 36));
assertEquals(29.5, getAdvanceForRpm(2400, 36));
assertEquals(47.5, getInitialAdvance(2400, 40, 36));
assertEquals(54.0, getInitialAdvance(4400, 40, 36));
}
}