1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public HashMap<Double, Double> intersec(HashMap<Double, List<String>> tmpTable1, HashMap<Double, List<String>> tmpTable2, HashMap<String, Double> curve1, HashMap<String, Double> curve2, double nbRep){
// on calcule le milieu des droites au (prix2-prix1)/2
double milieu = (curve1.get("xb")-curve1.get("xa"))/2.0 + curve1.get("xa");
// on calcule la valeur correspondante
HashMap<Double, Double> res1 = this.calculNbRep(tmpTable1, new HashMap<Double, Double>(), milieu);
HashMap<Double, Double> res2 = this.calculNbRep(tmpTable2, new HashMap<Double, Double>(), milieu);
// on regarde si le prix ne change plus
if(Math.abs(curve1.get("xb")-curve1.get("xa")) < 0.01){
// on est sur l'intersection
return res1;
} else {
if((nbRep-res1.get(milieu)) > res2.get(milieu)){
// le point d'intersection est apres
curve1.put("xa", milieu);
curve1.put("ya", res1.get(milieu));
curve2.put("xc", milieu);
curve2.put("yc", res2.get(milieu));
return intersec(tmpTable1, tmpTable2, curve1, curve2, nbRep);
} else if((nbRep-res1.get(milieu)) < res2.get(milieu)){
// le point est avant
curve1.put("xb", milieu);
curve1.put("yb", res1.get(milieu));
curve2.put("xd", milieu);
curve2.put("yd", res2.get(milieu));
return intersec(tmpTable1, tmpTable2, curve1, curve2, nbRep);
}
}
return null;
} |
Partager