@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.
Files changed (59) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/en.ts +1 -1
  3. package/src/category/index.ts +2 -1
  4. package/src/data.ts +1 -0
  5. package/src/entries.ts +4 -1
  6. package/src/index.ts +1 -0
  7. package/src/layouts/PreviewLayout.astro +118 -118
  8. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  9. package/src/tests/category_seo_quality.test.ts +74 -0
  10. package/src/tests/faq_count.test.ts +30 -30
  11. package/src/tests/i18n_coverage.test.ts +6 -1
  12. package/src/tests/locale_completeness.test.ts +2 -2
  13. package/src/tests/no_h1_in_components.test.ts +1 -1
  14. package/src/tests/seo_length.test.ts +29 -29
  15. package/src/tests/seo_parity.test.ts +2 -2
  16. package/src/tests/seo_wellformed_export.test.ts +65 -0
  17. package/src/tests/spanish_leakage.test.ts +175 -175
  18. package/src/tests/tool_validation.test.ts +54 -51
  19. package/src/tool/endurance/i18n/fr.ts +205 -205
  20. package/src/tool/endurance/seo.astro +15 -15
  21. package/src/tool/hullSpeed/bibliography.astro +14 -0
  22. package/src/tool/hullSpeed/bibliography.ts +12 -0
  23. package/src/tool/hullSpeed/component.astro +116 -0
  24. package/src/tool/hullSpeed/controller.ts +204 -0
  25. package/src/tool/hullSpeed/dom-views.ts +141 -0
  26. package/src/tool/hullSpeed/entry.ts +32 -0
  27. package/src/tool/hullSpeed/evaluator.ts +20 -0
  28. package/src/tool/hullSpeed/hull-draw.ts +185 -0
  29. package/src/tool/hullSpeed/i18n/de.ts +199 -0
  30. package/src/tool/hullSpeed/i18n/en.ts +199 -0
  31. package/src/tool/hullSpeed/i18n/es.ts +199 -0
  32. package/src/tool/hullSpeed/i18n/fr.ts +199 -0
  33. package/src/tool/hullSpeed/i18n/id.ts +199 -0
  34. package/src/tool/hullSpeed/i18n/it.ts +199 -0
  35. package/src/tool/hullSpeed/i18n/ja.ts +199 -0
  36. package/src/tool/hullSpeed/i18n/ko.ts +199 -0
  37. package/src/tool/hullSpeed/i18n/nl.ts +199 -0
  38. package/src/tool/hullSpeed/i18n/pl.ts +199 -0
  39. package/src/tool/hullSpeed/i18n/pt.ts +199 -0
  40. package/src/tool/hullSpeed/i18n/ru.ts +199 -0
  41. package/src/tool/hullSpeed/i18n/sv.ts +199 -0
  42. package/src/tool/hullSpeed/i18n/tr.ts +199 -0
  43. package/src/tool/hullSpeed/i18n/zh.ts +199 -0
  44. package/src/tool/hullSpeed/index.ts +11 -0
  45. package/src/tool/hullSpeed/logic.test.ts +105 -0
  46. package/src/tool/hullSpeed/logic.ts +116 -0
  47. package/src/tool/hullSpeed/presets.ts +17 -0
  48. package/src/tool/hullSpeed/sailboat-hull-speed-calculator.css +504 -0
  49. package/src/tool/hullSpeed/seo.astro +15 -0
  50. package/src/tool/hullSpeed/storage.test.ts +23 -0
  51. package/src/tool/hullSpeed/storage.ts +65 -0
  52. package/src/tool/hullSpeed/ui.ts +43 -0
  53. package/src/tool/nauticalConverter/seo.astro +15 -15
  54. package/src/tool/sailArea/seo.astro +15 -15
  55. package/src/tool/speedConverter/i18n/fr.ts +259 -259
  56. package/src/tool/speedConverter/seo.astro +15 -15
  57. package/src/tool/tideCalculator/seo.astro +15 -15
  58. package/src/tool/underKeel/seo.astro +15 -15
  59. 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 = 'kalkulator-predkosci-kadluba';
6
+ const title = 'Kalkulator prędkości kadłuba';
7
+ const description =
8
+ 'Wyznacz teoretyczną prędkość kadłuba z długości linii wodnej, porównaj log i zobacz, kiedy kadłub wypornościowy wspina się na własną falę dziobową.';
9
+
10
+ const ui: HullSpeedUI = {
11
+ metric: 'Metryczny',
12
+ imperial: 'Imperialny',
13
+ unitGroup: 'Jednostki',
14
+ sceneLabel: 'Linia wodna i fala dziobowa',
15
+ hullSpeedLabel: 'Prędkość kadłuba',
16
+ knotsUnit: 'kn',
17
+ kmhUnit: 'km/h',
18
+ mphUnit: 'mph',
19
+ ratioLabel: 'S/L',
20
+ froudeLabel: 'Fr',
21
+ lwlLabelMetric: 'Długość linii wodnej',
22
+ lwlLabelImperial: 'Długość linii wodnej',
23
+ lwlUnitM: 'm',
24
+ lwlUnitFt: 'ft',
25
+ observedLabel: 'Prędkość z logu',
26
+ observedHint: 'Zostaw 0, aby narysować falę teoretyczną. Wpisz log, by zobaczyć, czy nadal siedzisz w niecce.',
27
+ stretchHint: 'Przeciągnij kadłub, aby rozciągnąć linię wodną',
28
+ hullKindLabel: 'Kształt kadłuba',
29
+ displacement: 'Wypornościowy',
30
+ semi: 'Półwypornościowy',
31
+ planing: 'Ślizgowy',
32
+ boatsLabel: 'Przykładowe linie wodne',
33
+ dinghy: 'Dinghy',
34
+ daysailer: 'Daysailer',
35
+ cruiser: 'Rejsowy',
36
+ bluewater: 'Morski',
37
+ workboat: 'Roboczy',
38
+ bandBelow: 'Wciąż krótka fala',
39
+ bandNear: 'Blisko bariery falowej',
40
+ bandAt: 'Na fali dziobowej',
41
+ bandAbove: 'Próbuje wspiąć się na falę',
42
+ bandPlane: 'W ślizgu, powyżej prędkości kadłuba',
43
+ planingNote:
44
+ 'Kadłub ślizgowy może zostawić tę falę za sobą. Prędkość kadłuba to punkt odniesienia, nie mur.',
45
+ displacementNote:
46
+ 'Kadłub wypornościowy płaci drogo, gdy dogania własną rufę. Traktuj wynik jako praktyczny sufit, nie cel GPS.',
47
+ semiNote:
48
+ 'Półwypornościowce mogą trochę przekroczyć klasyczny stosunek przy dużej mocy, kosztem ostrego wzrostu oporu.',
49
+ waveLegend: 'Fala dziobowa',
50
+ waterLegend: 'Linia wodna',
51
+ markLegend: 'Prędkość kadłuba',
52
+ faqTitle: 'Pytania o prędkość kadłuba',
53
+ bibliographyTitle: 'Źródła',
54
+ };
55
+
56
+ const faq: HullSpeedLocaleContent['faq'] = [
57
+ {
58
+ question: 'Czym jest prędkość kadłuba jachtu żaglowego?',
59
+ answer:
60
+ 'To prędkość, przy której kadłub wypornościowy idzie z falą dziobową mniej więcej tak długą jak własna linia wodna. W jednostkach nautycznych szacuje się ją jako 1.34 razy pierwiastek długości linii wodnej w stopach. To prędkość krytyczna, nie twarde fizyczne zatrzymanie.',
61
+ },
62
+ {
63
+ question: 'Jak oblicza się prędkość kadłuba?',
64
+ answer:
65
+ 'Przelicz linię wodną na stopy, weź pierwiastek i pomnóż przez 1.34, aby dostać węzły. Linia wodna 10 m to około 32.8 ft, więc około 7.7 kn. Ten sam punkt odpowiada liczbie Froude a bliskiej 0.40.',
66
+ },
67
+ {
68
+ question: 'Czy prędkość kadłuba dotyczy ślizgaczy?',
69
+ answer:
70
+ 'Wzór nadal opisuje falę, jaką kadłub zrobiłby w trybie wypornościowym. Ślizgacze i wiele półwypornościowców są zbudowane, by wejść na tę falę. Użyj liczby jako odniesienia i przeczytaj uwagę o kształcie.',
71
+ },
72
+ {
73
+ question: 'Czy brać linię wodną, czy długość całkowitą?',
74
+ answer:
75
+ 'Bierz długość na linii wodnej (LWL), zanurzoną długość, która naprawdę robi falę. Długość całkowita, bukszpryty i zwisy nie ustawiają długości fali. Mierz LWL w wodzie, nie LOA z broszury.',
76
+ },
77
+ ];
78
+
79
+ const howTo: HullSpeedLocaleContent['howTo'] = [
80
+ {
81
+ name: 'Rozciągnij linię wodną',
82
+ text: 'Przeciągnij kadłub, przesuń szynę linii wodnej albo wybierz od dinghy po jednostkę roboczą. Prędkość kadłuba to 1.34 razy pierwiastek tej długości w stopach.',
83
+ },
84
+ {
85
+ name: 'Wybierz kształt kadłuba',
86
+ text: 'Wypornościowy, półwypornościowy albo ślizgowy zmienia kil i to, czy jednostka wyjdzie z własnej fali.',
87
+ },
88
+ {
89
+ name: 'Odczytaj nieckę',
90
+ text: 'Przy prędkości kadłuba fala dziobowa i rufowa siedzą o jedną linię wodną od siebie, a jacht siada w dolinie. To jest bariera.',
91
+ },
92
+ {
93
+ name: 'Porównaj log',
94
+ text: 'Wpisz prędkość względem wody. Krótsza fala znaczy, że pchanie jest jeszcze tanie. Dłuższa fala znaczy, że wchodzisz w nieckę.',
95
+ },
96
+ ];
97
+
98
+ const seo: HullSpeedLocaleContent['seo'] = [
99
+ {
100
+ type: 'title',
101
+ text: 'Co naprawdę mówi prędkość kadłuba',
102
+ level: 2,
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: 'Kadłub wypornościowy pcha falę od dziobu i drugą od rufy. Gdy te grzbiety stoją mniej więcej o jedną linię wodną, jacht jedzie z własnym śladem. Dodatkowa moc wtedy głównie piętrzy wodę zamiast kupować prędkość. Ten stan żeglarze nazywają prędkością kadłuba.',
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'Kalkulator używa zwykłego amatorskiego stosunku 1.34 węzła na pierwiastek stóp linii wodnej. Smukłe, długie kadłuby mogą trochę wyżej, barki niżej. Traktuj wynik jako kreskę do nauki i porównaj prawdziwy log.',
111
+ },
112
+ {
113
+ type: 'title',
114
+ text: 'Przeliczone przykłady linii wodnej',
115
+ level: 2,
116
+ },
117
+ {
118
+ type: 'table',
119
+ headers: ['Linia wodna', 'Prędkość kadłuba', 'Typowa jednostka'],
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', 'Jacht rejsowy'],
124
+ ['13.5 m / 44.3 ft', '8.9 kn', 'Jacht morski'],
125
+ ['18 m / 59.1 ft', '10.3 kn', 'Mała jednostka robocza'],
126
+ ],
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Jak czytać falę dziobową',
131
+ level: 2,
132
+ },
133
+ {
134
+ type: 'list',
135
+ items: [
136
+ 'Poniżej kreski fala jest krótka i pchanie jachtu jest jeszcze tanie.',
137
+ 'Blisko kreski fala dziobowa stromieje, a paliwo albo żagiel kupują mniej prędkości.',
138
+ 'Na kresce długość fali zgadza się z LWL. Kadłub wypornościowy stoi przy klasycznej barierze.',
139
+ 'Powyżej kadłub wypornościowy wspina się na ślad. Ślizgowy może już być uniesiony.',
140
+ ],
141
+ },
142
+ {
143
+ type: 'tip',
144
+ title: 'Mierz LWL, nie LOA',
145
+ html: 'Długość z broszury obejmuje zwisy. Fala dba o zanurzoną linię wodną. Jeśli masz tylko LOA, wyliczona prędkość kadłuba będzie zbyt optymistyczna.',
146
+ },
147
+ {
148
+ type: 'title',
149
+ text: 'Liczba Froude a w jednym zdaniu',
150
+ level: 2,
151
+ },
152
+ {
153
+ type: 'paragraph',
154
+ html: 'Prędkość kadłuba to wygodne opakowanie liczby Froude a bliskiej 0.40: prędkość dzielona przez pierwiastek z grawitacji razy długość. Dlatego dłuższe linie wodne są szybsze, nawet gdy kształt kadłuba się nie zmienia. Rozciąganie LWL czyści limit wyporności; dodawanie koni mechanicznych nie.',
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: `Jak używać: ${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-velocidade-do-casco';
6
+ const title = 'Calculadora de velocidade de casco';
7
+ const description =
8
+ 'Obtém a velocidade de casco teórica a partir do comprimento de flutuação, compara um registo e vê quando um casco de deslocamento sobe a própria onda de proa.';
9
+
10
+ const ui: HullSpeedUI = {
11
+ metric: 'Métrico',
12
+ imperial: 'Imperial',
13
+ unitGroup: 'Unidades',
14
+ sceneLabel: 'Flutuação e onda de proa',
15
+ hullSpeedLabel: 'Velocidade de casco',
16
+ knotsUnit: 'kn',
17
+ kmhUnit: 'km/h',
18
+ mphUnit: 'mph',
19
+ ratioLabel: 'S/L',
20
+ froudeLabel: 'Fr',
21
+ lwlLabelMetric: 'Comprimento de flutuação',
22
+ lwlLabelImperial: 'Comprimento de flutuação',
23
+ lwlUnitM: 'm',
24
+ lwlUnitFt: 'ft',
25
+ observedLabel: 'Velocidade do loch',
26
+ observedHint: 'Deixa em 0 para desenhar a onda teórica. Escreve um registo para ver se ainda estás sentado no oco.',
27
+ stretchHint: 'Arrasta o casco para esticar a flutuação',
28
+ hullKindLabel: 'Forma de casco',
29
+ displacement: 'Deslocamento',
30
+ semi: 'Semideslocamento',
31
+ planing: 'Planeio',
32
+ boatsLabel: 'Flutuações de exemplo',
33
+ dinghy: 'Bote',
34
+ daysailer: 'Daysailer',
35
+ cruiser: 'Cruzeiro',
36
+ bluewater: 'Alto mar',
37
+ workboat: 'Trabalho',
38
+ bandBelow: 'Ainda faz uma onda curta',
39
+ bandNear: 'A aproximar se da barreira de onda',
40
+ bandAt: 'Em cima da onda de proa',
41
+ bandAbove: 'A tentar subir a onda',
42
+ bandPlane: 'Em planeio, acima da velocidade de casco',
43
+ planingNote:
44
+ 'Um casco de planeio pode deixar esta onda para trás. A velocidade de casco é uma referência, não um muro.',
45
+ displacementNote:
46
+ 'Um casco de deslocamento paga caro quando apanha o próprio rasto. Trata o valor como teto prático, não como alvo de GPS.',
47
+ semiNote:
48
+ 'Os semideslocamentos podem passar um pouco da razão clássica com potência a mais, à custa de uma subida brusca de resistência.',
49
+ waveLegend: 'Onda de proa',
50
+ waterLegend: 'Flutuação',
51
+ markLegend: 'Velocidade de casco',
52
+ faqTitle: 'Perguntas sobre velocidade de casco',
53
+ bibliographyTitle: 'Referências',
54
+ };
55
+
56
+ const faq: HullSpeedLocaleContent['faq'] = [
57
+ {
58
+ question: 'O que é a velocidade de casco num veleiro?',
59
+ answer:
60
+ 'É a velocidade a que um casco de deslocamento viaja com uma onda de proa quase tão longa como a própria flutuação. Em unidades náuticas estima se como 1.34 vezes a raiz do comprimento de flutuação em pés. É uma velocidade crítica, não um travão físico rígido.',
61
+ },
62
+ {
63
+ question: 'Como se calcula a velocidade de casco?',
64
+ answer:
65
+ 'Converte a flutuação para pés, tira a raiz e multiplica por 1.34 para obter nós. Uma flutuação de 10 m são cerca de 32.8 ft, logo perto de 7.7 kn. Esse ponto corresponde a um número de Froude próximo de 0.40.',
66
+ },
67
+ {
68
+ question: 'A velocidade de casco aplica se a lanchas de planeio?',
69
+ answer:
70
+ 'A fórmula continua a descrever a onda que o casco faria se ficasse em deslocamento. O planeio e muitos semideslocamentos nasceram para subir essa onda. Usa o número como referência e lê a nota da forma de casco.',
71
+ },
72
+ {
73
+ question: 'Devo usar a flutuação ou o comprimento total?',
74
+ answer:
75
+ 'Usa o comprimento de flutuação (LWL), o comprimento imerso que realmente faz a onda. O comprimento total, gurupés e lançamentos não fixam o comprimento de onda. Mede o LWL na água, não o LOA do folheto.',
76
+ },
77
+ ];
78
+
79
+ const howTo: HullSpeedLocaleContent['howTo'] = [
80
+ {
81
+ name: 'Estica a flutuação',
82
+ text: 'Arrasta o casco, move o rail de flutuação ou escolhe do bote ao barco de trabalho. A velocidade de casco é 1.34 vezes a raiz desse comprimento em pés.',
83
+ },
84
+ {
85
+ name: 'Escolhe a forma de casco',
86
+ text: 'Deslocamento, semideslocamento ou planeio muda a quilha e se o barco consegue sair da própria onda.',
87
+ },
88
+ {
89
+ name: 'Lê o oco',
90
+ text: 'Na velocidade de casco a onda de proa e a de popa ficam a uma flutuação de distância e o barco assenta no seio. Essa é a barreira.',
91
+ },
92
+ {
93
+ name: 'Compara um registo',
94
+ text: 'Introduz a velocidade na água. Uma onda mais curta significa que ainda empurras barato. Uma onda mais longa significa que estás a subir o oco.',
95
+ },
96
+ ];
97
+
98
+ const seo: HullSpeedLocaleContent['seo'] = [
99
+ {
100
+ type: 'title',
101
+ text: 'O que a velocidade de casco te está a dizer de verdade',
102
+ level: 2,
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: 'Um casco de deslocamento empurra uma onda da proa e outra da popa. Quando essas cristas ficam a cerca de uma flutuação de distância, o barco viaja com o próprio rasto. A potência extra amontoa então água em vez de comprar velocidade. Essa condição é o que os marinheiros chamam velocidade de casco.',
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'A calculadora usa a razão amadora habitual de 1.34 nós por raiz dos pés de flutuação. Cascos finos e longos podem ir um pouco mais alto; chatas, mais baixo. Trata o resultado como marca de estudo e compara com um registo real.',
111
+ },
112
+ {
113
+ type: 'title',
114
+ text: 'Exemplos de flutuação resolvidos',
115
+ level: 2,
116
+ },
117
+ {
118
+ type: 'table',
119
+ headers: ['Flutuação', 'Velocidade de casco', 'Barco típico'],
120
+ rows: [
121
+ ['4.2 m / 13.8 ft', '5.0 kn', 'Bote'],
122
+ ['6.5 m / 21.3 ft', '6.2 kn', 'Daysailer'],
123
+ ['10 m / 32.8 ft', '7.7 kn', 'Cruzeiro familiar'],
124
+ ['13.5 m / 44.3 ft', '8.9 kn', 'Iate de alto mar'],
125
+ ['18 m / 59.1 ft', '10.3 kn', 'Pequeno barco de trabalho'],
126
+ ],
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Como ler a onda de proa',
131
+ level: 2,
132
+ },
133
+ {
134
+ type: 'list',
135
+ items: [
136
+ 'Abaixo da marca a onda é curta e o barco ainda é barato de empurrar.',
137
+ 'Perto da marca a onda de proa endireita se e combustível ou vela compram menos velocidade.',
138
+ 'Sobre a marca o comprimento de onda iguala o LWL. Um casco de deslocamento está na barreira clássica.',
139
+ 'Acima, um casco de deslocamento sobe o rasto. Um de planeio pode já ir levantado.',
140
+ ],
141
+ },
142
+ {
143
+ type: 'tip',
144
+ title: 'Mede LWL, não LOA',
145
+ html: 'O comprimento do folheto inclui lançamentos. A onda importa se com a flutuação imersa. Se só tens LOA, a velocidade de casco calculada será otimista.',
146
+ },
147
+ {
148
+ type: 'title',
149
+ text: 'O número de Froude numa frase',
150
+ level: 2,
151
+ },
152
+ {
153
+ type: 'paragraph',
154
+ html: 'A velocidade de casco é um embrulho cómodo de um número de Froude perto de 0.40: velocidade dividida pela raiz da gravidade vezes o comprimento. Por isso flutuações mais longas são mais rápidas mesmo quando a forma do casco não muda. Esticar o LWL é o modo limpo de subir o limite de deslocamento; acrescentar cavalos não é.',
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: `Como 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
+ };
@@ -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 = 'kalkulyator-skorosti-korpusa';
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 м это около 32.8 ft, то есть около 7.7 kn. Та же точка соответствует числу Фруда около 0.40.',
66
+ },
67
+ {
68
+ question: 'Работает ли скорость корпуса для глиссеров?',
69
+ answer:
70
+ 'Формула всё ещё описывает волну, которую корпус сделал бы в водоизмещающем режиме. Глиссеры и многие полуглиссирующие построены, чтобы взобраться через эту волну. Бери число как ориентир и читай заметку о форме корпуса.',
71
+ },
72
+ {
73
+ question: 'Брать ватерлинию или наибольшую длину?',
74
+ answer:
75
+ 'Бери длину по ватерлинии (LWL), погруженную длину, которая реально делает волну. Наибольшая длина, бушприты и свесы длину волны не задают. Меряй LWL в воде, не LOA из буклета.',
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
+ };