Interpolation

This commit is contained in:
Jens Cornelsen
2025-02-18 08:24:52 +01:00
parent 404f5845a4
commit 9359ee0432
4 changed files with 37 additions and 17 deletions

View File

@@ -8,9 +8,9 @@ export const createCaller = createCallerFactory({
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"), "auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"), "auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
"objekt": await import("../src/pages/api/objekt/index.ts"), "objekt": await import("../src/pages/api/objekt/index.ts"),
"rechnung": await import("../src/pages/api/rechnung/index.ts"), "rechnung": await import("../src/pages/api/rechnung/index.ts"),
"ticket": await import("../src/pages/api/ticket/index.ts"), "ticket": await import("../src/pages/api/ticket/index.ts"),

View File

@@ -0,0 +1,34 @@
export function funktionDoppelteInterpolation(SuchSpalte: number, DatenZeile: number, dataZeile: any, dataBox: any): number {
function interpolate(x: number, x0: number, y0: number, x1: number, y1: number): number {
return y0 + ((y1 - y0) * (x - x0)) / (x1 - x0);
}
function findNearestPoints(data: any[], value: number, key: string): any[] {
let lower = data[0];
let upper = data[data.length - 1];
for (let i = 0; i < data.length - 1; i++) {
if (data[i][key][0] <= value && data[i + 1][key][0] >= value) {
lower = data[i];
upper = data[i + 1];
break;
}
}
return [lower, upper];
}
const [lowerSuchSpalte, upperSuchSpalte] = findNearestPoints(dataBox, SuchSpalte, 'SuchSpalte');
const lowerIndex = dataZeile[0].DatenZeile.findIndex((val: number) => val >= DatenZeile) - 1;
const upperIndex = lowerIndex + 1;
const lowerDatenZeile = dataZeile[0].DatenZeile[lowerIndex];
const upperDatenZeile = dataZeile[0].DatenZeile[upperIndex];
const lowerDatenSpalte = interpolate(DatenZeile, lowerDatenZeile, lowerSuchSpalte.DatenSpalte[lowerIndex], upperDatenZeile, lowerSuchSpalte.DatenSpalte[upperIndex]);
const upperDatenSpalte = interpolate(DatenZeile, lowerDatenZeile, upperSuchSpalte.DatenSpalte[lowerIndex], upperDatenZeile, upperSuchSpalte.DatenSpalte[upperIndex]);
return interpolate(SuchSpalte, lowerSuchSpalte.SuchSpalte[0], lowerDatenSpalte, upperSuchSpalte.SuchSpalte[0], upperDatenSpalte);
}

View File

@@ -1,6 +1,5 @@
import { datasetGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15 } from "#lib/Berechnungen/BedarfsausweisWohnen/datasetGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15.js"; import { datasetGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15 } from "#lib/Berechnungen/BedarfsausweisWohnen/datasetGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15.js";
import { funktionDoppelteInterpolation } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionDoppelteInterpolation.js"; import { funktionDoppelteInterpolation } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionDoppelteInterpolation.js";
import { date } from "astro:schema";
export function funktionGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15(LueftungsAnlage: string, LuftDichtheit: string, LueftungBedarfsgefuehrt: string, suchSpalte: number, datenZeile: number): any | null { export function funktionGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15(LueftungsAnlage: string, LuftDichtheit: string, LueftungBedarfsgefuehrt: string, suchSpalte: number, datenZeile: number): any | null {
@@ -59,5 +58,5 @@ return {
} }
const result = funktionGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15("Zu-/Abluftanlage", "Kategorie I - mit geplanter Dichtheitsprüfung", "bedarfsgeführt", 0, 0.1); const result = funktionGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15("Zu-/Abluftanlage", "Kategorie I - mit geplanter Dichtheitsprüfung", "bedarfsgeführt", 0, 0.000001);
console.log(result); console.log(result);

View File

@@ -274,20 +274,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
berechnungen?.klimafaktoren[0].klimafaktor.toString() berechnungen?.klimafaktoren[0].klimafaktor.toString()
); );
addVerbrauch(
moment(ausweis.startdatum).add(2, "year").format("MM.YYYY"),
moment(ausweis.startdatum).add(3, "year").format("MM.YYYY"),
aufnahme.brennstoff_1,
berechnungen?.primaerfaktorww.toString(),
Math.round(berechnungen?.verbrauch_3_kwh).toString(),
Math.round(
berechnungen?.anteil_warmwasser_1 * berechnungen?.verbrauch_3_kwh
).toString(),
Math.round(
berechnungen?.anteil_heizung_1 * berechnungen?.verbrauch_3_kwh
).toString(),
berechnungen?.klimafaktoren[0].klimafaktor.toString()
);
/* -------------------------------- Seite 4 -------------------------------- */ /* -------------------------------- Seite 4 -------------------------------- */