@jjlmoya/utils-motor 1.2.0 → 1.4.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 (95) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +4 -1
  3. package/src/entries.ts +10 -1
  4. package/src/index.ts +15 -0
  5. package/src/tests/locale_completeness.test.ts +1 -1
  6. package/src/tests/seo_translation_completeness.test.ts +69 -0
  7. package/src/tests/tool_validation.test.ts +1 -1
  8. package/src/tool/carMotorcycleGearRatioCalculator/bibliography.astro +6 -0
  9. package/src/tool/carMotorcycleGearRatioCalculator/bibliography.ts +12 -0
  10. package/src/tool/carMotorcycleGearRatioCalculator/car-motorcycle-gear-ratio-rpm-speed-calculator.css +668 -0
  11. package/src/tool/carMotorcycleGearRatioCalculator/component.astro +137 -0
  12. package/src/tool/carMotorcycleGearRatioCalculator/controller.ts +209 -0
  13. package/src/tool/carMotorcycleGearRatioCalculator/dom-views.ts +121 -0
  14. package/src/tool/carMotorcycleGearRatioCalculator/entry.ts +30 -0
  15. package/src/tool/carMotorcycleGearRatioCalculator/evaluator.ts +28 -0
  16. package/src/tool/carMotorcycleGearRatioCalculator/i18n/de.ts +162 -0
  17. package/src/tool/carMotorcycleGearRatioCalculator/i18n/en.ts +162 -0
  18. package/src/tool/carMotorcycleGearRatioCalculator/i18n/es.ts +162 -0
  19. package/src/tool/carMotorcycleGearRatioCalculator/i18n/fr.ts +162 -0
  20. package/src/tool/carMotorcycleGearRatioCalculator/i18n/id.ts +162 -0
  21. package/src/tool/carMotorcycleGearRatioCalculator/i18n/it.ts +162 -0
  22. package/src/tool/carMotorcycleGearRatioCalculator/i18n/ja.ts +162 -0
  23. package/src/tool/carMotorcycleGearRatioCalculator/i18n/ko.ts +162 -0
  24. package/src/tool/carMotorcycleGearRatioCalculator/i18n/nl.ts +162 -0
  25. package/src/tool/carMotorcycleGearRatioCalculator/i18n/pl.ts +162 -0
  26. package/src/tool/carMotorcycleGearRatioCalculator/i18n/pt.ts +162 -0
  27. package/src/tool/carMotorcycleGearRatioCalculator/i18n/ru.ts +162 -0
  28. package/src/tool/carMotorcycleGearRatioCalculator/i18n/sv.ts +162 -0
  29. package/src/tool/carMotorcycleGearRatioCalculator/i18n/tr.ts +162 -0
  30. package/src/tool/carMotorcycleGearRatioCalculator/i18n/zh.ts +162 -0
  31. package/src/tool/carMotorcycleGearRatioCalculator/index.ts +10 -0
  32. package/src/tool/carMotorcycleGearRatioCalculator/logic.test.ts +51 -0
  33. package/src/tool/carMotorcycleGearRatioCalculator/logic.ts +91 -0
  34. package/src/tool/carMotorcycleGearRatioCalculator/seo.astro +15 -0
  35. package/src/tool/carMotorcycleGearRatioCalculator/storage.ts +46 -0
  36. package/src/tool/carMotorcycleGearRatioCalculator/ui.ts +50 -0
  37. package/src/tool/motorcycleSkidMarkSpeedEstimator/bibliography.astro +6 -0
  38. package/src/tool/motorcycleSkidMarkSpeedEstimator/bibliography.ts +12 -0
  39. package/src/tool/motorcycleSkidMarkSpeedEstimator/component.astro +166 -0
  40. package/src/tool/motorcycleSkidMarkSpeedEstimator/controller.ts +207 -0
  41. package/src/tool/motorcycleSkidMarkSpeedEstimator/dom-views.ts +101 -0
  42. package/src/tool/motorcycleSkidMarkSpeedEstimator/entry.ts +30 -0
  43. package/src/tool/motorcycleSkidMarkSpeedEstimator/evaluator.ts +7 -0
  44. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/de.ts +185 -0
  45. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/en.ts +185 -0
  46. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/es.ts +185 -0
  47. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/fr.ts +185 -0
  48. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/id.ts +185 -0
  49. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/it.ts +185 -0
  50. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/ja.ts +201 -0
  51. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/ko.ts +201 -0
  52. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/nl.ts +185 -0
  53. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/pl.ts +185 -0
  54. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/pt.ts +185 -0
  55. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/ru.ts +185 -0
  56. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/sv.ts +185 -0
  57. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/tr.ts +185 -0
  58. package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/zh.ts +201 -0
  59. package/src/tool/motorcycleSkidMarkSpeedEstimator/index.ts +10 -0
  60. package/src/tool/motorcycleSkidMarkSpeedEstimator/logic.test.ts +229 -0
  61. package/src/tool/motorcycleSkidMarkSpeedEstimator/logic.ts +179 -0
  62. package/src/tool/motorcycleSkidMarkSpeedEstimator/motorcycle-skid-mark-speed-estimator.css +523 -0
  63. package/src/tool/motorcycleSkidMarkSpeedEstimator/seo.astro +15 -0
  64. package/src/tool/motorcycleSkidMarkSpeedEstimator/storage.ts +49 -0
  65. package/src/tool/motorcycleSkidMarkSpeedEstimator/ui.ts +46 -0
  66. package/src/tool/tirePressureConverter/bibliography.astro +6 -0
  67. package/src/tool/tirePressureConverter/bibliography.ts +12 -0
  68. package/src/tool/tirePressureConverter/component.astro +82 -0
  69. package/src/tool/tirePressureConverter/controller.ts +120 -0
  70. package/src/tool/tirePressureConverter/dom-views.ts +31 -0
  71. package/src/tool/tirePressureConverter/entry.ts +30 -0
  72. package/src/tool/tirePressureConverter/evaluator.ts +8 -0
  73. package/src/tool/tirePressureConverter/i18n/de.ts +96 -0
  74. package/src/tool/tirePressureConverter/i18n/en.ts +96 -0
  75. package/src/tool/tirePressureConverter/i18n/es.ts +96 -0
  76. package/src/tool/tirePressureConverter/i18n/fr.ts +96 -0
  77. package/src/tool/tirePressureConverter/i18n/id.ts +95 -0
  78. package/src/tool/tirePressureConverter/i18n/it.ts +95 -0
  79. package/src/tool/tirePressureConverter/i18n/ja.ts +95 -0
  80. package/src/tool/tirePressureConverter/i18n/ko.ts +95 -0
  81. package/src/tool/tirePressureConverter/i18n/nl.ts +95 -0
  82. package/src/tool/tirePressureConverter/i18n/pl.ts +95 -0
  83. package/src/tool/tirePressureConverter/i18n/pt.ts +95 -0
  84. package/src/tool/tirePressureConverter/i18n/ru.ts +95 -0
  85. package/src/tool/tirePressureConverter/i18n/sv.ts +95 -0
  86. package/src/tool/tirePressureConverter/i18n/tr.ts +95 -0
  87. package/src/tool/tirePressureConverter/i18n/zh.ts +95 -0
  88. package/src/tool/tirePressureConverter/index.ts +10 -0
  89. package/src/tool/tirePressureConverter/logic.test.ts +37 -0
  90. package/src/tool/tirePressureConverter/logic.ts +47 -0
  91. package/src/tool/tirePressureConverter/seo.astro +15 -0
  92. package/src/tool/tirePressureConverter/storage.ts +27 -0
  93. package/src/tool/tirePressureConverter/tire-pressure-converter-psi-bar-kpa-kgf-cm2.css +293 -0
  94. package/src/tool/tirePressureConverter/ui.ts +20 -0
  95. package/src/tools.ts +4 -1
@@ -0,0 +1,185 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import type { SEOSection } from '@jjlmoya/utils-shared';
3
+ import { bibliographyEntries } from '../bibliography';
4
+ import type { MotorcycleSkidMarkSpeedEstimatorLocaleContent } from '../entry';
5
+
6
+ const slug = 'motorcykel-bromsspar-hastighetsberaknare';
7
+ const title = 'Motorcykel Bromsspår Hastighetsberäknare';
8
+ const description =
9
+ 'Uppskatta motorcykelns hastighet utifrån bromsspårets längd, vägfriktion och väglutning. Pedagogisk fysikmodell för olycksanalys.';
10
+
11
+ const faq = [
12
+ {
13
+ question: 'Vad visar ett bromsspår ?',
14
+ answer:
15
+ 'Ett låst hjulbromsspår visar sträckan som krävdes för att minska den kinetiska energin genom friktionsvärme. Den fysikaliska energiekvationen beräknar den lägsta initiala hastigheten vid starten av det synliga spåret.',
16
+ },
17
+ {
18
+ question: 'Varför visas resultatet som ett intervall ?',
19
+ answer:
20
+ 'Friktionen på vägbanan och bromskraftsfördelningen mellan fram- och bakhjul innehåller osäkerheter. Beräknaren anger därför lägsta, medel- och högsta värde för att visa uppskattningens känslighet.',
21
+ },
22
+ {
23
+ question: 'Kan resultatet användas i en officiell olycksutredning ?',
24
+ answer:
25
+ 'Nej. En officiella olycksutredning kräver friktionsmätningar med friktionssläde på platsen, analys av ABS-system och undersökning av experter. Detta verktyg är ett pedagogiskt fysiklaboratorium.',
26
+ },
27
+ {
28
+ question: 'Hur skiljer sig detta från en bromssträckaberäknare ?',
29
+ answer:
30
+ 'En bromssträckaberäknare utgår från hastigheten för att beräkna stoppsträckan. Detta verktyg räknar baklänges från det uppmätta gummispåret till ett hastighetsintervall utan reaktionstid.',
31
+ },
32
+ ];
33
+
34
+ const howTo = [
35
+ { name: 'Mät spåret', text: 'Mät längden på det synliga låsta däckspåret noggrant i meter eller fot på vägbanan.' },
36
+ { name: 'Välj väglag', text: 'Välj den vägyta som motsvarar platsen eller ange en uppmätt friktionskoefficient manuellt.' },
37
+ { name: 'Ställ in lutning och bromsar', text: 'Ange vägens lutning och specificera vilka bromsar som användes av föraren.' },
38
+ { name: 'Läs av uppskattningen', text: 'Använd medelhastigheten som utgångspunkt och beakta det visade osäkerhetsintervallet.' },
39
+ ];
40
+
41
+ const seo: SEOSection[] = [
42
+ { type: 'title', level: 2, text: 'Beräkna hastighetsintervall från bromsspår' },
43
+ {
44
+ type: 'paragraph',
45
+ html: 'En motorcykel lämnar ofta ett tydligt spår från bakhjulet, ett lättare spår från framhjulet eller ett avbrutet mönster vid fungerande ABS-bromsar. Mät endast den del där hjulet var helt låst på vägbanan, utan att räkna med motorcykelns glidsträcka på kåporna efter en omkullkörning.',
46
+ },
47
+ { type: 'title', level: 3, text: 'Fysikalisk beräkningsmodell och energiekvation' },
48
+ {
49
+ type: 'paragraph',
50
+ html: 'Beräkningsmodellen bygger på energiprincipen vid glidfriktion: hastigheten är proportionell mot kvadratroten ur det dubbla produktvärdet av tyngdaccelerationen, friktionsfaktorn och spårets längd. Vägens lutning ingår som en vektorkomponent. En uppförsbacke underlättar bromsningen, medan en nedförsbacke minskar den effektiva friktionen.',
51
+ },
52
+ {
53
+ type: 'list',
54
+ items: [
55
+ 'Automatisk omvandling av längdmått till meter för exakta fysikaliska beräkningar.',
56
+ 'Inbyggda referensvärden för torr och våt asfalt, betong, grus, jord och is.',
57
+ 'Hänsyn tagen till bromskraftsfördelningen mellan fram- och bakhjul.',
58
+ 'Bredare osäkerhetsintervall när det använda bromssystemet är okänt på olycksplatsen.',
59
+ ],
60
+ },
61
+ {
62
+ type: 'tip',
63
+ title: 'Mät endast det låsta däckspåret',
64
+ html: 'Börja mätningen vid den första synliga gummiskuggan på asfalten och avsluta där hjulet börjar rulla igen eller där kollisionen sker. Räkna inte med ramens glidning mot vägen.',
65
+ },
66
+ { type: 'title', level: 3, text: 'Typiska friktionskoefficienter för vägbanor' },
67
+ {
68
+ type: 'table',
69
+ headers: ['Väglag', 'Medelfriktion', 'Friktionsintervall'],
70
+ rows: [
71
+ ['Torr asfalt', '0.70', '0.55 till 0.85'],
72
+ ['Våt asfalt', '0.50', '0.35 till 0.65'],
73
+ ['Torr betong', '0.75', '0.60 till 0.90'],
74
+ ['Grus', '0.50', '0.35 till 0.70'],
75
+ ['Jord eller gräs', '0.40', '0.25 till 0.55'],
76
+ ['Is', '0.10', '0.05 till 0.18'],
77
+ ],
78
+ },
79
+ {
80
+ type: 'paragraph',
81
+ html: 'Dessa är referensvärden för låsta däck som glider på vägbanan. En direkt mätning med friktionssläde på olycksplatsen ger alltid högre noggrannhet än en tabell.',
82
+ },
83
+ { type: 'title', level: 3, text: 'Motorcykelbromsarnas påverkan och viktförskjutning' },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Eftersom motorcyklar har separata reglage för fram- och bakbroms innebär ett enskilt bakhjulsspår inte att föraren har utnyttjat hela väggreppet. Verktyget gör det möjligt att utvärdera olika bromsscenarier.',
87
+ },
88
+ {
89
+ type: 'diagnostic',
90
+ variant: 'warning',
91
+ title: 'Pedagogisk fysikmodell',
92
+ badge: 'Utbildning',
93
+ html: 'ABS-intervaller, däckslitage, belastning och krockenergi ändrar den verkliga hastigheten. Vid för brant nedförsbacke avbryter verktyget beräkningen på grund av fysikalisk omöjlighet.',
94
+ },
95
+ ];
96
+
97
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
98
+ {
99
+ '@context': 'https://schema.org',
100
+ '@type': 'SoftwareApplication',
101
+ name: title,
102
+ applicationCategory: 'UtilitiesApplication',
103
+ operatingSystem: 'Web',
104
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'SEK' },
105
+ description,
106
+ },
107
+ {
108
+ '@context': 'https://schema.org',
109
+ '@type': 'FAQPage',
110
+ mainEntity: faq.map((item) => ({
111
+ '@type': 'Question',
112
+ name: item.question,
113
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
114
+ })),
115
+ },
116
+ {
117
+ '@context': 'https://schema.org',
118
+ '@type': 'HowTo',
119
+ name: title,
120
+ step: howTo.map((step) => ({
121
+ '@type': 'HowToStep',
122
+ name: step.name,
123
+ text: step.text,
124
+ })),
125
+ },
126
+ ];
127
+
128
+ export const content: MotorcycleSkidMarkSpeedEstimatorLocaleContent = {
129
+ slug,
130
+ title,
131
+ description,
132
+ ui: {
133
+ unitMetric: 'Metrisk',
134
+ unitImperial: 'Imperial',
135
+ disclaimer: 'Endast för utbildningssyfte.',
136
+ lengthLabel: 'Spårlängd',
137
+ lengthHint: 'Dra spåret för att ändra längden.',
138
+ gradeLabel: 'Lutning',
139
+ gradeHint: 'Uppförsbacke underlättar bromsningen, nedförsbacke minskar friktionen.',
140
+ surfaceLabel: 'Väglag',
141
+ frictionLabel: 'Friktionskoefficient',
142
+ frictionHint: 'Välj vägyta eller ange värde.',
143
+ brakeLabel: 'Låst broms',
144
+ brakeBoth: 'Båda',
145
+ brakeFront: 'Fram',
146
+ brakeRear: 'Bak',
147
+ brakeUnknown: 'Okänd',
148
+ speedLabel: 'Uppskattad hastighet på spåret',
149
+ rangeLabel: 'Hastighetsintervall',
150
+ dragHint: 'Dra på vägen.',
151
+ emptyMessage: 'Ställ in spåret för att beräkna hastighet.',
152
+ invalidMessage: 'För brant lutning. Stopp omöjligt.',
153
+ readyMessage: 'Hastighet beräknad.',
154
+ educationalBadge: 'Utbildning',
155
+ surfaceDryAsphalt: 'Torr asfalt',
156
+ surfaceWetAsphalt: 'Våt asfalt',
157
+ surfaceDryConcrete: 'Torr betong',
158
+ surfaceGravel: 'Grus',
159
+ surfaceGrass: 'Jord',
160
+ surfaceIce: 'Is',
161
+ surfaceCustom: 'Manuell',
162
+ sensitivityLabel: 'Osäkerhetsmarginal',
163
+ lowAssumption: 'Låg',
164
+ highAssumption: 'Hög',
165
+ gradeUphill: 'Uppför',
166
+ gradeDownhill: 'Nedför',
167
+ gradeLevel: 'Plan',
168
+ measureHint: 'Mätning på plats är noggrannare än en tabell.',
169
+ stencilUnitKmh: 'km/h',
170
+ stencilUnitMph: 'mph',
171
+ lengthUnitM: 'm',
172
+ lengthUnitFt: 'ft',
173
+ percentSuffix: '%',
174
+ dragLowLabel: 'Låg',
175
+ dragMidLabel: 'Medel',
176
+ dragHighLabel: 'Hög',
177
+ },
178
+ seo,
179
+ faqTitle: 'Vanliga frågor om bromsspår',
180
+ faq,
181
+ bibliographyTitle: 'Källor',
182
+ bibliography: bibliographyEntries,
183
+ howTo,
184
+ schemas,
185
+ };
@@ -0,0 +1,185 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import type { SEOSection } from '@jjlmoya/utils-shared';
3
+ import { bibliographyEntries } from '../bibliography';
4
+ import type { MotorcycleSkidMarkSpeedEstimatorLocaleContent } from '../entry';
5
+
6
+ const slug = 'motosiklet-fren-izi-hiz-hesaplayici';
7
+ const title = 'Motosiklet Fren İzi Hız Hesaplayıcı';
8
+ const description =
9
+ 'Motosiklet hız aralığını fren izi uzunluğu, sürtünme katsayısı ve eğimden tahmin edin. Kaza analizi ve fizik simülasyonu eğitimi aracı.';
10
+
11
+ const faq = [
12
+ {
13
+ question: 'Fren izi hangi hızı gösterir ?',
14
+ answer:
15
+ 'Kilitlenmiş tekerlek izi kinetik enerjinin sürtünme ısı enerjisine dönüştürüldüğü mesafeyi gösterir. Fiziksel enerji denklemi görünür fren izinin başladığı andaki minimum hızı belirler.',
16
+ },
17
+ {
18
+ question: 'Sonuç neden bir aralık olarak verilir ?',
19
+ answer:
20
+ 'Yüzey sürtünme katsayısı ve ön/arka fren dağılımı belirsizlikler içerir. Hesaplayıcı alt, orta ve üst değerler sunarak tahminin hassasiyet aralığını açıkça gösterir.',
21
+ },
22
+ {
23
+ question: 'Resmi kaza raporlarında kullanılabilir mi ?',
24
+ answer:
25
+ 'Hayır. Resmi kaza incelemeleri sahada dinamometre ölçümleri, ABS analizleri ve uzman bilirkişi incelemesi gerektirir. Bu araç bir eğitim simülatörüdür.',
26
+ },
27
+ {
28
+ question: 'Fren mesafesi hesaplayıcıdan farkı nedir ?',
29
+ answer:
30
+ 'Fren mesafesi hesaplayıcı bilinen bir hızdan yola çıkarak durma mesafesini bulur. Bu araç ise ölçülen kauçuk izinden geriye doğru hız aralığını hesaplar.',
31
+ },
32
+ ];
33
+
34
+ const howTo = [
35
+ { name: 'İzi ölçün', text: 'Kilitlenen tekerleğin bıraktığı görünür fren izi uzunluğunu metre veya fit cinsinden ölçün.' },
36
+ { name: 'Yüzeyi seçin', text: 'Saha şartlarına uygun yol yüzeyini seçin veya ölçülen sürtünme katsayısını manuel girin.' },
37
+ { name: 'Eğim ve frenleri belirleyin', text: 'Yolun eğim açısını ve hangi frenlerin kilitlendiğini seçin.' },
38
+ { name: 'Tahmini okuyun', text: 'Ortalama hızı temel değer olarak kullanın ve sunulan tahmin aralığını değerlendirin.' },
39
+ ];
40
+
41
+ const seo: SEOSection[] = [
42
+ { type: 'title', level: 2, text: 'Fren izinden hız aralığı hesaplama' },
43
+ {
44
+ type: 'paragraph',
45
+ html: 'Sert bir frenleme anında motosiklet arka tekerleğinde belirgin, ön tekerleğinde daha hafif veya ABS sisteminde kesikli fren izleri bırakır. Ölçüm yapılırken sadece tekerleğin tamamen kilitlendiği bölüm alınmalı, düşme sonrasında motosikletin gövde üzerinde kaydığı mesafe dahil edilmemelidir.',
46
+ },
47
+ { type: 'title', level: 3, text: 'Fiziksel hesaplama modeli ve enerji denklemi' },
48
+ {
49
+ type: 'paragraph',
50
+ html: 'Hesaplama modeli kayma sürtünmesindeki kinetik enerji korunumuna dayanır: Hız, yerçekimi ivmesi, sürtünme faktörü ve fren izi uzunluğunun çarpımının iki katının kareköküne eşittir. Yolun eğim açısı bir vektör bileşeni olarak işlenir. Yokuş yukarı frenlemeyi kolaylaştırırken, yokuş aşağı eğim sürtünme kuvvetini azaltır.',
51
+ },
52
+ {
53
+ type: 'list',
54
+ items: [
55
+ 'Ölçülen uzunluklar fiziksel doğruluk için otomatik olarak metreye dönüştürülür.',
56
+ 'Kuru ve ıslak asfalt, beton, mıcır, toprak ve buz yüzeyleri için referans katsayılar.',
57
+ 'Ön ve arka tekerlek fren kuvveti dağılımı ve ağırlık transferi hesaba katılır.',
58
+ 'Bilinmeyen fren durumlarında en düşük ve en yüksek varsayımlar arası geniş aralık sunulur.',
59
+ ],
60
+ },
61
+ {
62
+ type: 'tip',
63
+ title: 'Yalnızca kilitlenen izi ölçün',
64
+ html: 'Ölçüme kauçuk izinin başladığı ilk noktadan başlayın ve tekerleğin tekrar dönmeye başladığı veya darbenin gerçekleştiği noktada bitirin. Gövde kayma mesafesini eklemeyin.',
65
+ },
66
+ { type: 'title', level: 3, text: 'Tipik yüzey sürtünme katsayıları tablosu' },
67
+ {
68
+ type: 'table',
69
+ headers: ['Yüzey', 'Ortalama Sürtünme', 'Sürtünme Aralığı'],
70
+ rows: [
71
+ ['Kuru asfalt', '0.70', '0.55 ile 0.85 arası'],
72
+ ['Islak asfalt', '0.50', '0.35 ile 0.65 arası'],
73
+ ['Kuru beton', '0.75', '0.60 ile 0.90 arası'],
74
+ ['Mıcır', '0.50', '0.35 ile 0.70 arası'],
75
+ ['Toprak veya çim', '0.40', '0.25 ile 0.55 arası'],
76
+ ['Buz', '0.10', '0.05 ile 0.18 arası'],
77
+ ],
78
+ },
79
+ {
80
+ type: 'paragraph',
81
+ html: 'Bu değerler kilitlenmiş lastiklerin kayma davranışı için referans niteliğindedir. Olay yerinde yapılan doğrudan dinamometre ölçümü her zaman tablodan daha yüksek hassasiyet sağlar.',
82
+ },
83
+ { type: 'title', level: 3, text: 'Motosiklet frenlerinin etkisi ve ağırlık transferi' },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Motosikletlerde ön ve arka fren kumandaları bağımsızdır. Tek başına bir arka fren izi, sürücünün mevcut tüm yol tutuşunu kullandığı anlamına gelmez. Bu araç her senaryoyu ayrı ayrı değerlendirmenize olanak tanır.',
87
+ },
88
+ {
89
+ type: 'diagnostic',
90
+ variant: 'warning',
91
+ title: 'Eğitim ve fizik simülasyonu modeli',
92
+ badge: 'Eğitim',
93
+ html: 'ABS müdahalesi, lastik aşınması, yük miktarı ve darbe enerjisi gerçek hızı etkiler. Aşırı dik yokuş aşağı eğimlerde durmanın imkansız olduğu durumlarda araç hesabı fiziksel olarak durdurur.',
94
+ },
95
+ ];
96
+
97
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
98
+ {
99
+ '@context': 'https://schema.org',
100
+ '@type': 'SoftwareApplication',
101
+ name: title,
102
+ applicationCategory: 'UtilitiesApplication',
103
+ operatingSystem: 'Web',
104
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'TRY' },
105
+ description,
106
+ },
107
+ {
108
+ '@context': 'https://schema.org',
109
+ '@type': 'FAQPage',
110
+ mainEntity: faq.map((item) => ({
111
+ '@type': 'Question',
112
+ name: item.question,
113
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
114
+ })),
115
+ },
116
+ {
117
+ '@context': 'https://schema.org',
118
+ '@type': 'HowTo',
119
+ name: title,
120
+ step: howTo.map((step) => ({
121
+ '@type': 'HowToStep',
122
+ name: step.name,
123
+ text: step.text,
124
+ })),
125
+ },
126
+ ];
127
+
128
+ export const content: MotorcycleSkidMarkSpeedEstimatorLocaleContent = {
129
+ slug,
130
+ title,
131
+ description,
132
+ ui: {
133
+ unitMetric: 'Metrik',
134
+ unitImperial: 'İngiliz',
135
+ disclaimer: 'Sadece eğitim amaçlıdır.',
136
+ lengthLabel: 'İz uzunluğu',
137
+ lengthHint: 'İz uzunluğunu değiştirmek için sürükleyin.',
138
+ gradeLabel: 'Eğim',
139
+ gradeHint: 'Yokuş yukarı frenlemeyi kolaylaştırır.',
140
+ surfaceLabel: 'Yol yüzeyi',
141
+ frictionLabel: 'Sürtünme katsayısı',
142
+ frictionHint: 'Yüzey seçin veya değeri girin.',
143
+ brakeLabel: 'Kilitlenen fren',
144
+ brakeBoth: 'Her ikisi',
145
+ brakeFront: 'Ön',
146
+ brakeRear: 'Arka',
147
+ brakeUnknown: 'Bilinmiyor',
148
+ speedLabel: 'İz üzerindeki tahmini hız',
149
+ rangeLabel: 'Tahmin aralığı',
150
+ dragHint: 'Ayarlamak için yolda sürükleyin.',
151
+ emptyMessage: 'Hız hesabı için izi ayarlayın.',
152
+ invalidMessage: 'Eğim çok dik. Durmak imkansız.',
153
+ readyMessage: 'Hız hesaplandı.',
154
+ educationalBadge: 'Eğitim',
155
+ surfaceDryAsphalt: 'Kuru asfalt',
156
+ surfaceWetAsphalt: 'Islak asfalt',
157
+ surfaceDryConcrete: 'Kuru beton',
158
+ surfaceGravel: 'Mıcır',
159
+ surfaceGrass: 'Toprak',
160
+ surfaceIce: 'Buz',
161
+ surfaceCustom: 'Özel',
162
+ sensitivityLabel: 'Hassasiyet aralığı',
163
+ lowAssumption: 'Düşük',
164
+ highAssumption: 'Yüksek',
165
+ gradeUphill: 'Yokuş yukarı',
166
+ gradeDownhill: 'Yokuş aşağı',
167
+ gradeLevel: 'Düz',
168
+ measureHint: 'Saha ölçümü tablodan daha kesindir.',
169
+ stencilUnitKmh: 'km/s',
170
+ stencilUnitMph: 'mph',
171
+ lengthUnitM: 'm',
172
+ lengthUnitFt: 'ft',
173
+ percentSuffix: '%',
174
+ dragLowLabel: 'Düşük',
175
+ dragMidLabel: 'Orta',
176
+ dragHighLabel: 'Yüksek',
177
+ },
178
+ seo,
179
+ faqTitle: 'Fren izi hakkında sıkça sorulan sorular',
180
+ faq,
181
+ bibliographyTitle: 'Kaynaklar',
182
+ bibliography: bibliographyEntries,
183
+ howTo,
184
+ schemas,
185
+ };
@@ -0,0 +1,201 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import type { SEOSection } from '@jjlmoya/utils-shared';
3
+ import { bibliographyEntries } from '../bibliography';
4
+ import type { MotorcycleSkidMarkSpeedEstimatorLocaleContent } from '../entry';
5
+
6
+ const slug = 'motorcycle-skid-mark-speed-estimator';
7
+ const title = '摩托车刹车痕速度估算器';
8
+ const description =
9
+ '根据刹车痕长度、地面摩擦系数、道路坡度及使用的制动器估算摩托车制动初始速度范围。物理仿真与事故分析教学工具。';
10
+
11
+ const faq = [
12
+ {
13
+ question: '刹车痕代表什么速度?',
14
+ answer:
15
+ '抱死车轮的刹车痕记录了通过滑动摩擦消耗动能所需的距离。物理能量方程可以计算出地面上出现可见胎痕起始时刻的最低初始速度,而非驾驶员最初触碰制动踏板前的行驶速度。',
16
+ },
17
+ {
18
+ question: '为什么结果是一个范围而非单一数值?',
19
+ answer:
20
+ '路面摩擦系数和前后轮制动力的分配存在现场不确定性。估算器通过计算下限、中值和上限速度,直观展示了假设条件变化对结果的影响敏感度。',
21
+ },
22
+ {
23
+ question: '该数据能否用于正式事故鉴定报告?',
24
+ answer:
25
+ '不能。正式的交通事故鉴定与法律评估需要现场测力拖滑试验、ABS脉冲分析、胎痕鉴定及专家现场调查。本工具仅作为物理学与交通事故分析的教学仿真实验室。',
26
+ },
27
+ {
28
+ question: '与制动距离计算器有何不同?',
29
+ answer:
30
+ '制动距离计算器是从已知车速推算所需的刹车距离。而本工具是从现场实际测量到的橡皮拖痕长度逆向推算车速区间,且不包含反应时间与反应距离。',
31
+ },
32
+ ];
33
+
34
+ const howTo = [
35
+ { name: '测量痕迹', text: '精确测量轮胎完全抱死并在路面上留下的可见拖痕长度(米或英尺)。' },
36
+ { name: '选择路面', text: '选择匹配的沥青或水泥路面条件,或者直接手动输入实测的动摩擦系数。' },
37
+ { name: '设置坡度与制动器', text: '输入道路坡度百分比,并指定是前轮、后轮还是前后轮共同抱死。' },
38
+ { name: '查看估算结果', text: '以中值速度作为基准估算值,并结合上下限区间全面评估车速范围。' },
39
+ ];
40
+
41
+ const seo: SEOSection[] = [
42
+ {
43
+ type: 'title',
44
+ level: 2,
45
+ text: '根据刹车痕迹科学推算车速区间',
46
+ },
47
+ {
48
+ type: 'paragraph',
49
+ html: '摩托车在紧急制动时,通常会留下清晰的后轮拖痕、较浅的前轮拖痕或ABS防抱死系统产生的断续印痕。在现场测量时,必须严格区分轮胎抱死滑动段与车辆侧翻后车身或外壳在路面上的刮擦滑行距离。',
50
+ },
51
+ {
52
+ type: 'title',
53
+ level: 3,
54
+ text: '物理估算模型与减速能量守恒方程',
55
+ },
56
+ {
57
+ type: 'paragraph',
58
+ html: '本工具的计算模型建立在滑动摩擦动能守恒定律的基础之上:初始速度等于两倍重力加速度、路面阻力系数以及拖痕长度乘积的平方根。道路坡度作为矢量分量计入计算,上坡坡度有助于协助车辆减速,而下坡坡度则会降低有效制动摩擦力。',
59
+ },
60
+ {
61
+ type: 'list',
62
+ items: [
63
+ '所有测得的长度均在内部自动转换为标准米,以确保物理计算的精确一致。',
64
+ '预设干燥与湿滑沥青、混凝土、碎石、泥土及冰雪路面的标准动摩擦系数。',
65
+ '考虑前后制动器独立操作以及制动过程中前后轴动态负载转移效应。',
66
+ '在制动类型未知的情况下,提供从仅后轮制动到双轮制动假设的更宽包络区间。',
67
+ ],
68
+ },
69
+ {
70
+ type: 'tip',
71
+ title: '仅测量车轮抱死段长度',
72
+ html: '请从路面上出现橡皮黑色印痕的首个可见位置开始测量,直到轮胎恢复旋转或发生碰撞的地点终止。切勿将车辆倾倒后金属或塑料车壳在地面刮擦的距离计入其中。',
73
+ },
74
+ {
75
+ type: 'title',
76
+ level: 3,
77
+ text: '常见路面类型的标准摩擦系数参考表',
78
+ },
79
+ {
80
+ type: 'table',
81
+ headers: ['路面类型', '平均摩擦系数', '合理变动范围'],
82
+ rows: [
83
+ ['干燥沥青', '0.70', '0.55 至 0.85'],
84
+ ['湿滑沥青', '0.50', '0.35 至 0.65'],
85
+ ['干燥水泥混凝土', '0.75', '0.60 至 0.90'],
86
+ ['碎石路面', '0.50', '0.35 至 0.70'],
87
+ ['泥土与草地', '0.40', '0.25 至 0.55'],
88
+ ['冰雪路面', '0.10', '0.05 至 0.18'],
89
+ ],
90
+ },
91
+ {
92
+ type: 'paragraph',
93
+ html: '上述数值为抱死轮胎在不同路面上滑行的典型参考数据。在真实的事故调查与鉴定中,使用现场拖滑试验测力计得出的实测数据始终比标准查表数据具有更高的准确性。',
94
+ },
95
+ {
96
+ type: 'title',
97
+ level: 3,
98
+ text: '摩托车前后独立制动与轴荷转移',
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: '与汽车不同,摩托车的前后制动器由驾驶员独立控制。单一的后轮刹车痕并不意味着车辆利用了全部可用的路面附着力。本工具允许用户通过指定制动轮,更准确地验证车速上限与下限。',
103
+ },
104
+ {
105
+ type: 'diagnostic',
106
+ variant: 'warning',
107
+ title: '物理仿真与教学用途说明',
108
+ badge: '教学用途',
109
+ html: 'ABS防抱死系统的点刹频率、轮胎磨损程度、车辆载重及碰撞能量均会显著改变真实车速。在陡峭下坡路段且重力分量超出摩擦阻力时,系统将因物理不可能停止而终止计算。',
110
+ },
111
+ ];
112
+
113
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
114
+ {
115
+ '@context': 'https://schema.org',
116
+ '@type': 'SoftwareApplication',
117
+ name: title,
118
+ applicationCategory: 'UtilitiesApplication',
119
+ operatingSystem: 'Web',
120
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' },
121
+ description,
122
+ },
123
+ {
124
+ '@context': 'https://schema.org',
125
+ '@type': 'FAQPage',
126
+ mainEntity: faq.map((item) => ({
127
+ '@type': 'Question',
128
+ name: item.question,
129
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
130
+ })),
131
+ },
132
+ {
133
+ '@context': 'https://schema.org',
134
+ '@type': 'HowTo',
135
+ name: title,
136
+ step: howTo.map((step) => ({
137
+ '@type': 'HowToStep',
138
+ name: step.name,
139
+ text: step.text,
140
+ })),
141
+ },
142
+ ];
143
+
144
+ export const content: MotorcycleSkidMarkSpeedEstimatorLocaleContent = {
145
+ slug,
146
+ title,
147
+ description,
148
+ ui: {
149
+ unitMetric: '公制',
150
+ unitImperial: '英制',
151
+ disclaimer: '仅供教学与物理实验参考。',
152
+ lengthLabel: '刹车痕长度',
153
+ lengthHint: '拖动调整可视为抱死段的长度。',
154
+ gradeLabel: '道路坡度',
155
+ gradeHint: '上坡有助于减速,下坡会降低制动效果。',
156
+ surfaceLabel: '路面类型',
157
+ frictionLabel: '摩擦系数',
158
+ frictionHint: '选择预设路面或手动输入摩擦系数。',
159
+ brakeLabel: '抱死制动器',
160
+ brakeBoth: '前后轮抱死',
161
+ brakeFront: '仅前轮',
162
+ brakeRear: '仅后轮',
163
+ brakeUnknown: '未知',
164
+ speedLabel: '刹车痕对应估算车速',
165
+ rangeLabel: '估算车速区间',
166
+ dragHint: '在道路上拖动进行调整。',
167
+ emptyMessage: '请调整刹车痕长度以计算车速。',
168
+ invalidMessage: '坡度过陡,物理上无法停止。',
169
+ readyMessage: '车速计算完成。',
170
+ educationalBadge: '教学用途',
171
+ surfaceDryAsphalt: '干燥沥青',
172
+ surfaceWetAsphalt: '湿滑沥青',
173
+ surfaceDryConcrete: '干燥水泥',
174
+ surfaceGravel: '碎石路',
175
+ surfaceGrass: '泥土/草地',
176
+ surfaceIce: '冰面',
177
+ surfaceCustom: '自定义',
178
+ sensitivityLabel: '不确定性区间',
179
+ lowAssumption: '下限',
180
+ highAssumption: '上限',
181
+ gradeUphill: '上坡',
182
+ gradeDownhill: '下坡',
183
+ gradeLevel: '平路',
184
+ measureHint: '现场实际测力数据比查表更准确。',
185
+ stencilUnitKmh: 'km/h',
186
+ stencilUnitMph: 'mph',
187
+ lengthUnitM: 'm',
188
+ lengthUnitFt: 'ft',
189
+ percentSuffix: '%',
190
+ dragLowLabel: '低摩擦',
191
+ dragMidLabel: '中摩擦',
192
+ dragHighLabel: '高摩擦',
193
+ },
194
+ seo,
195
+ faqTitle: '关于刹车痕车速计算的常见问题',
196
+ faq,
197
+ bibliographyTitle: '参考文献',
198
+ bibliography: bibliographyEntries,
199
+ howTo,
200
+ schemas,
201
+ };
@@ -0,0 +1,10 @@
1
+ import { motorcycleSkidMarkSpeedEstimator } from './entry';
2
+
3
+ export * from './entry';
4
+
5
+ export const MOTORCYCLE_SKID_MARK_SPEED_ESTIMATOR_TOOL = {
6
+ entry: motorcycleSkidMarkSpeedEstimator,
7
+ Component: () => import('./component.astro'),
8
+ SEOComponent: () => import('./seo.astro'),
9
+ BibliographyComponent: () => import('./bibliography.astro'),
10
+ };