diff --git a/public/calculateActions.js b/public/calculateActions.js index 1f3a3d1..3580f41 100755 --- a/public/calculateActions.js +++ b/public/calculateActions.js @@ -38,42 +38,79 @@ async function fetchCSV() { }); return obj; }); - + appendToAnalysis(`CSV-Daten geladen: ${rows.length} Zeilen, ${headers.length} Spalten.`); return { data, headers, rows }; } async function readValues( data, headers, rows ){ - appendToAnalysis('Geladene Daten: ' + JSON.stringify(data, null, 2)); - appendToAnalysis('Headers: ' + JSON.stringify(headers)); - appendToAnalysis('Parsed rows: ' + JSON.stringify(rows, null, 2)); + console.log('Geladene Daten:', data); + console.log('Headers:', headers); + console.log('Parsed rows:', rows); - // Hier kannst du manuell mit den Daten arbeiten - // Beispiel: Finde die Position mit der höchsten x_mm - let maxX = -Infinity; - let bestRow = null; - rows.forEach(row => { - if (row.x_mm > maxX) { - maxX = row.x_mm; - bestRow = row; - } - }); - appendToAnalysis('Position mit höchster x_mm: ' + JSON.stringify(bestRow)); + +} - // Füge hier deine Logik für Vorschläge hinzu - // z.B. calculateSuggestions(rows); +async function calculateAngleFromPosition(row, axisY, axisZ, deltaYangle0, deltaZangle0 = 0) { + let y = parseFloat(row.y_mm); + let z = parseFloat(row.z_mm); + + let dy = -(y - axisY); + let dz = z - axisZ; + + let angle0Rad = 0; + if(deltaZangle0 !== 0){ + angle0Rad = Math.atan(deltaZangle0/deltaYangle0); + } + + angleRad = Math.atan(dz/dy) - angle0Rad; + angleDeg = angleRad * (180 / Math.PI); + + appendToAnalysis(`(yMotor = ${angleDeg.toFixed(2)}° = ${angleRad.toFixed(4)} rad ) aus Position von ID = ${row.id}`); +} +async function calculateAngleFromRollColumn(row, roll0 = 0, pitch0 = 0, yaw0 = 0) { + let roll = -parseFloat(row.roll_deg) + roll0; + appendToAnalysis(`(yMotor = ${roll.toFixed(2)}° = ${(roll * Math.PI / 180).toFixed(4)} rad) aus roll_deg von ID = ${row.id}`); } async function calculate() { + + let shoulderAxisY = 115; + let shoulderAxisZ = 61; + + let rows = null; + let headers = null; + try { appendToAnalysis('Starte Berechnung...'); - const { data, headers, rows } = await fetchCSV(); + const result = await fetchCSV(); + rows = result.rows; + headers = result.headers; + const data = result.data; await readValues( data, headers, rows ); - appendToAnalysis('Berechnung abgeschlossen.'); } catch (err) { appendToAnalysis('Fehler in calculate: ' + err.message); } - // Schreibe den die Länge der CSV Datei und die vierte Zeile in das Analysis&Reasoning fenster. + + + const row243 = rows.find(r => r.id == 243) + if(row243){ + const angle = await calculateAngleFromPosition(row243, shoulderAxisY, shoulderAxisZ, 250+35, 0); + calculateAngleFromRollColumn(row243, 90, 0, 0); + } + const row229 = rows.find(r => r.id == 229) + if(row229){ + const angle = await calculateAngleFromPosition(row229, shoulderAxisY, shoulderAxisZ, 250, 35); + calculateAngleFromRollColumn(row229, 0, 0, 0); + } + + const row203 = rows.find(r => r.id == 203) + if(row203){ + const angle = await calculateAngleFromPosition(row203, shoulderAxisY, shoulderAxisZ, 165, 35); + calculateAngleFromRollColumn(row203, 0, 0, 0); + } } + + // Export für Module, falls benötigt // export { fetchCSV, calculate }; \ No newline at end of file