Der Ablauf folgt Abbildung mit folgenden Verrechnungsaktionen:
Gehen wir davon aus, dass uns die Spektralwerte als Stützstellen in bereits sortierten Listen vorliegen.
Zwei durchzumultiplizierende Spektren werden mit zwei Variablen und
durchlaufen.
Abbildung
zeigt den prinzipiellen Ablauf und die Probleme beim Addieren:
1 2 function durchhangelnadd(spek1, spek2){ 3 var s=0,i=0,j=0, arr=[]; 4 while (i < spek1.length-1 && j< spek2.length-1) { 5 if(spek1[i]["x"]>=spek2[j+1]["x"]){ 6 arr.push({info: `Heranrücken j++ auf : i=${i}->(${spek1[i]["x"]},${spek1[i]["y"]}) und j=${j}->(${spek2[j]["x"]},${spek2[j]["y"]})`,x:spek2[j]["x"], y: spek2[j]["y"]}); 7 j++; 8 continue;}; 9 if(i == 0 && spek1[0]["x"]>spek2[j]["x"] && spek1[0]["x"]<spek2[j+1]["x"]){ 10 } 11 if(spek2[j]["x"]>=spek1[i+1]["x"]){ 12 arr.push({info: `Heranrücken i++ auf : i=${i}->(${spek1[i]["x"]},${spek1[i]["y"]}) und j=${j}->(${spek2[j]["x"]},${spek2[j]["y"]})`,x:spek1[i]["x"], y: spek1[i]["y"]}); 13 i++; 14 continue;}; 15 if(spek1[i]["x"]==spek2[j]["x"]){ 16 arr.push({x:spek1[i]["x"], y: spek1[i]["y"]+spek2[j]["y"]}); 17 }; 18 if(spek1[i]["x"]< spek2[j]["x"]){ 19 arr.push({x:spek2[j]["x"], y: spek1[i]["y"]+spek2[j]["y"] + (spek1[i+1]["y"]- spek1[i]["y"]) / (spek1[i+1]["x"] - spek1[i]["x"]) * (spek2[j]["x"] - spek1[i]["x"]) }); 20 }; 21 if(spek1[i]["x"]> spek2[j]["x"]){ 22 arr.push({x:spek1[i]["x"], y: spek1[i]["y"]+spek2[j]["y"] + + (spek2[j+1]["y"]- spek2[j]["y"]) / (spek2[j+1]["x"] - spek2[j]["x"]) * (spek1[i]["x"] - spek2[j]["x"]) }); 23 }; 24 if(spek1[i+1]["x"]==spek2[j+1]["x"]){i++; j++; continue;}; 25 if(spek1[i+1]["x"]<spek2[j+1]["x"]){i++; continue;}; 26 if(spek1[i+1]["x"]>spek2[j+1]["x"]){j++; continue;}; 27 } 28 /*************Letztes Element************/ 29 if(i==spek1.length-1){ 30 arr.push({x:spek1[i]["x"], y: (spek2[j-1]["y"] + (spek2[j]["y"]- spek2[j-1]["y"]) / (spek2[j]["x"] - spek2[j-1]["x"]) * (spek1[i]["x"] - spek2[j-1]["x"])) + spek1[i]["y"] }); 31 j++; 32 while (j < spek2.length) { 33 arr.push({x:spek2[j]["x"], y: spek2[j]["y"]}); 34 j++; 35 } 36 37 } 38 if(j==spek2.length-1){ 39 arr.push({x:spek2[j]["x"], y: (spek1[i]["y"] + (spek1[i+1]["y"]- spek1[i]["y"]) / (spek1[i+1]["x"] - spek1[i]["x"]) * (spek2[j]["x"] - spek1[i]["x"])) + spek2[j]["y"] }); 40 i++; 41 while (i < spek1.length) { 42 arr.push({x:spek1[i]["x"], y: spek1[i]["y"]}); 43 i++; 44 } 45 } 46 return arr; 47 } |