@jjlmoya/utils-nautical 1.22.0 → 1.24.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 +2 -2
- package/src/category/i18n/en.ts +1 -1
- package/src/category/index.ts +2 -1
- package/src/data.ts +1 -0
- package/src/entries.ts +4 -1
- package/src/index.ts +1 -0
- package/src/layouts/PreviewLayout.astro +118 -118
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +74 -0
- package/src/tests/faq_count.test.ts +30 -30
- package/src/tests/i18n_coverage.test.ts +6 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/seo_length.test.ts +29 -29
- package/src/tests/seo_parity.test.ts +2 -2
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/spanish_leakage.test.ts +175 -175
- package/src/tests/tool_validation.test.ts +54 -51
- package/src/tool/endurance/i18n/fr.ts +205 -205
- package/src/tool/endurance/seo.astro +15 -15
- package/src/tool/hullSpeed/bibliography.astro +14 -0
- package/src/tool/hullSpeed/bibliography.ts +12 -0
- package/src/tool/hullSpeed/component.astro +116 -0
- package/src/tool/hullSpeed/controller.ts +204 -0
- package/src/tool/hullSpeed/dom-views.ts +141 -0
- package/src/tool/hullSpeed/entry.ts +32 -0
- package/src/tool/hullSpeed/evaluator.ts +20 -0
- package/src/tool/hullSpeed/hull-draw.ts +185 -0
- package/src/tool/hullSpeed/i18n/de.ts +199 -0
- package/src/tool/hullSpeed/i18n/en.ts +199 -0
- package/src/tool/hullSpeed/i18n/es.ts +199 -0
- package/src/tool/hullSpeed/i18n/fr.ts +199 -0
- package/src/tool/hullSpeed/i18n/id.ts +199 -0
- package/src/tool/hullSpeed/i18n/it.ts +199 -0
- package/src/tool/hullSpeed/i18n/ja.ts +199 -0
- package/src/tool/hullSpeed/i18n/ko.ts +199 -0
- package/src/tool/hullSpeed/i18n/nl.ts +199 -0
- package/src/tool/hullSpeed/i18n/pl.ts +199 -0
- package/src/tool/hullSpeed/i18n/pt.ts +199 -0
- package/src/tool/hullSpeed/i18n/ru.ts +199 -0
- package/src/tool/hullSpeed/i18n/sv.ts +199 -0
- package/src/tool/hullSpeed/i18n/tr.ts +199 -0
- package/src/tool/hullSpeed/i18n/zh.ts +199 -0
- package/src/tool/hullSpeed/index.ts +11 -0
- package/src/tool/hullSpeed/logic.test.ts +105 -0
- package/src/tool/hullSpeed/logic.ts +116 -0
- package/src/tool/hullSpeed/presets.ts +17 -0
- package/src/tool/hullSpeed/sailboat-hull-speed-calculator.css +504 -0
- package/src/tool/hullSpeed/seo.astro +15 -0
- package/src/tool/hullSpeed/storage.test.ts +23 -0
- package/src/tool/hullSpeed/storage.ts +65 -0
- package/src/tool/hullSpeed/ui.ts +43 -0
- package/src/tool/nauticalConverter/seo.astro +15 -15
- package/src/tool/sailArea/seo.astro +15 -15
- package/src/tool/speedConverter/i18n/fr.ts +259 -259
- package/src/tool/speedConverter/seo.astro +15 -15
- package/src/tool/tideCalculator/seo.astro +15 -15
- package/src/tool/underKeel/seo.astro +15 -15
- package/src/tools.ts +3 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { HullSpeedLocaleContent, HullSpeedUI } from '../index';
|
|
3
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
4
|
+
|
|
5
|
+
const slug = 'sailboat-hull-speed-calculator';
|
|
6
|
+
const title = '帆船の船体速度計算機';
|
|
7
|
+
const description =
|
|
8
|
+
'喫水線長さから理論上の船体速度を求め、実測のログと比べ、排水型船体が自分の船首波に乗り上げる瞬間を見ます。';
|
|
9
|
+
|
|
10
|
+
const ui: HullSpeedUI = {
|
|
11
|
+
metric: 'メートル法',
|
|
12
|
+
imperial: 'ヤードポンド法',
|
|
13
|
+
unitGroup: '単位',
|
|
14
|
+
sceneLabel: '喫水線と船首波',
|
|
15
|
+
hullSpeedLabel: '船体速度',
|
|
16
|
+
knotsUnit: 'kn',
|
|
17
|
+
kmhUnit: 'km/h',
|
|
18
|
+
mphUnit: 'mph',
|
|
19
|
+
ratioLabel: 'S/L',
|
|
20
|
+
froudeLabel: 'Fr',
|
|
21
|
+
lwlLabelMetric: '喫水線長さ',
|
|
22
|
+
lwlLabelImperial: '喫水線長さ',
|
|
23
|
+
lwlUnitM: 'm',
|
|
24
|
+
lwlUnitFt: 'ft',
|
|
25
|
+
observedLabel: 'ログ速度',
|
|
26
|
+
observedHint: '理論波を描くなら 0 のまま。くぼみに座っているかを見るならログを入力します。',
|
|
27
|
+
stretchHint: '船体をドラッグして喫水線を伸ばす',
|
|
28
|
+
hullKindLabel: '船体形状',
|
|
29
|
+
displacement: '排水型',
|
|
30
|
+
semi: '半排水型',
|
|
31
|
+
planing: '滑走型',
|
|
32
|
+
boatsLabel: '喫水線の例',
|
|
33
|
+
dinghy: 'ディンギー',
|
|
34
|
+
daysailer: 'デイセーラー',
|
|
35
|
+
cruiser: 'クルーザー',
|
|
36
|
+
bluewater: '外洋',
|
|
37
|
+
workboat: '作業船',
|
|
38
|
+
bandBelow: 'まだ短い波',
|
|
39
|
+
bandNear: '波の壁に接近',
|
|
40
|
+
bandAt: '船首波に乗っている',
|
|
41
|
+
bandAbove: '波を登ろうとしている',
|
|
42
|
+
bandPlane: '滑走中、船体速度を超えている',
|
|
43
|
+
planingNote:
|
|
44
|
+
'滑走型はこの波を後ろに残せます。船体速度は目安であり壁ではありません。',
|
|
45
|
+
displacementNote:
|
|
46
|
+
'排水型は自分の航跡に追いつくと急に高くつきます。GPS目標ではなく実用の天井として扱ってください。',
|
|
47
|
+
semiNote:
|
|
48
|
+
'半排水型は十分な出力があれば古典比を少し超えられますが、抵抗は急に上がります。',
|
|
49
|
+
waveLegend: '船首波',
|
|
50
|
+
waterLegend: '喫水線',
|
|
51
|
+
markLegend: '船体速度',
|
|
52
|
+
faqTitle: '船体速度の質問',
|
|
53
|
+
bibliographyTitle: '参考文献',
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const faq: HullSpeedLocaleContent['faq'] = [
|
|
57
|
+
{
|
|
58
|
+
question: '帆船の船体速度とは何ですか?',
|
|
59
|
+
answer:
|
|
60
|
+
'排水型船体が、ほぼ自分の喫水線と同じ長さの船首波を連れて走る速度です。航海単位では喫水線長さ(フィート)の平方根に 1.34 を掛けて見積もります。臨界速度であり、物理的な完全停止ではありません。',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
question: '船体速度はどう計算しますか?',
|
|
64
|
+
answer:
|
|
65
|
+
'喫水線をフィートに直し、平方根を取り、1.34 を掛けてノットにします。10 m の喫水線は約 32.8 ft なので、およそ 7.7 kn です。同じ点はフルード数 0.40 付近に対応します。',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
question: '滑走艇にも船体速度は使えますか?',
|
|
69
|
+
answer:
|
|
70
|
+
'式は排水モードのままなら船体が作る波をなお説明します。滑走型や多くの半排水型は、その波を乗り越えるために設計されています。数値は目安にし、船体形状の注記を読んでください。',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
question: '喫水線長さと全長のどちらを使いますか?',
|
|
74
|
+
answer:
|
|
75
|
+
'実際に波を作る没水長さである喫水線長さ (LWL) を使います。全長、バウスプリット、オーバーハングは波長を決めません。パンフレットの LOA ではなく、水の中の LWL を測ってください。',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const howTo: HullSpeedLocaleContent['howTo'] = [
|
|
80
|
+
{
|
|
81
|
+
name: '喫水線を伸ばす',
|
|
82
|
+
text: '船体をドラッグし、レールを動かし、ディンギーから作業船まで選びます。船体速度はその長さ(フィート)の平方根の 1.34 倍です。',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: '船体形状を選ぶ',
|
|
86
|
+
text: '排水型、半排水型、滑走型でキールが変わり、自分の波から抜け出せるかも変わります。',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'くぼみを読む',
|
|
90
|
+
text: '船体速度では船首波と船尾波が喫水線ひとつ分離れ、船は谷に座ります。それが壁です。',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'ログを比べる',
|
|
94
|
+
text: '対水速度を入れます。短い波はまだ安く押せる合図です。長い波はくぼみを登っている合図です。',
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
const seo: HullSpeedLocaleContent['seo'] = [
|
|
99
|
+
{
|
|
100
|
+
type: 'title',
|
|
101
|
+
text: '船体速度が本当に伝えていること',
|
|
102
|
+
level: 2,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: '排水型船体は船首と船尾から波を押し出します。その峰がだいたい喫水線ひとつ分空くと、船は自分の航跡と一緒に進みます。余った出力は速力を買うより水を積み上げます。船乗りが船体速度と呼ぶ状態です。',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'この計算機は、フィート喫水線の平方根あたり 1.34 ノットという一般的なアマチュア比を使います。細長い船体は少し高く、はしけは低くなります。結果は学習用の印として扱い、実際のログと比べてください。',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: '計算した喫水線の例',
|
|
115
|
+
level: 2,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'table',
|
|
119
|
+
headers: ['喫水線', '船体速度', '典型的な船'],
|
|
120
|
+
rows: [
|
|
121
|
+
['4.2 m / 13.8 ft', '5.0 kn', 'ディンギー'],
|
|
122
|
+
['6.5 m / 21.3 ft', '6.2 kn', 'デイセーラー'],
|
|
123
|
+
['10 m / 32.8 ft', '7.7 kn', 'ファミリークルーザー'],
|
|
124
|
+
['13.5 m / 44.3 ft', '8.9 kn', '外洋ヨット'],
|
|
125
|
+
['18 m / 59.1 ft', '10.3 kn', '小型作業船'],
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'title',
|
|
130
|
+
text: '船首波の読み方',
|
|
131
|
+
level: 2,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'list',
|
|
135
|
+
items: [
|
|
136
|
+
'印より下では波は短く、船はまだ安く押せます。',
|
|
137
|
+
'印の近くでは船首波が急になり、燃料や帆が買う速力は減ります。',
|
|
138
|
+
'印の上では波長が LWL と一致します。排水型は古典的な壁にいます。',
|
|
139
|
+
'それより上では排水型は航跡を登ります。滑走型はすでに浮いていることがあります。',
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'tip',
|
|
144
|
+
title: 'LWL を測り、LOA は使わない',
|
|
145
|
+
html: 'パンフレットの長さはオーバーハングを含みます。波が気にするのは没水した喫水線です。LOA しかないと、計算した船体速度は楽観的になります。',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'title',
|
|
149
|
+
text: '一文でフルード数',
|
|
150
|
+
level: 2,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'paragraph',
|
|
154
|
+
html: '船体速度はフルード数 0.40 付近を扱いやすく包んだものです。速さ割る重力かける長さの平方根です。だから船体形状が同じでも、長い喫水線は速くなります。排水限界を上げるきれいな方法は LWL を伸ばすことであり、馬力を足すことではありません。',
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
const schemas: HullSpeedLocaleContent['schemas'] = [
|
|
159
|
+
{
|
|
160
|
+
'@context': 'https://schema.org',
|
|
161
|
+
'@type': 'SoftwareApplication',
|
|
162
|
+
name: title,
|
|
163
|
+
description,
|
|
164
|
+
applicationCategory: 'UtilityApplication',
|
|
165
|
+
operatingSystem: 'Web',
|
|
166
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
167
|
+
} as WithContext<SoftwareApplication>,
|
|
168
|
+
{
|
|
169
|
+
'@context': 'https://schema.org',
|
|
170
|
+
'@type': 'FAQPage',
|
|
171
|
+
mainEntity: faq.map((item) => ({
|
|
172
|
+
'@type': 'Question',
|
|
173
|
+
name: item.question,
|
|
174
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
175
|
+
})),
|
|
176
|
+
} as WithContext<FAQPage>,
|
|
177
|
+
{
|
|
178
|
+
'@context': 'https://schema.org',
|
|
179
|
+
'@type': 'HowTo',
|
|
180
|
+
name: `${title}の使い方`,
|
|
181
|
+
step: howTo.map((step) => ({
|
|
182
|
+
'@type': 'HowToStep',
|
|
183
|
+
name: step.name,
|
|
184
|
+
text: step.text,
|
|
185
|
+
})),
|
|
186
|
+
} as WithContext<HowTo>,
|
|
187
|
+
];
|
|
188
|
+
|
|
189
|
+
export const content: HullSpeedLocaleContent = {
|
|
190
|
+
slug,
|
|
191
|
+
title,
|
|
192
|
+
description,
|
|
193
|
+
ui,
|
|
194
|
+
seo,
|
|
195
|
+
faq,
|
|
196
|
+
bibliography,
|
|
197
|
+
howTo,
|
|
198
|
+
schemas,
|
|
199
|
+
};
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { HullSpeedLocaleContent, HullSpeedUI } from '../index';
|
|
3
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
4
|
+
|
|
5
|
+
const slug = 'sailboat-hull-speed-calculator';
|
|
6
|
+
const title = '세일보트 선체속도 계산기';
|
|
7
|
+
const description =
|
|
8
|
+
'흘수선 길이로 이론 선체속도를 구하고 로그와 비교하며, 배수형 선체가 제 선수파를 타고 오르는 순간을 봅니다.';
|
|
9
|
+
|
|
10
|
+
const ui: HullSpeedUI = {
|
|
11
|
+
metric: '미터법',
|
|
12
|
+
imperial: '야드파운드법',
|
|
13
|
+
unitGroup: '단위',
|
|
14
|
+
sceneLabel: '흘수선과 선수파',
|
|
15
|
+
hullSpeedLabel: '선체속도',
|
|
16
|
+
knotsUnit: 'kn',
|
|
17
|
+
kmhUnit: 'km/h',
|
|
18
|
+
mphUnit: 'mph',
|
|
19
|
+
ratioLabel: 'S/L',
|
|
20
|
+
froudeLabel: 'Fr',
|
|
21
|
+
lwlLabelMetric: '흘수선 길이',
|
|
22
|
+
lwlLabelImperial: '흘수선 길이',
|
|
23
|
+
lwlUnitM: 'm',
|
|
24
|
+
lwlUnitFt: 'ft',
|
|
25
|
+
observedLabel: '로그 속도',
|
|
26
|
+
observedHint: '이론 파를 그리려면 0으로 두세요. 아직 골에 앉아 있는지 보려면 로그를 입력하세요.',
|
|
27
|
+
stretchHint: '선체를 끌어 흘수선을 늘리세요',
|
|
28
|
+
hullKindLabel: '선체 형상',
|
|
29
|
+
displacement: '배수형',
|
|
30
|
+
semi: '반배수형',
|
|
31
|
+
planing: '활주형',
|
|
32
|
+
boatsLabel: '흘수선 예시',
|
|
33
|
+
dinghy: '딩기',
|
|
34
|
+
daysailer: '데이세일러',
|
|
35
|
+
cruiser: '크루저',
|
|
36
|
+
bluewater: '외양',
|
|
37
|
+
workboat: '작업선',
|
|
38
|
+
bandBelow: '아직 짧은 파',
|
|
39
|
+
bandNear: '파 장벽에 가까움',
|
|
40
|
+
bandAt: '선수파를 타고 있음',
|
|
41
|
+
bandAbove: '파를 오르려 함',
|
|
42
|
+
bandPlane: '활주 중, 선체속도를 넘김',
|
|
43
|
+
planingNote:
|
|
44
|
+
'활주형 선체는 이 파를 뒤에 남길 수 있습니다. 선체속도는 기준이지 벽이 아닙니다.',
|
|
45
|
+
displacementNote:
|
|
46
|
+
'배수형 선체는 제 항적을 따라잡으면 값이 가파르게 오릅니다. GPS 목표가 아니라 실용 천장으로 보세요.',
|
|
47
|
+
semiNote:
|
|
48
|
+
'반배수형은 출력이 충분하면 고전 비를 조금 넘을 수 있지만 저항이 급히 오릅니다.',
|
|
49
|
+
waveLegend: '선수파',
|
|
50
|
+
waterLegend: '흘수선',
|
|
51
|
+
markLegend: '선체속도',
|
|
52
|
+
faqTitle: '선체속도 질문',
|
|
53
|
+
bibliographyTitle: '참고문헌',
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const faq: HullSpeedLocaleContent['faq'] = [
|
|
57
|
+
{
|
|
58
|
+
question: '세일보트의 선체속도는 무엇인가요?',
|
|
59
|
+
answer:
|
|
60
|
+
'배수형 선체가 제 흘수선과 거의 같은 길이의 선수파를 끌고 가는 속도입니다. 항해 단위로는 흘수선 길이(피트)의 제곱근에 1.34를 곱해 어림합니다. 임계 속도이지 단단한 물리 정지는 아닙니다.',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
question: '선체속도는 어떻게 계산하나요?',
|
|
64
|
+
answer:
|
|
65
|
+
'흘수선을 피트로 바꾸고 제곱근을 취한 뒤 1.34를 곱해 노트를 얻습니다. 10 m 흘수선은 약 32.8 ft이므로 대략 7.7 kn입니다. 같은 점은 프루드 수 0.40 근처에 해당합니다.',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
question: '활주선에도 선체속도가 적용되나요?',
|
|
69
|
+
answer:
|
|
70
|
+
'식은 배수 모드에 머물렀을 때 선체가 만들 파를 여전히 설명합니다. 활주형과 많은 반배수형은 그 파 위로 오르도록 설계됩니다. 숫자는 기준으로 쓰고 선체 형상 설명을 읽으세요.',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
question: '흘수선 길이와 전장 중 무엇을 쓰나요?',
|
|
74
|
+
answer:
|
|
75
|
+
'실제로 파를 만드는 잠긴 길이인 흘수선 길이(LWL)를 쓰세요. 전장, 선수돌이, 오버행은 파장을 정하지 않습니다. 안내책 LOA가 아니라 물속의 LWL을 재세요.',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const howTo: HullSpeedLocaleContent['howTo'] = [
|
|
80
|
+
{
|
|
81
|
+
name: '흘수선을 늘리기',
|
|
82
|
+
text: '선체를 끌고, 레일을 움직이고, 딩기부터 작업선까지 고르세요. 선체속도는 그 길이(피트) 제곱근의 1.34배입니다.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: '선체 형상 고르기',
|
|
86
|
+
text: '배수형, 반배수형, 활주형은 킬을 바꾸고 배가 제 파에서 빠져나올 수 있는지도 바꿉니다.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: '골 읽기',
|
|
90
|
+
text: '선체속도에서는 선수파와 선미파가 흘수선 하나만큼 떨어지고 배는 골에 앉습니다. 그것이 장벽입니다.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: '로그 비교하기',
|
|
94
|
+
text: '대물 속도를 넣으세요. 더 짧은 파는 아직 싸게 민다는 뜻입니다. 더 긴 파는 골을 오르고 있다는 뜻입니다.',
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
const seo: HullSpeedLocaleContent['seo'] = [
|
|
99
|
+
{
|
|
100
|
+
type: 'title',
|
|
101
|
+
text: '선체속도가 실제로 말하는 것',
|
|
102
|
+
level: 2,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: '배수형 선체는 선수와 선미에서 파를 밀어냅니다. 그 마루가 대략 흘수선 하나만큼 떨어지면 배는 제 항적과 함께 갑니다. 여분 출력은 속력을 사기보다 물을 쌓습니다. 선원이 선체속도라 부르는 상태입니다.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: '이 계산기는 피트 흘수선 제곱근당 1.34노트의 흔한 아마추어 비를 씁니다. 가늘고 긴 선체는 조금 높고 바지선은 낮습니다. 결과는 학습 표시로 보고 실제 로그와 비교하세요.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: '계산한 흘수선 예',
|
|
115
|
+
level: 2,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'table',
|
|
119
|
+
headers: ['흘수선', '선체속도', '전형적인 배'],
|
|
120
|
+
rows: [
|
|
121
|
+
['4.2 m / 13.8 ft', '5.0 kn', '딩기'],
|
|
122
|
+
['6.5 m / 21.3 ft', '6.2 kn', '데이세일러'],
|
|
123
|
+
['10 m / 32.8 ft', '7.7 kn', '가족 크루저'],
|
|
124
|
+
['13.5 m / 44.3 ft', '8.9 kn', '외양 요트'],
|
|
125
|
+
['18 m / 59.1 ft', '10.3 kn', '소형 작업선'],
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'title',
|
|
130
|
+
text: '선수파 읽는 법',
|
|
131
|
+
level: 2,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'list',
|
|
135
|
+
items: [
|
|
136
|
+
'표시 아래에서는 파가 짧고 배는 아직 싸게 밀립니다.',
|
|
137
|
+
'표시 근처에서는 선수파가 가팔라지고 연료나 돛이 사는 속력이 줄어듭니다.',
|
|
138
|
+
'표시 위에서는 파장이 LWL과 맞습니다. 배수형은 고전 장벽에 있습니다.',
|
|
139
|
+
'그보다 위에서는 배수형이 항적을 오릅니다. 활주형은 이미 떠 있을 수 있습니다.',
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'tip',
|
|
144
|
+
title: 'LWL을 재고 LOA는 쓰지 마세요',
|
|
145
|
+
html: '안내책 길이는 오버행을 포함합니다. 파가 신경 쓰는 것은 잠긴 흘수선입니다. LOA만 있으면 계산된 선체속도는 낙관적입니다.',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'title',
|
|
149
|
+
text: '한 문장으로 프루드 수',
|
|
150
|
+
level: 2,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'paragraph',
|
|
154
|
+
html: '선체속도는 프루드 수 0.40 근처를 다루기 쉽게 싼 값입니다. 속력을 중력 곱하기 길이의 제곱근으로 나눈 것입니다. 그래서 선체 형상이 같아도 더 긴 흘수선이 더 빠릅니다. 배수 한계를 올리는 깨끗한 방법은 LWL을 늘리는 것이지 마력을 더하는 것이 아닙니다.',
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
const schemas: HullSpeedLocaleContent['schemas'] = [
|
|
159
|
+
{
|
|
160
|
+
'@context': 'https://schema.org',
|
|
161
|
+
'@type': 'SoftwareApplication',
|
|
162
|
+
name: title,
|
|
163
|
+
description,
|
|
164
|
+
applicationCategory: 'UtilityApplication',
|
|
165
|
+
operatingSystem: 'Web',
|
|
166
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
167
|
+
} as WithContext<SoftwareApplication>,
|
|
168
|
+
{
|
|
169
|
+
'@context': 'https://schema.org',
|
|
170
|
+
'@type': 'FAQPage',
|
|
171
|
+
mainEntity: faq.map((item) => ({
|
|
172
|
+
'@type': 'Question',
|
|
173
|
+
name: item.question,
|
|
174
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
175
|
+
})),
|
|
176
|
+
} as WithContext<FAQPage>,
|
|
177
|
+
{
|
|
178
|
+
'@context': 'https://schema.org',
|
|
179
|
+
'@type': 'HowTo',
|
|
180
|
+
name: `${title} 사용법`,
|
|
181
|
+
step: howTo.map((step) => ({
|
|
182
|
+
'@type': 'HowToStep',
|
|
183
|
+
name: step.name,
|
|
184
|
+
text: step.text,
|
|
185
|
+
})),
|
|
186
|
+
} as WithContext<HowTo>,
|
|
187
|
+
];
|
|
188
|
+
|
|
189
|
+
export const content: HullSpeedLocaleContent = {
|
|
190
|
+
slug,
|
|
191
|
+
title,
|
|
192
|
+
description,
|
|
193
|
+
ui,
|
|
194
|
+
seo,
|
|
195
|
+
faq,
|
|
196
|
+
bibliography,
|
|
197
|
+
howTo,
|
|
198
|
+
schemas,
|
|
199
|
+
};
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { HullSpeedLocaleContent, HullSpeedUI } from '../index';
|
|
3
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
4
|
+
|
|
5
|
+
const slug = 'rompsnelheid-calculator';
|
|
6
|
+
const title = 'Calculator voor rompsnelheid';
|
|
7
|
+
const description =
|
|
8
|
+
'Bepaal de theoretische rompsnelheid uit de waterlijnlengte, vergelijk een log en zie wanneer een verplaatsingsscheepje in zijn eigen boeggolf klimt.';
|
|
9
|
+
|
|
10
|
+
const ui: HullSpeedUI = {
|
|
11
|
+
metric: 'Metriek',
|
|
12
|
+
imperial: 'Imperiaal',
|
|
13
|
+
unitGroup: 'Eenheden',
|
|
14
|
+
sceneLabel: 'Waterlijn en boeggolf',
|
|
15
|
+
hullSpeedLabel: 'Rompsnelheid',
|
|
16
|
+
knotsUnit: 'kn',
|
|
17
|
+
kmhUnit: 'km/h',
|
|
18
|
+
mphUnit: 'mph',
|
|
19
|
+
ratioLabel: 'S/L',
|
|
20
|
+
froudeLabel: 'Fr',
|
|
21
|
+
lwlLabelMetric: 'Waterlijnlengte',
|
|
22
|
+
lwlLabelImperial: 'Waterlijnlengte',
|
|
23
|
+
lwlUnitM: 'm',
|
|
24
|
+
lwlUnitFt: 'ft',
|
|
25
|
+
observedLabel: 'Logsnelheid',
|
|
26
|
+
observedHint: 'Laat 0 staan om de theoretische golf te tekenen. Typ een log om te zien of je nog in het dal zit.',
|
|
27
|
+
stretchHint: 'Sleep de romp om de waterlijn te strekken',
|
|
28
|
+
hullKindLabel: 'Rompvorm',
|
|
29
|
+
displacement: 'Verplaatsing',
|
|
30
|
+
semi: 'Halfverplaatsing',
|
|
31
|
+
planing: 'Glijdend',
|
|
32
|
+
boatsLabel: 'Voorbeeldwaterlijnen',
|
|
33
|
+
dinghy: 'Dinghy',
|
|
34
|
+
daysailer: 'Daysailer',
|
|
35
|
+
cruiser: 'Kruiser',
|
|
36
|
+
bluewater: 'Zee',
|
|
37
|
+
workboat: 'Werkboot',
|
|
38
|
+
bandBelow: 'Nog een korte golf',
|
|
39
|
+
bandNear: 'Dicht bij de golfbarrière',
|
|
40
|
+
bandAt: 'Op de boeggolf',
|
|
41
|
+
bandAbove: 'Probeert de golf te beklimmen',
|
|
42
|
+
bandPlane: 'Aan het glijden, voorbij de rompsnelheid',
|
|
43
|
+
planingNote:
|
|
44
|
+
'Een glijdende romp kan deze golf achter zich laten. Rompsnelheid is een referentie, geen muur.',
|
|
45
|
+
displacementNote:
|
|
46
|
+
'Een verplaatsingsromp betaalt steil als hij zijn eigen kielzog inhaalt. Zie het als praktisch plafond, niet als GPS doel.',
|
|
47
|
+
semiNote:
|
|
48
|
+
'Halfverplaatsers kunnen de klassieke verhouding met genoeg vermogen iets overschrijden, tegen een scherpe weerstandsstijging.',
|
|
49
|
+
waveLegend: 'Boeggolf',
|
|
50
|
+
waterLegend: 'Waterlijn',
|
|
51
|
+
markLegend: 'Rompsnelheid',
|
|
52
|
+
faqTitle: 'Vragen over rompsnelheid',
|
|
53
|
+
bibliographyTitle: 'Bronnen',
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const faq: HullSpeedLocaleContent['faq'] = [
|
|
57
|
+
{
|
|
58
|
+
question: 'Wat is de rompsnelheid van een zeilboot?',
|
|
59
|
+
answer:
|
|
60
|
+
'Het is de snelheid waarbij een verplaatsingsromp vaart met een boeggolf ongeveer zo lang als de eigen waterlijn. In nautische eenheden schat je die als 1.34 keer de wortel van de waterlijnlengte in voet. Het is een kritische snelheid, geen harde fysieke stop.',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
question: 'Hoe bereken je rompsnelheid?',
|
|
64
|
+
answer:
|
|
65
|
+
'Zet de waterlijn om in voet, neem de wortel en vermenigvuldig met 1.34 voor knopen. Een waterlijn van 10 m is ongeveer 32.8 ft, dus zo n 7.7 kn. Hetzelfde punt hoort bij een Froude getal rond 0.40.',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
question: 'Geldt rompsnelheid ook voor glijboten?',
|
|
69
|
+
answer:
|
|
70
|
+
'De formule beschrijft nog steeds de golf die de romp zou maken in verplaatsingsmodus. Glijders en veel halfverplaatsers zijn gemaakt om over die golf te klimmen. Gebruik het getal als referentie en lees de noot bij de rompvorm.',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
question: 'Moet ik waterlijnlengte of lengte over alles nemen?',
|
|
74
|
+
answer:
|
|
75
|
+
'Neem de lengte op de waterlijn (LWL), de ondergedompelde lengte die de golf echt maakt. Lengte over alles, boegsprieten en overhangen zetten de golflengte niet. Meet LWL in het water, niet de LOA uit de brochure.',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const howTo: HullSpeedLocaleContent['howTo'] = [
|
|
80
|
+
{
|
|
81
|
+
name: 'Strek de waterlijn',
|
|
82
|
+
text: 'Sleep de romp, verschuif de waterlijnrail of kies van dinghy tot werkboot. Rompsnelheid is 1.34 keer de wortel van die lengte in voet.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'Kies de rompvorm',
|
|
86
|
+
text: 'Verplaatsing, halfverplaatsing of glijdend verandert de kiel en of de boot uit zijn eigen golf kan klimmen.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'Lees het dal',
|
|
90
|
+
text: 'Bij rompsnelheid zitten boeg en hekgolf één waterlijn uit elkaar en ligt de boot in het dal. Dat is de barrière.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'Vergelijk een log',
|
|
94
|
+
text: 'Voer de vaart door het water in. Een kortere golf betekent dat je nog goedkoop duwt. Een langere golf betekent dat je het dal inklimt.',
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
const seo: HullSpeedLocaleContent['seo'] = [
|
|
99
|
+
{
|
|
100
|
+
type: 'title',
|
|
101
|
+
text: 'Wat rompsnelheid je écht vertelt',
|
|
102
|
+
level: 2,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Een verplaatsingsromp duwt een golf vanaf de boeg en een vanaf het hek. Wanneer die toppen ongeveer één waterlijn uit elkaar liggen, vaart de boot met zijn eigen kielzog. Extra vermogen stapelt dan vooral water op in plaats van vaart te kopen. Die toestand noemen zeilers rompsnelheid.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'De calculator gebruikt de gangbare amateurverhouding 1.34 knopen per wortel van waterlijnvoeten. Slanke, lange rompen kunnen iets hoger, bakken lager. Zie het resultaat als lesstreep en vergelijk een echt log.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: 'Doorgerekende waterlijnen',
|
|
115
|
+
level: 2,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'table',
|
|
119
|
+
headers: ['Waterlijn', 'Rompsnelheid', 'Typische boot'],
|
|
120
|
+
rows: [
|
|
121
|
+
['4.2 m / 13.8 ft', '5.0 kn', 'Dinghy'],
|
|
122
|
+
['6.5 m / 21.3 ft', '6.2 kn', 'Daysailer'],
|
|
123
|
+
['10 m / 32.8 ft', '7.7 kn', 'Familiekruiser'],
|
|
124
|
+
['13.5 m / 44.3 ft', '8.9 kn', 'Zeejacht'],
|
|
125
|
+
['18 m / 59.1 ft', '10.3 kn', 'Kleine werkboot'],
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'title',
|
|
130
|
+
text: 'De boeggolf lezen',
|
|
131
|
+
level: 2,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'list',
|
|
135
|
+
items: [
|
|
136
|
+
'Onder het merkteken is de golf kort en de boot nog goedkoop te drijven.',
|
|
137
|
+
'Dicht bij het merkteken steilt de boeggolf en kopen brandstof of zeil minder vaart.',
|
|
138
|
+
'Op het merkteken past de golflengte bij LWL. Een verplaatsingsromp staat aan de klassieke barrière.',
|
|
139
|
+
'Erboven klimt een verplaatsingsromp in zijn kielzog. Een glijder kan al omhoog zijn.',
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'tip',
|
|
144
|
+
title: 'Meet LWL, niet LOA',
|
|
145
|
+
html: 'Brochurelengte bevat overhangen. De golf geeft om de ondergedompelde waterlijn. Heb je alleen LOA, dan is de berekende rompsnelheid te optimistisch.',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'title',
|
|
149
|
+
text: 'Het Froude getal in één zin',
|
|
150
|
+
level: 2,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'paragraph',
|
|
154
|
+
html: 'Rompsnelheid is een handige verpakking van een Froude getal rond 0.40: vaart gedeeld door de wortel van zwaartekracht maal lengte. Daarom zijn langere waterlijnen sneller, ook als de rompvorm gelijk blijft. LWL strekken tilt de verplaatsingsgrens schoon omhoog; extra pk doet dat niet.',
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
const schemas: HullSpeedLocaleContent['schemas'] = [
|
|
159
|
+
{
|
|
160
|
+
'@context': 'https://schema.org',
|
|
161
|
+
'@type': 'SoftwareApplication',
|
|
162
|
+
name: title,
|
|
163
|
+
description,
|
|
164
|
+
applicationCategory: 'UtilityApplication',
|
|
165
|
+
operatingSystem: 'Web',
|
|
166
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
167
|
+
} as WithContext<SoftwareApplication>,
|
|
168
|
+
{
|
|
169
|
+
'@context': 'https://schema.org',
|
|
170
|
+
'@type': 'FAQPage',
|
|
171
|
+
mainEntity: faq.map((item) => ({
|
|
172
|
+
'@type': 'Question',
|
|
173
|
+
name: item.question,
|
|
174
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
175
|
+
})),
|
|
176
|
+
} as WithContext<FAQPage>,
|
|
177
|
+
{
|
|
178
|
+
'@context': 'https://schema.org',
|
|
179
|
+
'@type': 'HowTo',
|
|
180
|
+
name: `${title} gebruiken`,
|
|
181
|
+
step: howTo.map((step) => ({
|
|
182
|
+
'@type': 'HowToStep',
|
|
183
|
+
name: step.name,
|
|
184
|
+
text: step.text,
|
|
185
|
+
})),
|
|
186
|
+
} as WithContext<HowTo>,
|
|
187
|
+
];
|
|
188
|
+
|
|
189
|
+
export const content: HullSpeedLocaleContent = {
|
|
190
|
+
slug,
|
|
191
|
+
title,
|
|
192
|
+
description,
|
|
193
|
+
ui,
|
|
194
|
+
seo,
|
|
195
|
+
faq,
|
|
196
|
+
bibliography,
|
|
197
|
+
howTo,
|
|
198
|
+
schemas,
|
|
199
|
+
};
|