Ho un mucchio di grafici x-y dati a me e devo essere in grado di trasformarli in una sorta di struttura dati da cui sarò in grado di ottenere Y con il valore X.
Il problema è che, sebbene io abbia 4, al massimo 5 valori di Y dati a me, e i miei valori X possono variare fino a 9000. Quindi l'informazione che ho è qualcosa del tipo
Point # X Y
1 1000 100
2 3250 460
3 6000 320
4 6500 300
Inizialmente la mia idea era qualcosa del tipo:
function getY($x){
$data[1000] = 100;
$data[3250] = 460;
$data[6000] = 320;
$data[6500] = 300;
if(isset($data[$x])){
return $data[$x];
}
$minKnown = null;
$maxKnown = null;
foreach($data as $_x => $y){
if($_x < $x){
$minKnown = $_x;
}
if($_x > $x){
$maxKnown = $_x;
break;
}
}
return $data[$minKnown] + (($x - $minKnown) / ($maxKnown - $minKnown)) * ($data[$maxKnown] - $data[$minKnown]);
} }
Questa funzione ho appena scritto per illustrare la mia idea. Fondamentalmente se un punto non è definito ma da qualche parte tra 2 punti noti, supponendo che non ci siano curve tra i due punti ottieni il valore che co-risponde alla posizione di X tra i due valori noti di X. Non sono nemmeno sicuro se la mia spiegazione verbale è in realtà corretta o no, ma immagino sia per quello che ho scritto per la funzione.
Ad ogni modo, stavo pensando, dal momento che i grafici sono ampiamente utilizzati, ci sono modi migliori per farlo e spero che altrimenti potrei rivelarmi più intelligente di quanto pensassi, il che è spaventoso.