@jjlmoya/utils-motor 1.3.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.
- package/package.json +1 -1
- package/src/category/index.ts +2 -1
- package/src/entries.ts +4 -1
- package/src/index.ts +5 -0
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/tool_validation.test.ts +1 -1
- package/src/tool/motorcycleSkidMarkSpeedEstimator/bibliography.astro +6 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/bibliography.ts +12 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/component.astro +166 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/controller.ts +207 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/dom-views.ts +101 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/entry.ts +30 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/evaluator.ts +7 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/de.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/en.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/es.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/fr.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/id.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/it.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/ja.ts +201 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/ko.ts +201 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/nl.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/pl.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/pt.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/ru.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/sv.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/tr.ts +185 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/i18n/zh.ts +201 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/index.ts +10 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/logic.test.ts +229 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/logic.ts +179 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/motorcycle-skid-mark-speed-estimator.css +523 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/seo.astro +15 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/storage.ts +49 -0
- package/src/tool/motorcycleSkidMarkSpeedEstimator/ui.ts +46 -0
- package/src/tools.ts +2 -1
|
@@ -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: '本ツールの計算モデルは、滑り摩擦による運動エネルギーの保存法則に基づいています。推定速度は、重力加速度、路面ドラッグ係数、および滑走距離の積の2倍の平方根として求められます。道路の勾配ベクトルも考慮され、上り坂は制動を支援し、下り坂は制動効果を低下させます。',
|
|
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: 'JPY' },
|
|
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,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: '본 계산 모델은 미끄럼 마찰에 의한 운동 에너지 보존 법칙을 기반으로 합니다. 추정 속도는 중력 가속도, 노면 마찰 계수, 그리고 미끄러진 거리의 곱의 2배에 대한 제곱근으로 계산됩니다. 도로 경사도 오르막은 제동을 돕고 내리막은 제동 효과를 감소시킵니다.',
|
|
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: '오토바이는 전륜과 후륜 브레이크가 독립적으로 작동합니다. 후륜에만 남은 타이어 자국은 차량의 전체 제동 성능이 100% 활용되지 않았음을 의미합니다. 본 도구는 제동 바퀴 지정을 통해 더욱 정밀한 속도 범위를 검증할 수 있습니다.',
|
|
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: 'KRW' },
|
|
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,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 = 'motor-remspoor-snelheid-berekenen';
|
|
7
|
+
const title = 'Motor Remspoor Snelheid Berekenen';
|
|
8
|
+
const description =
|
|
9
|
+
'Schat de snelheid van een motorfiets op basis van remspoorlengte, wrijving en hellingshoek. Educatieve natuurkundige simulatie voor ongevalsanalyse.';
|
|
10
|
+
|
|
11
|
+
const faq = [
|
|
12
|
+
{
|
|
13
|
+
question: 'Wat geeft een remspoor aan ?',
|
|
14
|
+
answer:
|
|
15
|
+
'Een remspoor van een geblokkeerd wiel toont de afstand die nodig is om kinetische energie af te bouwen via wrijvingswarmte. De natuurkundige energievergelijking bepaalt de minimale snelheid aan het begin van het zichtbare spoor.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Waarom is het resultaat een bereik ?',
|
|
19
|
+
answer:
|
|
20
|
+
'Wrijvingscoëfficiënten van het wegdek en de verdeling van de remkracht tussen voor- en achterwiel bevatten onzekerheden. De calculator geeft daarom een lage, gemiddelde en hoge waarde om de gevoeligheid te tonen.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Is dit geschikt voor een officieel unvalrapport ?',
|
|
24
|
+
answer:
|
|
25
|
+
'Nee. Officiële ongevallenanalyse vereist dynamometrische metingen ter plaatse, ABS-analyse en onderzoek door experts. Dit hulpmiddel is een educatief natuurkunde-laboratorium.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Wat is het verschil met een remwegberekenaar ?',
|
|
29
|
+
answer:
|
|
30
|
+
'Een remwegberekenaar begint bij de snelheid om de afstand te berekenen. Dit hulpmiddel rekent terug vanaf het gemeten rubberen spoor naar een snelheidsbereik zonder reactietijd op te nemen.',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const howTo = [
|
|
35
|
+
{ name: 'Meet het spoor', text: 'Meet de lengte van het zichtbare remspoor van het geblokkeerde wiel nauwkeurig in meters of voet.' },
|
|
36
|
+
{ name: 'Kies het wegdek', text: 'Selecteer de ondergrond die overeenkomt met de situatie of voer handmatig een gemeten wrijvingscoëfficiënt in.' },
|
|
37
|
+
{ name: 'Stel helling en remmen in', text: 'Voer de hellingshoek van de weg in en geef aan welke remmen zijn gebruikt.' },
|
|
38
|
+
{ name: 'Lees de schatting af', text: 'Gebruik de gemiddelde snelheid als uitgangspunt en bekijk de mogelijke afwijkingen.' },
|
|
39
|
+
];
|
|
40
|
+
|
|
41
|
+
const seo: SEOSection[] = [
|
|
42
|
+
{ type: 'title', level: 2, text: 'Van remspoor naar snelheidsbereik' },
|
|
43
|
+
{
|
|
44
|
+
type: 'paragraph',
|
|
45
|
+
html: 'Een motorfiets laat bij krachtig remmen vaak een duidelijk spoor achter van het achterwiel, een lichter spoor van het voorwiel of een onderbroken afdruk bij ABS. Meet alleen het gedeelte met een volledig geblokkeerd wiel, zonder de schuifschade van de motor op de zijkant na een val mee te rekenen.',
|
|
46
|
+
},
|
|
47
|
+
{ type: 'title', level: 3, text: 'Natuurkundig rekenmodel en energieformule' },
|
|
48
|
+
{
|
|
49
|
+
type: 'paragraph',
|
|
50
|
+
html: 'Het rekenmodel gebruikt de energiebalans van de schuifwrijving: de snelheid is evenredig met de kwadraatwortel van twee keer de zwaartekracht vermenigvuldigd met de wrijvingsfactor en de spoorlengte. De helling van de weg werkt als een vectoriele component. Een helling omhoog helpt bij het remmen, terwijl een helling omlaag de effectieve wrijving vermindert.',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: 'list',
|
|
54
|
+
items: [
|
|
55
|
+
'Automatische omrekening van lengtematen naar meters voor exacte natuurkundige vergelijkingen.',
|
|
56
|
+
'Standaardwaarden voor droog en nat asfalt, beton, grind, aarde en ijs.',
|
|
57
|
+
'Rekening gehouden met de remkrachtverdeling tussen voor- en achterwiel.',
|
|
58
|
+
'Bredere onzekerheidsmarge wanneer de exacte rembediening onbekend is ter plaatse.',
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'tip',
|
|
63
|
+
title: 'Meet alleen het geblokkeerde spoor',
|
|
64
|
+
html: 'Begin de meting bij het eerste zichtbare rubber op het asfalt en stop waar het wiel weer begint te draaien of de botsing plaatsvindt. Reken de glijdafstand van het frame niet mee.',
|
|
65
|
+
},
|
|
66
|
+
{ type: 'title', level: 3, text: 'Typische wrijvingscoëfficiënten voor wegdekken' },
|
|
67
|
+
{
|
|
68
|
+
type: 'table',
|
|
69
|
+
headers: ['Ondergrond', 'Gemiddelde wrijving', 'Wrijvingsbereik'],
|
|
70
|
+
rows: [
|
|
71
|
+
['Droog asfalt', '0.70', '0.55 tot 0.85'],
|
|
72
|
+
['Nat asfalt', '0.50', '0.35 tot 0.65'],
|
|
73
|
+
['Droog beton', '0.75', '0.60 tot 0.90'],
|
|
74
|
+
['Grind', '0.50', '0.35 tot 0.70'],
|
|
75
|
+
['Aarde of gras', '0.40', '0.25 tot 0.55'],
|
|
76
|
+
['IJs', '0.10', '0.05 tot 0.18'],
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'paragraph',
|
|
81
|
+
html: 'Dit zijn referentiewaarden voor glijdend rubber op de weg. Een directe wrijvingsmeting ter plaatse levert altijd een hogere nauwkeurigheid op dan een standaardtabel.',
|
|
82
|
+
},
|
|
83
|
+
{ type: 'title', level: 3, text: 'Invloed van motorremmen en gewichtsoverdracht' },
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'Omdat motorfietsen gescheiden bedieningen hebben voor voor- en achterrem, betekent een enkel achterwielspoor niet dat de rijder al het beschikbare remvermogen heeft benut. Met de tool kunt u verschillende remscenario in te stellen.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'diagnostic',
|
|
90
|
+
variant: 'warning',
|
|
91
|
+
title: 'Educatief natuurkundemodel',
|
|
92
|
+
badge: 'Educatief',
|
|
93
|
+
html: 'ABS-ingrepen, bandenslijtage, belading en impactenergie veranderen de werkelijke snelheid. Bij een te steile helling omlaag weigert het systeem de berekening uit te voeren wegens natuurkundige onmogelijkheid.',
|
|
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: 'EUR' },
|
|
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: 'Metrisch',
|
|
134
|
+
unitImperial: 'Imperiaal',
|
|
135
|
+
disclaimer: 'Uitsluitend voor educatieve doeleinden.',
|
|
136
|
+
lengthLabel: 'Spoorlengte',
|
|
137
|
+
lengthHint: 'Sleep het spoor om de lengte aan te passen.',
|
|
138
|
+
gradeLabel: 'Helling',
|
|
139
|
+
gradeHint: 'Bergop helpt bij het remmen, bergaf vermindert wrijving.',
|
|
140
|
+
surfaceLabel: 'Wegdek',
|
|
141
|
+
frictionLabel: 'Wrijvingscoëfficiënt',
|
|
142
|
+
frictionHint: 'Kies een wegdek of voer de waarde in.',
|
|
143
|
+
brakeLabel: 'Geblokkeerde rem',
|
|
144
|
+
brakeBoth: 'Beide',
|
|
145
|
+
brakeFront: 'Voor',
|
|
146
|
+
brakeRear: 'Achter',
|
|
147
|
+
brakeUnknown: 'Onbekend',
|
|
148
|
+
speedLabel: 'Geschatte snelheid op het spoor',
|
|
149
|
+
rangeLabel: 'Snelheidsbereik',
|
|
150
|
+
dragHint: 'Sleep over de weg.',
|
|
151
|
+
emptyMessage: 'Stel het spoor in om snelheid te berekenen.',
|
|
152
|
+
invalidMessage: 'Te steile helling. Stoppen onmogelijk.',
|
|
153
|
+
readyMessage: 'Snelheid berekend.',
|
|
154
|
+
educationalBadge: 'Educatief',
|
|
155
|
+
surfaceDryAsphalt: 'Droog asfalt',
|
|
156
|
+
surfaceWetAsphalt: 'Nat asfalt',
|
|
157
|
+
surfaceDryConcrete: 'Droog beton',
|
|
158
|
+
surfaceGravel: 'Grind',
|
|
159
|
+
surfaceGrass: 'Aarde',
|
|
160
|
+
surfaceIce: 'IJs',
|
|
161
|
+
surfaceCustom: 'Handmatig',
|
|
162
|
+
sensitivityLabel: 'Onzekerheidsmarge',
|
|
163
|
+
lowAssumption: 'Laag',
|
|
164
|
+
highAssumption: 'Hoog',
|
|
165
|
+
gradeUphill: 'Bergop',
|
|
166
|
+
gradeDownhill: 'Bergaf',
|
|
167
|
+
gradeLevel: 'Vlak',
|
|
168
|
+
measureHint: 'Meting ter plaatse is nauwkeuriger dan een tabel.',
|
|
169
|
+
stencilUnitKmh: 'km/h',
|
|
170
|
+
stencilUnitMph: 'mph',
|
|
171
|
+
lengthUnitM: 'm',
|
|
172
|
+
lengthUnitFt: 'ft',
|
|
173
|
+
percentSuffix: '%',
|
|
174
|
+
dragLowLabel: 'Laag',
|
|
175
|
+
dragMidLabel: 'Gemiddeld',
|
|
176
|
+
dragHighLabel: 'Hoog',
|
|
177
|
+
},
|
|
178
|
+
seo,
|
|
179
|
+
faqTitle: 'Veelgestelde vragen over remsporen',
|
|
180
|
+
faq,
|
|
181
|
+
bibliographyTitle: 'Bronvermelding',
|
|
182
|
+
bibliography: bibliographyEntries,
|
|
183
|
+
howTo,
|
|
184
|
+
schemas,
|
|
185
|
+
};
|