@jjlmoya/utils-forensic-science 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +5 -1
  3. package/src/entries.ts +9 -1
  4. package/src/index.ts +2 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/fire-pattern-origin-analyzer/bibliography.astro +6 -0
  8. package/src/tool/fire-pattern-origin-analyzer/bibliography.ts +12 -0
  9. package/src/tool/fire-pattern-origin-analyzer/component.astro +196 -0
  10. package/src/tool/fire-pattern-origin-analyzer/entry.ts +32 -0
  11. package/src/tool/fire-pattern-origin-analyzer/fire-pattern-origin-analyzer.css +681 -0
  12. package/src/tool/fire-pattern-origin-analyzer/i18n/de.ts +250 -0
  13. package/src/tool/fire-pattern-origin-analyzer/i18n/en.ts +250 -0
  14. package/src/tool/fire-pattern-origin-analyzer/i18n/es.ts +250 -0
  15. package/src/tool/fire-pattern-origin-analyzer/i18n/fr.ts +250 -0
  16. package/src/tool/fire-pattern-origin-analyzer/i18n/id.ts +250 -0
  17. package/src/tool/fire-pattern-origin-analyzer/i18n/it.ts +250 -0
  18. package/src/tool/fire-pattern-origin-analyzer/i18n/ja.ts +250 -0
  19. package/src/tool/fire-pattern-origin-analyzer/i18n/ko.ts +250 -0
  20. package/src/tool/fire-pattern-origin-analyzer/i18n/nl.ts +250 -0
  21. package/src/tool/fire-pattern-origin-analyzer/i18n/pl.ts +250 -0
  22. package/src/tool/fire-pattern-origin-analyzer/i18n/pt.ts +250 -0
  23. package/src/tool/fire-pattern-origin-analyzer/i18n/ru.ts +250 -0
  24. package/src/tool/fire-pattern-origin-analyzer/i18n/sv.ts +250 -0
  25. package/src/tool/fire-pattern-origin-analyzer/i18n/tr.ts +250 -0
  26. package/src/tool/fire-pattern-origin-analyzer/i18n/zh.ts +246 -0
  27. package/src/tool/fire-pattern-origin-analyzer/index.ts +11 -0
  28. package/src/tool/fire-pattern-origin-analyzer/logic.ts +123 -0
  29. package/src/tool/fire-pattern-origin-analyzer/render.ts +159 -0
  30. package/src/tool/fire-pattern-origin-analyzer/seo.astro +15 -0
  31. package/src/tool/fire-pattern-origin-analyzer/view-bindings.ts +171 -0
  32. package/src/tool/fire-pattern-origin-analyzer/view-model.ts +244 -0
  33. package/src/tool/fire-pattern-origin-analyzer/view.ts +30 -0
  34. package/src/tool/forensic-toolmark-striation-matcher/bibliography.astro +6 -0
  35. package/src/tool/forensic-toolmark-striation-matcher/bibliography.ts +16 -0
  36. package/src/tool/forensic-toolmark-striation-matcher/component.astro +121 -0
  37. package/src/tool/forensic-toolmark-striation-matcher/entry.ts +32 -0
  38. package/src/tool/forensic-toolmark-striation-matcher/forensic-toolmark-striation-matcher.css +580 -0
  39. package/src/tool/forensic-toolmark-striation-matcher/i18n/de.ts +301 -0
  40. package/src/tool/forensic-toolmark-striation-matcher/i18n/en.ts +301 -0
  41. package/src/tool/forensic-toolmark-striation-matcher/i18n/es.ts +301 -0
  42. package/src/tool/forensic-toolmark-striation-matcher/i18n/fr.ts +301 -0
  43. package/src/tool/forensic-toolmark-striation-matcher/i18n/id.ts +301 -0
  44. package/src/tool/forensic-toolmark-striation-matcher/i18n/it.ts +301 -0
  45. package/src/tool/forensic-toolmark-striation-matcher/i18n/ja.ts +301 -0
  46. package/src/tool/forensic-toolmark-striation-matcher/i18n/ko.ts +301 -0
  47. package/src/tool/forensic-toolmark-striation-matcher/i18n/nl.ts +301 -0
  48. package/src/tool/forensic-toolmark-striation-matcher/i18n/pl.ts +301 -0
  49. package/src/tool/forensic-toolmark-striation-matcher/i18n/pt.ts +301 -0
  50. package/src/tool/forensic-toolmark-striation-matcher/i18n/ru.ts +301 -0
  51. package/src/tool/forensic-toolmark-striation-matcher/i18n/sv.ts +301 -0
  52. package/src/tool/forensic-toolmark-striation-matcher/i18n/tr.ts +301 -0
  53. package/src/tool/forensic-toolmark-striation-matcher/i18n/zh.ts +301 -0
  54. package/src/tool/forensic-toolmark-striation-matcher/index.ts +11 -0
  55. package/src/tool/forensic-toolmark-striation-matcher/logic.ts +71 -0
  56. package/src/tool/forensic-toolmark-striation-matcher/renderer.ts +237 -0
  57. package/src/tool/forensic-toolmark-striation-matcher/seo.astro +15 -0
  58. package/src/tool/forensic-toolmark-striation-matcher/view.ts +291 -0
  59. package/src/tools.ts +5 -1
@@ -0,0 +1,250 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'brandmuster-ursprungsanalysator';
5
+ const title = 'Brandmuster Ursprungsanalysator';
6
+ const description = 'Kartieren Sie V-Muster, tiefe Verkohlung, Rußschatten und Reinbrand-Indikatoren auf einem Raumplan und projizieren Sie Brandausbreitungsvektoren, um den wahrscheinlichsten Ursprungsbereich zu schätzen.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Raumplan importieren',
11
+ text: 'Ziehen Sie ein Planbild in den Arbeitsbereich oder laden Sie es von der Festplatte, bevor Sie Beweisvektoren platzieren.',
12
+ },
13
+ {
14
+ name: 'Klicken, um das radiale Beweisauswahlmenü zu öffnen',
15
+ text: 'Platzieren Sie den Zeiger über einem Brandmerkmal, öffnen Sie das kontextbezogene Radialmenü und wählen Sie den Indikatortyp direkt auf der Karte.',
16
+ },
17
+ {
18
+ name: 'Ziehen, um Vektoren zu verfeinern und Konvergenz zu beobachten',
19
+ text: 'Erweitern Sie jeden Ausbreitungsvektor mit Einrasten auf der Zeichenfläche und beobachten Sie, wie das Wahrscheinlichkeitsfeld in Echtzeit neu berechnet wird, während sich die Beweise ansammeln.',
20
+ },
21
+ {
22
+ name: 'Technische Momentaufnahme exportieren',
23
+ text: 'Erstellen Sie einen strukturierten Bericht mit Ursprungskoordinaten, Konfidenz, Varianz, Ebenenzustand und dem vollständigen Vektorsatz zur späteren Überprüfung.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Können Brandmuster den genauen Punkt beweisen, an dem ein Feuer begann?',
30
+ answer: 'Nein. Brandmuster können helfen, Ursprungshypothesen zu entwickeln und zu testen, aber Belüftung, Löschmaßnahmen, Brandlast, Flashover und nachträgliche Störungen können Muster verzerren. Die tatsächliche Ursprungsbestimmung erfordert eine systematische Untersuchung.',
31
+ },
32
+ {
33
+ question: 'Warum sind V-Muster in der Brandermittlung wichtig?',
34
+ answer: 'V-Muster spiegeln oft die Aufwärts- und Auswärtsausbreitung von Flammen auf vertikalen Oberflächen wider. Sie können auf einen tiefer gelegenen Ursprungsbereich hinweisen, müssen aber mit anderen Beweisen verglichen werden, bevor Schlussfolgerungen gezogen werden.',
35
+ },
36
+ {
37
+ question: 'Was zeigt tiefe Verkohlung an?',
38
+ answer: 'Tiefe Verkohlung kann auf längere Erhitzung, höheren Wärmefluss oder Brennstoffeffekte hinweisen. Sie ist ein nützlicher Kontext, markiert aber nicht automatisch den Ursprung, da Materialien unterschiedlich schnell verkohlen.',
39
+ },
40
+ {
41
+ question: 'Warum mehrere Vektoren statt eines einzelnen Pfeils verwenden?',
42
+ answer: 'Ein einzelnes Muster kann irreführend sein. Mehrere unabhängige Vektoren reduzieren den Einfluss einer beschädigten Wand, eines einzelnen Brennstoffpakets oder eines einzelnen Belüftungswegs.',
43
+ },
44
+ ];
45
+
46
+ export const content: ToolLocaleContent = {
47
+ slug,
48
+ title,
49
+ description,
50
+ ui: {
51
+ planAria: 'Interaktiver forensischer Arbeitsbereich zum Zeichnen von Brandausbreitungsvektoren',
52
+ vPattern: 'V-Muster',
53
+ deepChar: 'Tiefe Verkohlung',
54
+ sootShadow: 'Rußschatten',
55
+ cleanBurn: 'Reinbrand',
56
+ loadPlan: 'Plan laden',
57
+ generateReport: 'Bericht erstellen',
58
+ pointerLabel: 'Zeiger',
59
+ resetVectors: 'Zurücksetzen',
60
+ estimatedOrigin: 'Geschätzter Ursprung',
61
+ visibleLayers: 'Sichtbare Beweisebenen',
62
+ vectorsLabel: 'VEKTOREN',
63
+ confidenceLabel: 'KONFIDENZ',
64
+ varianceLabel: 'VARIANZ',
65
+ modeLabel: 'MODUS',
66
+ guideSummary: 'So verwenden Sie dieses Werkzeug',
67
+ flowPanelTitle: 'Arbeitsablauf',
68
+ legendPanelTitle: 'Beweislegende',
69
+ readoutPanelTitle: 'Ergebnisanzeige',
70
+ flow1Kicker: 'SCHRITT 1',
71
+ flow1Icon: '1',
72
+ flow1Title: 'Laden',
73
+ flow1Text: 'Szenenplan hochladen',
74
+ flow2Kicker: 'SCHRITT 2',
75
+ flow2Icon: '2',
76
+ flow2Title: 'Hinweis wählen',
77
+ flow2Text: 'Auf Brandspur klicken',
78
+ flow3Kicker: 'SCHRITT 3',
79
+ flow3Icon: '3',
80
+ flow3Title: 'Vektor ziehen',
81
+ flow3Text: 'Brandrichtung zielen',
82
+ flow4Kicker: 'SCHRITT 4',
83
+ flow4Icon: '4',
84
+ flow4Title: 'Ergebnis lesen',
85
+ flow4Text: 'Fußzeile prüfen + exportieren',
86
+ basicsTitle: 'Was Sie zuerst tun sollten',
87
+ basicsIntro: 'Laden Sie einen klaren Plan, markieren Sie nur Muster, die Sie begründen können, und verteilen Sie Vektoren auf verschiedene Oberflächen, statt denselben Hinweis zu wiederholen.',
88
+ indicatorsTitle: 'Was jeder Beweistyp bedeutet',
89
+ vPatternShort: 'Wandbrand öffnet sich nach oben',
90
+ vPatternExplain: 'Ein V-Muster ist die vertraute Aufwärts-und-Auswärts-Brandform, die oft an einer Wand zu sehen ist. Es kann darauf hindeuten, dass Hitze und Flammen von einem tieferen Bereich aufstiegen, ist aber kein automatischer Beweis für den genauen Ursprung.',
91
+ deepCharShort: 'Bereich härter oder länger gebrannt',
92
+ deepCharExplain: 'Tiefe Verkohlung bedeutet, dass ein Material in einem Bereich stärker verbrannt, geschwärzt oder verzehrt erscheint als in seiner Umgebung. Sie kann auf längere oder intensivere Erhitzung hinweisen, aber Brennstoffart und Materialdicke spielen eine große Rolle.',
93
+ sootShadowShort: 'Rauch blockiert oder umgelenkt',
94
+ sootShadowExplain: 'Ein Rußschatten ist ein geschützter oder unterschiedlich verdunkelter Bereich, der darauf hindeutet, dass ein Objekt, eine Oberfläche oder ein Luftstrom die Rußablagerung veränderte. Er kann helfen zu rekonstruieren, was vorhanden war oder wie sich Rauch bewegte.',
95
+ cleanBurnShort: 'Weniger Ruß durch Hitze oder Luftstrom',
96
+ cleanBurnExplain: 'Reinbrand ist ein Bereich, in dem Ruß heller, entfernt oder abwesend erscheint, weil Hitze, Belüftung oder direkte Flammeneinwirkung ihn anders beeinflussten. Er ist nützlich, aber nicht jeder saubere Bereich markiert den Ursprung.',
97
+ resultsTitle: 'So lesen Sie das Ergebnis',
98
+ resultsIntro: 'Verwenden Sie die Fußzeile als schnelle Gesundheitsprüfung für Ihre Kartierung, nicht als endgültige forensische Schlussfolgerung.',
99
+ resultsPoint1: 'Wie viele Beweislinien aktiv sind.',
100
+ resultsPoint2: 'Wie stark die aktiven Vektoren übereinstimmen.',
101
+ resultsPoint3: 'Wie breit der Ursprungsbereich noch ist.',
102
+ resultsPoint4: 'Was das Werkzeug von Ihnen als Nächstes erwartet.',
103
+ awaitingVector: 'Warte auf Vektor',
104
+ selectIndicator: 'Indikator auswählen',
105
+ refiningVector: 'Vektor verfeinern',
106
+ needsMoreVectors: 'Weitere Vektoren erforderlich',
107
+ wideArea: 'Breiter Ursprungsbereich',
108
+ focusedArea: 'Fokussierter Ursprungsbereich',
109
+ dropPlan: 'Planbild ablegen oder zum Hochladen klicken',
110
+ needsMoreVectorsText: 'Zeichnen Sie mindestens zwei klare Richtungspfeile. Drei oder mehr unabhängige Beobachtungen machen die Konvergenz meist deutlich leichter interpretierbar.',
111
+ wideAreaText: 'Die projizierten Linien schneiden sich, aber die Streuung ist noch breit. Vergleichen Sie in einer realen Szene Belüftung, Brandlast, Löscheffekte und Zeugeninformationen, bevor Sie den Ursprung eingrenzen.',
112
+ focusedAreaText: 'Die Vektoren konvergieren in einem kompakten Bereich. Betrachten Sie dies als starkes Lehrsignal für die Ursprungshypothesenentwicklung, nicht als endgültige forensische Schlussfolgerung.',
113
+ disclaimer: 'Nur für Bildungszwecke. Die tatsächliche Brandursprungs- und -ursachenermittlung sollte anerkannten Richtlinien, Sicherheitsprotokollen vor Ort, Dokumentationsstandards und qualifizierter Expertenprüfung folgen.',
114
+ },
115
+ seo: [
116
+ {
117
+ type: 'title',
118
+ text: 'Interaktive Brandursprungsanalyse aus Brandmuster-Vektoren',
119
+ level: 2,
120
+ },
121
+ {
122
+ type: 'diagnostic',
123
+ variant: 'info',
124
+ icon: 'mdi:fire-alert',
125
+ badge: 'Lehrsimulator',
126
+ title: 'Was dieser Brandmuster Ursprungsanalysator lehrt',
127
+ html: 'Dieses Browser-Werkzeug demonstriert, wie Ermittler von physischen Brandmustern auf einen wahrscheinlichen <strong>Ursprungsbereich</strong> schließen. Benutzer kartieren sichtbare Beweise, zeichnen gerichtete Ausbreitungsvektoren und beobachten, wie die projizierten Linien konvergieren oder divergieren. Das Modell ist bewusst lehrreich: Es lehrt Geometrie und Musterinterpretation, nicht rechtliche Ursachenbestimmung.',
128
+ },
129
+ {
130
+ type: 'stats',
131
+ columns: 4,
132
+ items: [
133
+ { value: '4 Ebenen', label: 'V-Muster, Verkohlung, Ruß, Reinbrand', icon: 'mdi:layers-triple' },
134
+ { value: '2D-Plan', label: 'struktureller Raumplan', icon: 'mdi:floor-plan' },
135
+ { value: '3+ Pfeile', label: 'empfohlene Beobachtungen', icon: 'mdi:vector-line' },
136
+ { value: '0-100 %', label: 'Konfidenzeingabe', icon: 'mdi:gauge' },
137
+ ],
138
+ },
139
+ {
140
+ type: 'summary',
141
+ title: 'Ein disziplinierter Arbeitsablauf für die Brandmusterinterpretation',
142
+ items: [
143
+ 'Beginnen Sie mit Sicherheit, Tatortsicherung, Fotos, Skizzen und systematischer Dokumentation, bevor Sie Muster interpretieren.',
144
+ 'Trennen Sie Mustertypen, damit V-förmige Schäden, Verkohlungstiefe, Rußablagerung und Reinbrand nicht zu einer Annahme zusammengefasst werden.',
145
+ 'Zeichnen Sie Richtungsindikatoren nur dort, wo das physische Muster eine vertretbare Ausbreitungsrichtung unterstützt.',
146
+ 'Suchen Sie nach Konvergenz zwischen unabhängigen Beobachtungen, anstatt sich auf den dramatischsten Schaden zu verlassen.',
147
+ 'Verwenden Sie den geschätzten Ursprungsbereich als Hypothese, die gegen Brennstoffe, Zündquellen, Belüftung, elektrische Beweise und Zeugenaussagen getestet wird.',
148
+ ],
149
+ },
150
+ {
151
+ type: 'table',
152
+ headers: ['Muster', 'Potenzieller Wert', 'Hauptwarnung'],
153
+ rows: [
154
+ ['V-Muster', 'Kann Aufwärts- und Auswärtsausbreitung von einem tieferen Bereich nahelegen.', 'Kann durch Belüftung, Flashover, Wandgeometrie und Löschmaßnahmen verändert werden.'],
155
+ ['Tiefe Verkohlung', 'Kann auf anhaltende Hitzeeinwirkung oder intensive Verbrennung hinweisen.', 'Brennstoffart und Materialdicke beeinflussen die Verkohlungstiefe stark.'],
156
+ ['Rußschatten', 'Kann geschützte Bereiche, Objektplatzierung oder Luftstromeffekte aufzeigen.', 'Verschobene Möbel oder Löschaktivitäten können die Interpretation verändern.'],
157
+ ['Reinbrand', 'Kann hohe Hitze, Belüftung oder späte Brandphase zeigen.', 'Identifiziert nicht automatisch den zuerst entzündeten Gegenstand.'],
158
+ ],
159
+ },
160
+ {
161
+ type: 'comparative',
162
+ columns: 2,
163
+ items: [
164
+ {
165
+ title: 'Bessere Ursprungshypothesen',
166
+ icon: 'mdi:check-circle-outline',
167
+ highlight: true,
168
+ description: 'Die besten Hypothesen erklären mehrere Beobachtungen gleichzeitig.',
169
+ points: ['Unabhängige Vektoren konvergieren', 'Beweise passen zu bekannten Belüftungswegen', 'Brennstoffpakete sind erfasst', 'Alternative Ursprünge werden aktiv getestet'],
170
+ },
171
+ {
172
+ title: 'Schwache Ursprungshypothesen',
173
+ icon: 'mdi:alert-circle-outline',
174
+ description: 'Schwache Hypothesen stützen sich oft auf ein einziges Muster ohne Prüfung von Verzerrungsfaktoren.',
175
+ points: ['Ein einzelner verbrannter Bereich wird als Beweis behandelt', 'Flashover wird ignoriert', 'Löschschäden sind nicht dokumentiert', 'Zündquellenbeweise werden vorausgesetzt'],
176
+ },
177
+ ],
178
+ },
179
+ {
180
+ type: 'title',
181
+ text: 'Wie das Vektormodell funktioniert',
182
+ level: 3,
183
+ },
184
+ {
185
+ type: 'paragraph',
186
+ html: 'Jeder Pfeil wird als projizierte Linie der Brandausbreitung behandelt. Der Schätzer berechnet paarweise Linienschnittpunkte, filtert Punkte, die innerhalb einer angemessenen Plangrenze liegen, mittelt die verbleibenden Kreuzungen und meldet einen Radius basierend auf der Streuung dieser Schnittpunkte. Ein kleiner Radius mit mehreren Vektoren erzeugt ein stärkeres Konvergenzsignal. Das Schnittmodell funktioniert, indem es die parametrischen Gleichungen zweier Linien löst, die von ihren jeweiligen Beweismarkierungen ausgehen. Wenn zwei Vektoren auf eine gemeinsame Region zeigen, trägt ihr theoretischer Kreuzungspunkt eine Koordinate zum Mittelungspool bei. Je mehr unabhängige Vektoren teilnehmen, desto besser kann der Schätzer Kreuzungen herausfiltern, die weit vom Hauptcluster entfernt liegen, und so den Einfluss einer einzelnen Beobachtung reduzieren, die möglicherweise schlecht ausgerichtet oder falsch interpretiert wurde.',
187
+ },
188
+ {
189
+ type: 'paragraph',
190
+ html: 'Dieser geometrische Ansatz spiegelt eine Unterrichtsübung wider: Er hilft Studenten zu verstehen, warum die Ursprungsanalyse besser wird, wenn Beobachtungen von verschiedenen Oberflächen und Mustertypen stammen. Er zeigt auch ein häufiges Problem: Pfeile können sich schneiden, selbst wenn die zugrunde liegende Interpretation schlecht ist, daher darf das mathematische Zentrum niemals das brandwissenschaftliche Urteil ersetzen. In einer echten Untersuchung vergleichen Praktiker das dargestellte Ergebnis mit Belüftungswegen, Brandlastverteilung, strukturellen Schäden und Zeugenaussagen, bevor sie eine Koordinate als wahrscheinlichen Ursprung behandeln. Das Werkzeug fördert diese Gewohnheit, indem es die Varianz neben dem geschätzten Punkt anzeigt und die Benutzer daran erinnert, dass ein enges Kreuzungscluster nur so stark ist wie die Qualität der Beobachtungen, die es erzeugt haben.',
191
+ },
192
+ {
193
+ type: 'paragraph',
194
+ html: 'Über die grundlegende Schnittlogik hinaus wendet der Schätzer eine Randbeschränkung an, sodass Kreuzungen, die weit außerhalb des Raumplans liegen, ausgeschlossen werden. Dies verhindert, dass Ausreißer das gemittelte Zentrum in unmögliche Richtungen ziehen. Der endgültige Radius stellt die Standardabweichung der verbleibenden Kreuzungskoordinaten dar und liefert ein direktes Maß dafür, wie konsistent die aktiven Vektoren übereinstimmen. Ein Radius unter zehn Prozent der Planspannweite zeigt eine starke Konvergenz an. Ein Radius von mehr als einem Viertel des Plans signalisiert, dass die Beweise noch keinen fokussierten Ursprung unterstützen und mehr oder bessere Beobachtungen erforderlich sind, bevor Schlussfolgerungen gezogen werden.',
195
+ },
196
+ {
197
+ type: 'glossary',
198
+ items: [
199
+ { term: 'Ursprungsbereich', definition: 'Der allgemeine Bereich, in dem die verfügbaren Beweise den Brandbeginn nahelegen.' },
200
+ { term: 'V-Muster', definition: 'Ein Brandmuster, das oft als Aufwärts- und Auswärtsschaden auf einer vertikalen Oberfläche erscheint.' },
201
+ { term: 'Reinbrand', definition: 'Ein hellerer oder sauberer Bereich, der entsteht, wenn Ruß unter hoher Hitze oder Luftstrom wegbrennt oder nicht abgelagert wird.' },
202
+ { term: 'Rußschatten', definition: 'Ein geschützter oder unterschiedlich abgelagerter Rußbereich, der Informationen über Objekte, Luftstrom oder Hitzeeinwirkung bewahren kann.' },
203
+ { term: 'Vektorkonvergenz', definition: 'Die Häufung projizierter Richtungsindikatoren um einen gemeinsamen Bereich.' },
204
+ ],
205
+ },
206
+ {
207
+ type: 'diagnostic',
208
+ variant: 'warning',
209
+ icon: 'mdi:scale-balance',
210
+ badge: 'Forensische Vorsicht',
211
+ title: 'Konvergenz nicht in Gewissheit verwandeln',
212
+ html: 'Ein enger Schnittpunktcluster ist nur nützlich, wenn die Beobachtungen gültig sind. Reale Untersuchungen müssen Belüftung, Flashover, Brennstoffpakete, elektrische Systeme, Gerätebeweise, Zeugenaussagen, Löschmaßnahmen und Tatortveränderungen berücksichtigen.',
213
+ },
214
+ ],
215
+ faq,
216
+ bibliography,
217
+ howTo,
218
+ schemas: [
219
+ {
220
+ '@context': 'https://schema.org',
221
+ '@type': 'SoftwareApplication',
222
+ name: title,
223
+ description,
224
+ applicationCategory: 'ForensicApplication',
225
+ operatingSystem: 'Any',
226
+ },
227
+ {
228
+ '@context': 'https://schema.org',
229
+ '@type': 'FAQPage',
230
+ mainEntity: faq.map((item) => ({
231
+ '@type': 'Question',
232
+ name: item.question,
233
+ acceptedAnswer: {
234
+ '@type': 'Answer',
235
+ text: item.answer,
236
+ },
237
+ })),
238
+ },
239
+ {
240
+ '@context': 'https://schema.org',
241
+ '@type': 'HowTo',
242
+ name: title,
243
+ step: howTo.map((step) => ({
244
+ '@type': 'HowToStep',
245
+ name: step.name,
246
+ text: step.text,
247
+ })),
248
+ },
249
+ ],
250
+ };
@@ -0,0 +1,250 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import { bibliography } from '../bibliography';
3
+
4
+ const slug = 'fire-pattern-origin-analyzer';
5
+ const title = 'Fire Pattern Origin Analyzer';
6
+ const description = 'Map V-patterns, deep char, soot shadows, and clean burn indicators on a room plan, then project fire spread vectors to estimate the most likely area of origin.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Import a room plan',
11
+ text: 'Drag a plan image onto the workspace or load one from disk before placing any evidence vectors.',
12
+ },
13
+ {
14
+ name: 'Click to open the radial evidence selector',
15
+ text: 'Place the pointer over a burn feature, open the contextual radial menu, and choose the indicator type directly on the map.',
16
+ },
17
+ {
18
+ name: 'Drag to refine vectors and watch convergence',
19
+ text: 'Extend each propagation vector with on-canvas snapping and observe the probability field recalculate in real time as evidence accumulates.',
20
+ },
21
+ {
22
+ name: 'Export the technical snapshot',
23
+ text: 'Generate a structured report with origin coordinates, confidence, variance, layer state, and the complete vector set for later review.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Can burn patterns prove the exact point where a fire started?',
30
+ answer: 'No. Fire patterns can help generate and test origin hypotheses, but ventilation, suppression, fuel load, flashover, and post-fire disturbance can distort patterns. Real origin determination requires a systematic investigation.',
31
+ },
32
+ {
33
+ question: 'Why do V-patterns matter in fire investigation?',
34
+ answer: 'V-patterns often reflect upward and outward flame spread on vertical surfaces. They can point toward a lower area of origin, but they must be compared with other evidence before drawing conclusions.',
35
+ },
36
+ {
37
+ question: 'What does deep char indicate?',
38
+ answer: 'Deep char may indicate longer heating, greater heat flux, or fuel effects. It is useful context, but it is not automatically the origin because materials char at different rates.',
39
+ },
40
+ {
41
+ question: 'Why use several vectors instead of one arrow?',
42
+ answer: 'A single pattern can be misleading. Multiple independent vectors reduce the influence of one damaged wall, one fuel package, or one ventilation path.',
43
+ },
44
+ ];
45
+
46
+ export const content: ToolLocaleContent = {
47
+ slug,
48
+ title,
49
+ description,
50
+ ui: {
51
+ planAria: 'Interactive forensic workspace for drawing fire spread vectors',
52
+ vPattern: 'V-pattern',
53
+ deepChar: 'Deep char',
54
+ sootShadow: 'Soot shadow',
55
+ cleanBurn: 'Clean burn',
56
+ loadPlan: 'Load plan',
57
+ generateReport: 'Generate report',
58
+ pointerLabel: 'Pointer',
59
+ resetVectors: 'Reset',
60
+ estimatedOrigin: 'Estimated origin',
61
+ visibleLayers: 'Visible evidence layers',
62
+ vectorsLabel: 'VECTORS',
63
+ confidenceLabel: 'CONFIDENCE',
64
+ varianceLabel: 'VARIANCE',
65
+ modeLabel: 'MODE',
66
+ guideSummary: 'How to use this tool',
67
+ flowPanelTitle: 'Workflow',
68
+ legendPanelTitle: 'Evidence legend',
69
+ readoutPanelTitle: 'Footer readout',
70
+ flow1Kicker: 'STEP 1',
71
+ flow1Icon: '1',
72
+ flow1Title: 'Load',
73
+ flow1Text: 'Upload the scene plan',
74
+ flow2Kicker: 'STEP 2',
75
+ flow2Icon: '2',
76
+ flow2Title: 'Pick clue',
77
+ flow2Text: 'Click the burn mark',
78
+ flow3Kicker: 'STEP 3',
79
+ flow3Icon: '3',
80
+ flow3Title: 'Drag vector',
81
+ flow3Text: 'Aim fire travel',
82
+ flow4Kicker: 'STEP 4',
83
+ flow4Icon: '4',
84
+ flow4Title: 'Read result',
85
+ flow4Text: 'Check footer + export',
86
+ basicsTitle: 'What you should do first',
87
+ basicsIntro: 'Load a clear plan, mark only patterns you can justify, and spread vectors across different surfaces instead of repeating the same clue.',
88
+ indicatorsTitle: 'What each evidence type means',
89
+ vPatternShort: 'Wall burn opens upward',
90
+ vPatternExplain: 'A V-pattern is the familiar upward-and-outward burn shape often seen on a wall. It can suggest that heat and flames rose from a lower area, but it is not automatic proof of the exact origin.',
91
+ deepCharShort: 'Area burned harder or longer',
92
+ deepCharExplain: 'Deep char means a material appears more heavily burned, blackened, or consumed in one area than around it. It may indicate longer or more intense heating, but fuel type and material thickness matter a lot.',
93
+ sootShadowShort: 'Smoke blocked or redirected',
94
+ sootShadowExplain: 'A soot shadow is a protected or differently darkened area that suggests an object, surface, or airflow changed how soot was deposited. It can help reconstruct what was present or how smoke moved.',
95
+ cleanBurnShort: 'Less soot from heat or airflow',
96
+ cleanBurnExplain: 'Clean burn is an area where soot seems lighter, removed, or absent because heat, ventilation, or direct flame exposure affected it differently. It is useful, but not every clean area marks the origin.',
97
+ resultsTitle: 'How to read the result',
98
+ resultsIntro: 'Use the footer as a quick health check for your mapping, not as a final forensic conclusion.',
99
+ resultsPoint1: 'How many evidence lines are active.',
100
+ resultsPoint2: 'How strongly the active vectors agree.',
101
+ resultsPoint3: 'How broad the origin area still is.',
102
+ resultsPoint4: 'What the tool expects you to do next.',
103
+ awaitingVector: 'Awaiting vector',
104
+ selectIndicator: 'Select indicator',
105
+ refiningVector: 'Refining vector',
106
+ needsMoreVectors: 'More vectors needed',
107
+ wideArea: 'Broad origin area',
108
+ focusedArea: 'Focused origin area',
109
+ dropPlan: 'Drop plan image or click to upload',
110
+ needsMoreVectorsText: 'Draw at least two clear directional arrows. Three or more independent observations usually make the convergence much easier to interpret.',
111
+ wideAreaText: 'The projected lines intersect, but the spread is still wide. In a real scene, compare ventilation, fuel load, suppression effects, and witness information before narrowing the origin.',
112
+ focusedAreaText: 'The vectors converge into a compact area. Treat this as a strong teaching signal for origin hypothesis development, not as a final forensic conclusion.',
113
+ disclaimer: 'Educational simulation only. Actual fire origin and cause investigation should follow accepted guides, scene safety protocols, documentation standards, and qualified expert review.',
114
+ },
115
+ seo: [
116
+ {
117
+ type: 'title',
118
+ text: 'Interactive Fire Origin Analysis from Burn Pattern Vectors',
119
+ level: 2,
120
+ },
121
+ {
122
+ type: 'diagnostic',
123
+ variant: 'info',
124
+ icon: 'mdi:fire-alert',
125
+ badge: 'Teaching simulator',
126
+ title: 'What this fire pattern origin analyzer teaches',
127
+ html: 'This browser tool demonstrates how investigators reason from physical fire patterns toward a probable <strong>area of origin</strong>. Users map visible evidence, draw directional spread vectors, and watch the projected lines converge or disperse. The model is intentionally educational: it teaches geometry and pattern interpretation, not legal cause determination.',
128
+ },
129
+ {
130
+ type: 'stats',
131
+ columns: 4,
132
+ items: [
133
+ { value: '4 layers', label: 'V-pattern, char, soot, clean burn', icon: 'mdi:layers-triple' },
134
+ { value: '2D plan', label: 'structural room map', icon: 'mdi:floor-plan' },
135
+ { value: '3+ arrows', label: 'recommended observations', icon: 'mdi:vector-line' },
136
+ { value: '0-100%', label: 'confidence input', icon: 'mdi:gauge' },
137
+ ],
138
+ },
139
+ {
140
+ type: 'summary',
141
+ title: 'A disciplined workflow for fire pattern interpretation',
142
+ items: [
143
+ 'Begin with safety, scene preservation, photographs, sketches, and systematic documentation before interpreting patterns.',
144
+ 'Separate pattern types so V-shaped damage, char depth, soot deposition, and clean burn are not collapsed into one assumption.',
145
+ 'Draw directional indicators only where the physical pattern supports a defensible direction of travel.',
146
+ 'Look for convergence among independent observations rather than relying on the most dramatic damage.',
147
+ 'Use the estimated area of origin as a hypothesis to test against fuels, ignition sources, ventilation, electrical evidence, and witness accounts.',
148
+ ],
149
+ },
150
+ {
151
+ type: 'table',
152
+ headers: ['Pattern', 'Potential value', 'Main caution'],
153
+ rows: [
154
+ ['V-pattern', 'May suggest upward and outward flame travel from a lower area.', 'Can be altered by ventilation, flashover, wall geometry, and suppression.'],
155
+ ['Deep char', 'Can indicate sustained heat exposure or intense burning.', 'Fuel type and material thickness strongly affect char depth.'],
156
+ ['Soot shadow', 'May reveal protected areas, object placement, or airflow effects.', 'Moved furniture or suppression activity can change the interpretation.'],
157
+ ['Clean burn', 'Can show high heat, ventilation, or late-stage burning.', 'It does not automatically identify the first item ignited.'],
158
+ ],
159
+ },
160
+ {
161
+ type: 'comparative',
162
+ columns: 2,
163
+ items: [
164
+ {
165
+ title: 'Better origin hypotheses',
166
+ icon: 'mdi:check-circle-outline',
167
+ highlight: true,
168
+ description: 'The best hypotheses explain multiple observations at the same time.',
169
+ points: ['Independent vectors converge', 'Evidence fits known ventilation paths', 'Fuel packages are accounted for', 'Alternative origins are actively tested'],
170
+ },
171
+ {
172
+ title: 'Weak origin hypotheses',
173
+ icon: 'mdi:alert-circle-outline',
174
+ description: 'Weak hypotheses often rely on one pattern without testing distortion factors.',
175
+ points: ['One dramatic char area is treated as proof', 'Flashover is ignored', 'Suppression damage is not documented', 'Ignition source evidence is assumed'],
176
+ },
177
+ ],
178
+ },
179
+ {
180
+ type: 'title',
181
+ text: 'How the Vector Model Works',
182
+ level: 3,
183
+ },
184
+ {
185
+ type: 'paragraph',
186
+ html: 'Each arrow is treated as a projected line of fire travel. The estimator calculates pairwise line intersections, filters points that fall within a reasonable plan boundary, averages the remaining crossings, and reports a radius based on the spread of those intersections. A small radius with several vectors produces a stronger convergence signal. The intersection model works by solving the parametric equations of two lines extending from their respective evidence markers. When two vectors point toward a shared region, their theoretical crossing point contributes one coordinate to the averaging pool. The more independent vectors that participate, the more the estimator can filter out crossings that sit far from the main cluster, effectively reducing the influence of any single observation that might be poorly oriented or misinterpreted.',
187
+ },
188
+ {
189
+ type: 'paragraph',
190
+ html: 'This geometric approach mirrors a classroom sketching exercise: it helps students see why origin analysis improves when observations come from different surfaces and pattern types. It also exposes a common problem: arrows can intersect even when the underlying interpretation is poor, so the mathematical center must never replace fire science judgment. In a real investigation, practitioners compare the plotted result against ventilation paths, fuel load distribution, structural damage, and witness statements before treating any coordinate as a likely origin. The tool encourages this habit by displaying variance alongside the estimated point, reminding users that a tight cluster of crossings is only as strong as the quality of the observations that produced it.',
191
+ },
192
+ {
193
+ type: 'paragraph',
194
+ html: 'Beyond the basic intersection logic, the estimator applies a boundary constraint so that crossings located far outside the room plan are excluded. This prevents outliers from dragging the averaged center toward impossible locations. The final radius represents the standard deviation of the remaining crossing coordinates, giving a direct measure of how consistently the active vectors agree. A radius under ten percent of the plan span indicates strong convergence. A radius exceeding a quarter of the plan signals that the evidence does not yet support a focused origin, and more or better observations are needed before drawing conclusions.',
195
+ },
196
+ {
197
+ type: 'glossary',
198
+ items: [
199
+ { term: 'Area of origin', definition: 'The general region where available evidence suggests the fire began.' },
200
+ { term: 'V-pattern', definition: 'A fire pattern that often appears as upward and outward damage on a vertical surface.' },
201
+ { term: 'Clean burn', definition: 'A lighter or cleaner area caused when soot is burned away or not deposited under high heat or airflow conditions.' },
202
+ { term: 'Soot shadow', definition: 'A protected or differently deposited soot area that can preserve information about objects, airflow, or heat exposure.' },
203
+ { term: 'Vector convergence', definition: 'The clustering of projected directional indicators around a common region.' },
204
+ ],
205
+ },
206
+ {
207
+ type: 'diagnostic',
208
+ variant: 'warning',
209
+ icon: 'mdi:scale-balance',
210
+ badge: 'Forensic caution',
211
+ title: 'Do not turn convergence into certainty',
212
+ html: 'A tight intersection cluster is useful only when the observations are valid. Real investigations must account for ventilation, flashover, fuel packages, electrical systems, appliance evidence, witness statements, suppression, and scene disturbance.',
213
+ },
214
+ ],
215
+ faq,
216
+ bibliography,
217
+ howTo,
218
+ schemas: [
219
+ {
220
+ '@context': 'https://schema.org',
221
+ '@type': 'SoftwareApplication',
222
+ name: title,
223
+ description,
224
+ applicationCategory: 'ForensicApplication',
225
+ operatingSystem: 'Any',
226
+ },
227
+ {
228
+ '@context': 'https://schema.org',
229
+ '@type': 'FAQPage',
230
+ mainEntity: faq.map((item) => ({
231
+ '@type': 'Question',
232
+ name: item.question,
233
+ acceptedAnswer: {
234
+ '@type': 'Answer',
235
+ text: item.answer,
236
+ },
237
+ })),
238
+ },
239
+ {
240
+ '@context': 'https://schema.org',
241
+ '@type': 'HowTo',
242
+ name: title,
243
+ step: howTo.map((step) => ({
244
+ '@type': 'HowToStep',
245
+ name: step.name,
246
+ text: step.text,
247
+ })),
248
+ },
249
+ ],
250
+ };