@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 = 'rumpfgeschwindigkeit-rechner';
|
|
6
|
+
const title = 'Rechner für Rumpfgeschwindigkeit';
|
|
7
|
+
const description =
|
|
8
|
+
'Ermittle die theoretische Rumpfgeschwindigkeit aus der Wasserlinienlänge, vergleiche ein Log und sieh, wann ein Verdränger in seine eigene Bugwelle klettert.';
|
|
9
|
+
|
|
10
|
+
const ui: HullSpeedUI = {
|
|
11
|
+
metric: 'Metrisch',
|
|
12
|
+
imperial: 'Imperial',
|
|
13
|
+
unitGroup: 'Einheiten',
|
|
14
|
+
sceneLabel: 'Wasserlinie und Bugwelle',
|
|
15
|
+
hullSpeedLabel: 'Rumpfgeschwindigkeit',
|
|
16
|
+
knotsUnit: 'kn',
|
|
17
|
+
kmhUnit: 'km/h',
|
|
18
|
+
mphUnit: 'mph',
|
|
19
|
+
ratioLabel: 'S/L',
|
|
20
|
+
froudeLabel: 'Fr',
|
|
21
|
+
lwlLabelMetric: 'Wasserlinienlänge',
|
|
22
|
+
lwlLabelImperial: 'Wasserlinienlänge',
|
|
23
|
+
lwlUnitM: 'm',
|
|
24
|
+
lwlUnitFt: 'ft',
|
|
25
|
+
observedLabel: 'Loggeschwindigkeit',
|
|
26
|
+
observedHint: 'Lass 0 stehen, um die theoretische Welle zu zeichnen. Tippe ein Log, um zu sehen, ob du noch in der Mulde sitzt.',
|
|
27
|
+
stretchHint: 'Zieh den Rumpf, um die Wasserlinie zu strecken',
|
|
28
|
+
hullKindLabel: 'Rumpfform',
|
|
29
|
+
displacement: 'Verdränger',
|
|
30
|
+
semi: 'Halbverdränger',
|
|
31
|
+
planing: 'Gleiter',
|
|
32
|
+
boatsLabel: 'Beispielwasserlinien',
|
|
33
|
+
dinghy: 'Jolle',
|
|
34
|
+
daysailer: 'Daysailer',
|
|
35
|
+
cruiser: 'Kreuzer',
|
|
36
|
+
bluewater: 'Hochsee',
|
|
37
|
+
workboat: 'Arbeitsschiff',
|
|
38
|
+
bandBelow: 'Noch eine kurze Welle',
|
|
39
|
+
bandNear: 'Näher an der Wellenbarriere',
|
|
40
|
+
bandAt: 'Auf der Bugwelle',
|
|
41
|
+
bandAbove: 'Versucht, die Welle zu erklimmen',
|
|
42
|
+
bandPlane: 'Im Gleitmodus, über der Rumpfgeschwindigkeit',
|
|
43
|
+
planingNote:
|
|
44
|
+
'Ein Gleiter kann diese Welle hinter sich lassen. Die Rumpfgeschwindigkeit ist eine Referenz, keine Wand.',
|
|
45
|
+
displacementNote:
|
|
46
|
+
'Ein Verdränger zahlt steil, sobald er seinen eigenen Sog einholt. Nimm sie als praktische Decke, nicht als GPS Ziel.',
|
|
47
|
+
semiNote:
|
|
48
|
+
'Halbverdränger können den klassischen Faktor mit genug Leistung etwas überschreiten, bei scharfem Widerstandsanstieg.',
|
|
49
|
+
waveLegend: 'Bugwelle',
|
|
50
|
+
waterLegend: 'Wasserlinie',
|
|
51
|
+
markLegend: 'Rumpfgeschwindigkeit',
|
|
52
|
+
faqTitle: 'Fragen zur Rumpfgeschwindigkeit',
|
|
53
|
+
bibliographyTitle: 'Quellen',
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const faq: HullSpeedLocaleContent['faq'] = [
|
|
57
|
+
{
|
|
58
|
+
question: 'Was ist die Rumpfgeschwindigkeit eines Segelboots?',
|
|
59
|
+
answer:
|
|
60
|
+
'Es ist die Geschwindigkeit, bei der ein Verdränger mit einer Bugwelle fährt, die ungefähr so lang ist wie seine Wasserlinie. In nautischen Einheiten schätzt man sie als 1.34 mal die Wurzel der Wasserlinienlänge in Fuß. Das ist eine kritische Geschwindigkeit, kein harter physikalischer Stopp.',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
question: 'Wie berechnet man die Rumpfgeschwindigkeit?',
|
|
64
|
+
answer:
|
|
65
|
+
'Wandle die Wasserlinie in Fuß um, ziehe die Wurzel und multipliziere mit 1.34, um Knoten zu erhalten. Eine 10 m Wasserlinie sind etwa 32.8 ft, also rund 7.7 kn. Derselbe Punkt entspricht einer Froude Zahl nahe 0.40.',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
question: 'Gilt die Rumpfgeschwindigkeit auch für Gleiter?',
|
|
69
|
+
answer:
|
|
70
|
+
'Die Formel beschreibt weiter die Welle, die der Rumpf im Verdrängermodus machen würde. Gleiter und viele Halbverdränger sind gebaut, um über diese Welle zu klettern. Nimm die Zahl als Referenz und lies den Hinweis zur Rumpfform.',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
question: 'Soll ich Wasserlinienlänge oder Gesamtlänge nehmen?',
|
|
74
|
+
answer:
|
|
75
|
+
'Nimm die Länge in der Wasserlinie (LWL), die getauchte Länge, die die Welle wirklich macht. Gesamtlänge, Bugspriete und Überhänge setzen die Wellenlänge nicht. Miss LWL im Wasser, nicht die LOA aus dem Prospekt.',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const howTo: HullSpeedLocaleContent['howTo'] = [
|
|
80
|
+
{
|
|
81
|
+
name: 'Wasserlinie strecken',
|
|
82
|
+
text: 'Zieh den Rumpf, bewege die Schiene oder wähle von der Jolle bis zum Arbeitsschiff. Die Rumpfgeschwindigkeit ist 1.34 mal die Wurzel dieser Länge in Fuß.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'Rumpfform wählen',
|
|
86
|
+
text: 'Verdränger, Halbverdränger oder Gleiter ändert den Kiel und ob das Boot aus seiner eigenen Welle herausklettern kann.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'Die Mulde lesen',
|
|
90
|
+
text: 'Bei Rumpfgeschwindigkeit sitzen Bug und Heckwelle eine Wasserlinie auseinander und das Boot liegt im Trog. Das ist die Barriere.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'Ein Log vergleichen',
|
|
94
|
+
text: 'Gib die Fahrt durchs Wasser ein. Eine kürzere Welle heißt, du fährst noch günstig. Eine längere Welle heißt, du kletterst in die Mulde.',
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
const seo: HullSpeedLocaleContent['seo'] = [
|
|
99
|
+
{
|
|
100
|
+
type: 'title',
|
|
101
|
+
text: 'Was die Rumpfgeschwindigkeit wirklich sagt',
|
|
102
|
+
level: 2,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Ein Verdränger schiebt eine Welle vom Bug und eine vom Heck. Liegen diese Kämme etwa eine Wasserlinie auseinander, fährt das Boot mit seinem eigenen Sog. Extra Leistung türmt dann vor allem Wasser auf, statt Fahrt zu kaufen. Diesen Zustand nennen Segler Rumpfgeschwindigkeit.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'Der Rechner nutzt das übliche Amateurverhältnis 1.34 Knoten je Wurzel der Wasserlinie in Fuß. Schlanke, lange Rümpfe liegen etwas höher, Lastkähne tiefer. Nimm das Ergebnis als Lehrstrich und vergleiche es mit einem echten Log.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: 'Durchgerechnete Wasserlinien',
|
|
115
|
+
level: 2,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'table',
|
|
119
|
+
headers: ['Wasserlinie', 'Rumpfgeschwindigkeit', 'Typisches Boot'],
|
|
120
|
+
rows: [
|
|
121
|
+
['4.2 m / 13.8 ft', '5.0 kn', 'Jolle'],
|
|
122
|
+
['6.5 m / 21.3 ft', '6.2 kn', 'Daysailer'],
|
|
123
|
+
['10 m / 32.8 ft', '7.7 kn', 'Familienkreuzer'],
|
|
124
|
+
['13.5 m / 44.3 ft', '8.9 kn', 'Hochseeyacht'],
|
|
125
|
+
['18 m / 59.1 ft', '10.3 kn', 'Kleines Arbeitsschiff'],
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'title',
|
|
130
|
+
text: 'Die Bugwelle lesen',
|
|
131
|
+
level: 2,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'list',
|
|
135
|
+
items: [
|
|
136
|
+
'Unter der Marke ist die Welle kurz und das Boot noch günstig zu treiben.',
|
|
137
|
+
'Nahe der Marke wird die Bugwelle steiler und Kraftstoff oder Segel kaufen weniger Fahrt.',
|
|
138
|
+
'Auf der Marke passt die Wellenlänge zur LWL. Ein Verdränger steht an der klassischen Barriere.',
|
|
139
|
+
'Darüber klettert ein Verdränger in seinen Sog. Ein Gleiter kann schon oben sein.',
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'tip',
|
|
144
|
+
title: 'LWL messen, nicht LOA',
|
|
145
|
+
html: 'Die Prospektlänge enthält Überhänge. Die Welle interessiert die getauchte Wasserlinie. Hast du nur LOA, wird die berechnete Rumpfgeschwindigkeit zu optimistisch.',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'title',
|
|
149
|
+
text: 'Die Froude Zahl in einem Satz',
|
|
150
|
+
level: 2,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'paragraph',
|
|
154
|
+
html: 'Rumpfgeschwindigkeit ist eine bequeme Verpackung einer Froude Zahl nahe 0.40: Fahrt geteilt durch die Wurzel aus Schwerkraft mal Länge. Deshalb sind längere Wasserlinien schneller, auch wenn die Rumpfform gleich bleibt. LWL strecken hebt die Verdrängergrenze sauber; Pferdestärken tun das nicht.',
|
|
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} verwenden`,
|
|
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 = 'Sailboat Hull Speed Calculator';
|
|
7
|
+
const description =
|
|
8
|
+
'Find theoretical hull speed from waterline length, compare an observed speed, and see when a displacement hull is climbing its own bow wave.';
|
|
9
|
+
|
|
10
|
+
const ui: HullSpeedUI = {
|
|
11
|
+
metric: 'Metric',
|
|
12
|
+
imperial: 'Imperial',
|
|
13
|
+
unitGroup: 'Units',
|
|
14
|
+
sceneLabel: 'Waterline and bow wave',
|
|
15
|
+
hullSpeedLabel: 'Hull speed',
|
|
16
|
+
knotsUnit: 'kn',
|
|
17
|
+
kmhUnit: 'km/h',
|
|
18
|
+
mphUnit: 'mph',
|
|
19
|
+
ratioLabel: 'S/L',
|
|
20
|
+
froudeLabel: 'Fr',
|
|
21
|
+
lwlLabelMetric: 'Waterline length',
|
|
22
|
+
lwlLabelImperial: 'Waterline length',
|
|
23
|
+
lwlUnitM: 'm',
|
|
24
|
+
lwlUnitFt: 'ft',
|
|
25
|
+
observedLabel: 'Log speed',
|
|
26
|
+
observedHint: 'Leave at 0 to draw the theoretical wave. Type a log reading to see if you are still sitting in the hole.',
|
|
27
|
+
stretchHint: 'Drag the hull to stretch the waterline',
|
|
28
|
+
hullKindLabel: 'Hull form',
|
|
29
|
+
displacement: 'Displacement',
|
|
30
|
+
semi: 'Semi displacement',
|
|
31
|
+
planing: 'Planing',
|
|
32
|
+
boatsLabel: 'Example waterlines',
|
|
33
|
+
dinghy: 'Dinghy',
|
|
34
|
+
daysailer: 'Daysailer',
|
|
35
|
+
cruiser: 'Cruiser',
|
|
36
|
+
bluewater: 'Bluewater',
|
|
37
|
+
workboat: 'Workboat',
|
|
38
|
+
bandBelow: 'Still making a short wave',
|
|
39
|
+
bandNear: 'Approaching the wave barrier',
|
|
40
|
+
bandAt: 'Riding the bow wave',
|
|
41
|
+
bandAbove: 'Trying to climb the wave',
|
|
42
|
+
bandPlane: 'On the plane, past hull speed',
|
|
43
|
+
planingNote:
|
|
44
|
+
'A planing hull can leave this wave behind. Hull speed is a reference, not a wall.',
|
|
45
|
+
displacementNote:
|
|
46
|
+
'A displacement hull pays steeply as it catches its own wake. Treat hull speed as a practical ceiling, not a GPS target.',
|
|
47
|
+
semiNote:
|
|
48
|
+
'Semi displacement hulls can press a little past the classic ratio with enough power, at a sharp rise in resistance.',
|
|
49
|
+
waveLegend: 'Bow wave',
|
|
50
|
+
waterLegend: 'Waterline',
|
|
51
|
+
markLegend: 'Hull speed',
|
|
52
|
+
faqTitle: 'Hull speed questions',
|
|
53
|
+
bibliographyTitle: 'References',
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const faq: HullSpeedLocaleContent['faq'] = [
|
|
57
|
+
{
|
|
58
|
+
question: 'What is hull speed on a sailboat?',
|
|
59
|
+
answer:
|
|
60
|
+
'Hull speed is the speed at which a displacement hull is travelling with a bow wave about as long as its own waterline. In nautical units it is commonly estimated as 1.34 times the square root of waterline length in feet. It is a critical speed, not a hard physical stop.',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
question: 'How do you calculate hull speed?',
|
|
64
|
+
answer:
|
|
65
|
+
'Convert waterline length to feet, take the square root, and multiply by 1.34 to get knots. A 10 m waterline is about 32.8 ft, so hull speed is about 7.7 kn. The same point corresponds to a Froude number near 0.40.',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
question: 'Does hull speed apply to planing boats?',
|
|
69
|
+
answer:
|
|
70
|
+
'The formula still describes the wave the hull would make if it stayed in displacement mode. Planing and many semi displacement craft are designed to climb over that wave. Use the number as a reference, then look at the hull form note.',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
question: 'Should I use waterline length or overall length?',
|
|
74
|
+
answer:
|
|
75
|
+
'Use length on the waterline (LWL), the immersed length that actually makes the wave. Overall length, bowsprits and overhangs do not set the wavelength. Measure LWL in the water, not from a brochure LOA.',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const howTo: HullSpeedLocaleContent['howTo'] = [
|
|
80
|
+
{
|
|
81
|
+
name: 'Stretch the waterline',
|
|
82
|
+
text: 'Drag the hull, move the waterline rail, or pick a dinghy through workboat. Hull speed is 1.34 times the square root of that length in feet.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'Choose hull form',
|
|
86
|
+
text: 'Displacement, semi displacement or planing changes the keel and whether the boat can climb out of its own wave.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'Read the hole',
|
|
90
|
+
text: 'At hull speed the bow wave and stern wave sit one waterline apart and the boat sits in the trough. That is the barrier.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'Compare a log speed',
|
|
94
|
+
text: 'Enter speed through the water. A shorter wave means you are still cheap to drive. A longer wave means you are climbing the hole.',
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
const seo: HullSpeedLocaleContent['seo'] = [
|
|
99
|
+
{
|
|
100
|
+
type: 'title',
|
|
101
|
+
text: 'What hull speed is actually telling you',
|
|
102
|
+
level: 2,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'A displacement hull pushes a wave from the bow and another from the stern. When those crests sit about one waterline apart, the boat is travelling with its own wake. Extra power then mostly heaps water up instead of buying speed. That condition is what sailors call hull speed.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'The calculator uses the common amateur ratio 1.34 knots per square root of waterline feet. Fine, long hulls can sit a little higher; barges sit lower. Treat the result as a teaching mark, then compare a real log speed against it.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: 'Worked waterline examples',
|
|
115
|
+
level: 2,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'table',
|
|
119
|
+
headers: ['Waterline', 'Hull speed', 'Typical boat'],
|
|
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', 'Family cruiser'],
|
|
124
|
+
['13.5 m / 44.3 ft', '8.9 kn', 'Bluewater yacht'],
|
|
125
|
+
['18 m / 59.1 ft', '10.3 kn', 'Small workboat'],
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'title',
|
|
130
|
+
text: 'How to read the bow wave',
|
|
131
|
+
level: 2,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'list',
|
|
135
|
+
items: [
|
|
136
|
+
'Below the mark the wave is short and the boat is still cheap to drive.',
|
|
137
|
+
'Near the mark the bow wave steepens and fuel or sail power buys less speed.',
|
|
138
|
+
'On the mark the wavelength matches LWL. A displacement hull is at the classic barrier.',
|
|
139
|
+
'Above the mark a displacement hull is climbing its wake. A planing hull may already be up.',
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'tip',
|
|
144
|
+
title: 'Measure LWL, not LOA',
|
|
145
|
+
html: 'Brochure length includes overhangs. The wave cares about the immersed waterline. If you only have LOA, the hull speed you compute will be optimistic.',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'title',
|
|
149
|
+
text: 'Froude number in one sentence',
|
|
150
|
+
level: 2,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'paragraph',
|
|
154
|
+
html: 'Hull speed is a convenient packaging of a Froude number near 0.40: speed divided by the square root of gravity times length. That is why longer waterlines are faster even when the hull shape stays the same. Stretching LWL is the clean way to raise a displacement limit; adding horsepower is not.',
|
|
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: `How to use ${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 = 'calculadora-velocidad-casco-velero';
|
|
6
|
+
const title = 'Calculadora de velocidad de casco';
|
|
7
|
+
const description =
|
|
8
|
+
'Obtén la velocidad de casco teórica a partir de la eslora de flotación, compara un registro real y ve cuándo un casco de desplazamiento trepa su propia ola de proa.';
|
|
9
|
+
|
|
10
|
+
const ui: HullSpeedUI = {
|
|
11
|
+
metric: 'Métrico',
|
|
12
|
+
imperial: 'Imperial',
|
|
13
|
+
unitGroup: 'Unidades',
|
|
14
|
+
sceneLabel: 'Flotación y ola de proa',
|
|
15
|
+
hullSpeedLabel: 'Velocidad de casco',
|
|
16
|
+
knotsUnit: 'kn',
|
|
17
|
+
kmhUnit: 'km/h',
|
|
18
|
+
mphUnit: 'mph',
|
|
19
|
+
ratioLabel: 'S/L',
|
|
20
|
+
froudeLabel: 'Fr',
|
|
21
|
+
lwlLabelMetric: 'Eslora de flotación',
|
|
22
|
+
lwlLabelImperial: 'Eslora de flotación',
|
|
23
|
+
lwlUnitM: 'm',
|
|
24
|
+
lwlUnitFt: 'ft',
|
|
25
|
+
observedLabel: 'Velocidad de la corredera',
|
|
26
|
+
observedHint: 'Déjalo en 0 para dibujar la ola teórica. Escribe un registro para ver si sigues sentado en el hueco.',
|
|
27
|
+
stretchHint: 'Arrastra el casco para estirar la flotación',
|
|
28
|
+
hullKindLabel: 'Forma de casco',
|
|
29
|
+
displacement: 'Desplazamiento',
|
|
30
|
+
semi: 'Semidesplazamiento',
|
|
31
|
+
planing: 'Planeo',
|
|
32
|
+
boatsLabel: 'Flotaciones de ejemplo',
|
|
33
|
+
dinghy: 'Dinghy',
|
|
34
|
+
daysailer: 'Daysailer',
|
|
35
|
+
cruiser: 'Crucero',
|
|
36
|
+
bluewater: 'Altura',
|
|
37
|
+
workboat: 'Trabajo',
|
|
38
|
+
bandBelow: 'Aún hace una ola corta',
|
|
39
|
+
bandNear: 'Acercándose a la barrera de ola',
|
|
40
|
+
bandAt: 'Montado en la ola de proa',
|
|
41
|
+
bandAbove: 'Intentando trepar la ola',
|
|
42
|
+
bandPlane: 'En el planeo, por encima de la velocidad de casco',
|
|
43
|
+
planingNote:
|
|
44
|
+
'Un casco de planeo puede dejar atrás esta ola. La velocidad de casco es una referencia, no un muro.',
|
|
45
|
+
displacementNote:
|
|
46
|
+
'Un casco de desplazamiento paga caro al alcanzar su propia estela. Trátala como techo práctico, no como objetivo de GPS.',
|
|
47
|
+
semiNote:
|
|
48
|
+
'Los cascos de semidesplazamiento pueden pasar un poco del ratio clásico con potencia de sobra, a costa de una subida brusca de resistencia.',
|
|
49
|
+
waveLegend: 'Ola de proa',
|
|
50
|
+
waterLegend: 'Flotación',
|
|
51
|
+
markLegend: 'Velocidad de casco',
|
|
52
|
+
faqTitle: 'Preguntas sobre velocidad de casco',
|
|
53
|
+
bibliographyTitle: 'Referencias',
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const faq: HullSpeedLocaleContent['faq'] = [
|
|
57
|
+
{
|
|
58
|
+
question: '¿Qué es la velocidad de casco en un velero?',
|
|
59
|
+
answer:
|
|
60
|
+
'Es la velocidad a la que un casco de desplazamiento viaja con una ola de proa casi tan larga como su propia flotación. En unidades náuticas se estima como 1.34 veces la raíz de la eslora de flotación en pies. Es una velocidad crítica, no un tope físico duro.',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
question: '¿Cómo se calcula la velocidad de casco?',
|
|
64
|
+
answer:
|
|
65
|
+
'Pasa la flotación a pies, saca la raíz y multiplica por 1.34 para obtener nudos. Una flotación de 10 m son unos 32.8 ft, así que sale cerca de 7.7 kn. Ese punto corresponde a un número de Froude próximo a 0.40.',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
question: '¿Sirve la velocidad de casco para lanchas de planeo?',
|
|
69
|
+
answer:
|
|
70
|
+
'La fórmula sigue describiendo la ola que haría el casco si se quedara en modo desplazamiento. El planeo y muchos semidesplazamientos están pensados para trepar esa ola. Usa el número como referencia y lee la nota de forma de casco.',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
question: '¿Debo usar la eslora de flotación o la eslora total?',
|
|
74
|
+
answer:
|
|
75
|
+
'Usa la eslora de flotación (LWL), la longitud inmersa que realmente genera la ola. La eslora total, baupreses y voladizos no fijan la longitud de onda. Mide LWL en el agua, no el LOA del folleto.',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const howTo: HullSpeedLocaleContent['howTo'] = [
|
|
80
|
+
{
|
|
81
|
+
name: 'Estira la flotación',
|
|
82
|
+
text: 'Arrastra el casco, mueve el rail de flotación o elige desde dinghy hasta barco de trabajo. La velocidad de casco es 1.34 veces la raíz de esa longitud en pies.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'Elige la forma de casco',
|
|
86
|
+
text: 'Desplazamiento, semidesplazamiento o planeo cambia la quilla y si el barco puede salir de su propia ola.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'Lee el hueco',
|
|
90
|
+
text: 'A velocidad de casco la ola de proa y la de popa quedan a una flotación de distancia y el barco se sienta en el seno. Esa es la barrera.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'Compara un registro',
|
|
94
|
+
text: 'Introduce la velocidad sobre el agua. Una ola más corta significa que aún empujas barato. Una ola más larga significa que trepas el hueco.',
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
const seo: HullSpeedLocaleContent['seo'] = [
|
|
99
|
+
{
|
|
100
|
+
type: 'title',
|
|
101
|
+
text: 'Qué te está diciendo de verdad la velocidad de casco',
|
|
102
|
+
level: 2,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Un casco de desplazamiento empuja una ola desde la proa y otra desde la popa. Cuando esas crestas quedan a unos de flotación de distancia, el barco viaja con su propia estela. Entonces la potencia extra amontona agua en vez de comprar velocidad. Esa condición es lo que los marinos llaman velocidad de casco.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'La calculadora usa el ratio amateur habitual de 1.34 nudos por raíz de pies de flotación. Los cascos finos y largos pueden ir un poco más altos; las barcazas, más bajos. Trata el resultado como marca de estudio y compáralo con un registro real.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: 'Ejemplos de flotación resueltos',
|
|
115
|
+
level: 2,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'table',
|
|
119
|
+
headers: ['Flotación', 'Velocidad de casco', 'Barco típico'],
|
|
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', 'Crucero familiar'],
|
|
124
|
+
['13.5 m / 44.3 ft', '8.9 kn', 'Yate de altura'],
|
|
125
|
+
['18 m / 59.1 ft', '10.3 kn', 'Barco de trabajo pequeño'],
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'title',
|
|
130
|
+
text: 'Cómo leer la ola de proa',
|
|
131
|
+
level: 2,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'list',
|
|
135
|
+
items: [
|
|
136
|
+
'Por debajo de la marca la ola es corta y el barco sigue siendo barato de empujar.',
|
|
137
|
+
'Cerca de la marca la ola de proa se empina y el combustible o la vela compran menos velocidad.',
|
|
138
|
+
'Sobre la marca la longitud de onda iguala la LWL. Un casco de desplazamiento está en la barrera clásica.',
|
|
139
|
+
'Por encima un casco de desplazamiento trepa su estela. Uno de planeo puede ir ya levantado.',
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'tip',
|
|
144
|
+
title: 'Mide LWL, no LOA',
|
|
145
|
+
html: 'La eslora del folleto incluye voladizos. A la ola le importa la flotación inmersa. Si solo tienes LOA, la velocidad de casco que calcules será optimista.',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'title',
|
|
149
|
+
text: 'El número de Froude en una frase',
|
|
150
|
+
level: 2,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'paragraph',
|
|
154
|
+
html: 'La velocidad de casco es un empaquetado cómodo de un número de Froude cercano a 0.40: velocidad dividida por la raíz de la gravedad por la eslora. Por eso las flotaciones más largas son más rápidas aunque la forma del casco no cambie. Estirar la LWL es el modo limpio de subir el límite de desplazamiento; añadir caballos no lo es.',
|
|
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: `Cómo usar ${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
|
+
};
|