@jjlmoya/utils-astronomy 1.4.0 → 1.6.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 (89) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/de.ts +57 -0
  3. package/src/category/i18n/id.ts +57 -0
  4. package/src/category/i18n/it.ts +57 -0
  5. package/src/category/i18n/ja.ts +57 -0
  6. package/src/category/i18n/ko.ts +57 -0
  7. package/src/category/i18n/nl.ts +57 -0
  8. package/src/category/i18n/pl.ts +57 -0
  9. package/src/category/i18n/pt.ts +57 -0
  10. package/src/category/i18n/ru.ts +57 -0
  11. package/src/category/i18n/sv.ts +57 -0
  12. package/src/category/i18n/tr.ts +57 -0
  13. package/src/category/i18n/zh.ts +57 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/faq_count.test.ts +9 -14
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/locale_completeness.test.ts +42 -0
  18. package/src/tests/no_h1_in_components.test.ts +48 -0
  19. package/src/tests/schemas_fulfillment.test.ts +23 -0
  20. package/src/tests/seo_length.test.ts +3 -38
  21. package/src/tests/title_quality.test.ts +55 -0
  22. package/src/tests/tool_validation.test.ts +5 -5
  23. package/src/tool/bortleVisualizer/component.astro +11 -4
  24. package/src/tool/bortleVisualizer/i18n/de.ts +167 -0
  25. package/src/tool/bortleVisualizer/i18n/en.ts +14 -0
  26. package/src/tool/bortleVisualizer/i18n/es.ts +14 -0
  27. package/src/tool/bortleVisualizer/i18n/fr.ts +13 -0
  28. package/src/tool/bortleVisualizer/i18n/id.ts +167 -0
  29. package/src/tool/bortleVisualizer/i18n/it.ts +167 -0
  30. package/src/tool/bortleVisualizer/i18n/ja.ts +167 -0
  31. package/src/tool/bortleVisualizer/i18n/ko.ts +167 -0
  32. package/src/tool/bortleVisualizer/i18n/nl.ts +167 -0
  33. package/src/tool/bortleVisualizer/i18n/pl.ts +167 -0
  34. package/src/tool/bortleVisualizer/i18n/pt.ts +167 -0
  35. package/src/tool/bortleVisualizer/i18n/ru.ts +167 -0
  36. package/src/tool/bortleVisualizer/i18n/sv.ts +167 -0
  37. package/src/tool/bortleVisualizer/i18n/tr.ts +167 -0
  38. package/src/tool/bortleVisualizer/i18n/zh.ts +167 -0
  39. package/src/tool/bortleVisualizer/index.ts +32 -8
  40. package/src/tool/deepSpaceScope/component.astro +26 -18
  41. package/src/tool/deepSpaceScope/i18n/de.ts +178 -0
  42. package/src/tool/deepSpaceScope/i18n/en.ts +21 -0
  43. package/src/tool/deepSpaceScope/i18n/es.ts +21 -0
  44. package/src/tool/deepSpaceScope/i18n/fr.ts +21 -0
  45. package/src/tool/deepSpaceScope/i18n/id.ts +178 -0
  46. package/src/tool/deepSpaceScope/i18n/it.ts +178 -0
  47. package/src/tool/deepSpaceScope/i18n/ja.ts +178 -0
  48. package/src/tool/deepSpaceScope/i18n/ko.ts +178 -0
  49. package/src/tool/deepSpaceScope/i18n/nl.ts +178 -0
  50. package/src/tool/deepSpaceScope/i18n/pl.ts +178 -0
  51. package/src/tool/deepSpaceScope/i18n/pt.ts +178 -0
  52. package/src/tool/deepSpaceScope/i18n/ru.ts +178 -0
  53. package/src/tool/deepSpaceScope/i18n/sv.ts +178 -0
  54. package/src/tool/deepSpaceScope/i18n/tr.ts +178 -0
  55. package/src/tool/deepSpaceScope/i18n/zh.ts +178 -0
  56. package/src/tool/deepSpaceScope/index.ts +32 -8
  57. package/src/tool/deepSpaceScope/logic.ts +1 -17
  58. package/src/tool/starExposureCalculator/component.astro +8 -2
  59. package/src/tool/starExposureCalculator/i18n/de.ts +163 -0
  60. package/src/tool/starExposureCalculator/i18n/id.ts +163 -0
  61. package/src/tool/starExposureCalculator/i18n/it.ts +163 -0
  62. package/src/tool/starExposureCalculator/i18n/ja.ts +163 -0
  63. package/src/tool/starExposureCalculator/i18n/ko.ts +163 -0
  64. package/src/tool/starExposureCalculator/i18n/nl.ts +163 -0
  65. package/src/tool/starExposureCalculator/i18n/pl.ts +163 -0
  66. package/src/tool/starExposureCalculator/i18n/pt.ts +163 -0
  67. package/src/tool/starExposureCalculator/i18n/ru.ts +163 -0
  68. package/src/tool/starExposureCalculator/i18n/sv.ts +163 -0
  69. package/src/tool/starExposureCalculator/i18n/tr.ts +163 -0
  70. package/src/tool/starExposureCalculator/i18n/zh.ts +163 -0
  71. package/src/tool/starExposureCalculator/index.ts +15 -7
  72. package/src/tool/telescopeResolution/component.astro +26 -26
  73. package/src/tool/telescopeResolution/i18n/de.ts +176 -0
  74. package/src/tool/telescopeResolution/i18n/en.ts +10 -2
  75. package/src/tool/telescopeResolution/i18n/es.ts +8 -0
  76. package/src/tool/telescopeResolution/i18n/fr.ts +9 -1
  77. package/src/tool/telescopeResolution/i18n/id.ts +176 -0
  78. package/src/tool/telescopeResolution/i18n/it.ts +176 -0
  79. package/src/tool/telescopeResolution/i18n/ja.ts +176 -0
  80. package/src/tool/telescopeResolution/i18n/ko.ts +176 -0
  81. package/src/tool/telescopeResolution/i18n/nl.ts +176 -0
  82. package/src/tool/telescopeResolution/i18n/pl.ts +176 -0
  83. package/src/tool/telescopeResolution/i18n/pt.ts +176 -0
  84. package/src/tool/telescopeResolution/i18n/ru.ts +176 -0
  85. package/src/tool/telescopeResolution/i18n/sv.ts +176 -0
  86. package/src/tool/telescopeResolution/i18n/tr.ts +176 -0
  87. package/src/tool/telescopeResolution/i18n/zh.ts +176 -0
  88. package/src/tool/telescopeResolution/index.ts +17 -8
  89. package/src/types.ts +6 -4
@@ -0,0 +1,163 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { StarExposureCalculatorUI, StarExposureCalculatorLocaleContent } from '../index';
3
+
4
+ const slug = '500-rule-calculator';
5
+ const title = 'Kalkulator reguły 500 i NPF w astrofotografii';
6
+ const description = 'Oblicz maksymalny czas ekspozycji w astrofotografii bez efektu poruszonych gwiazd. Klasyczna reguła 500 oraz precyzyjny model NPF dla nowoczesnych matryc.';
7
+
8
+ const ui: StarExposureCalculatorUI = {
9
+ toolTitle: 'Kalkulator reguły 500',
10
+ modeLabel: 'Tryb',
11
+ classicMode: 'Klasyczny (500)',
12
+ npfMode: 'Precyzyjny (NPF)',
13
+ sensorLabel: 'Matryca (Crop Factor)',
14
+ focalLabel: 'Ogniskowa (mm)',
15
+ apertureLabel: 'Przysłona (f/stop)',
16
+ megapixelsLabel: 'Megapiksele (MP)',
17
+ declinationLabel: 'Deklinacja niebieska',
18
+ equatorLabel: 'Równik',
19
+ poleLabel: 'Biegun',
20
+ secondsUnit: 'sekundy',
21
+ resultText: 'Maksymalny czas dla punktowych gwiazd.',
22
+ simLabel: 'Symulacja wizualna (zoom 200%)',
23
+ simRangeLabel: 'Symuluj przekroczenie czasu',
24
+ pointStars: 'Gwiazdy jako punkty',
25
+ trailStars: 'Widoczne ślady gwiazd',
26
+ };
27
+
28
+ const faq: StarExposureCalculatorLocaleContent['faq'] = [
29
+ {
30
+ question: 'Co się stanie, jeśli przekroczę obliczony czas?',
31
+ answer: 'Jeśli przekroczysz maksymalny czas, gwiazdy zaczną się wydłużać, zamiast pozostać ostrymi punktami. Przy bardzo długich ekspozycjach otrzymasz ślady gwiazd (star trails) – jest to uznana technika artystyczna, ale wymaga znacznie dłuższych czasów, aby wyglądała estetycznie.',
32
+ },
33
+ {
34
+ question: 'Kiedy powinienem używać NPF zamiast reguły 500?',
35
+ answer: 'Model NPF jest dokładniejszy i zalecany dla aparatów z matrycami o wysokiej rozdzielczości (24 MP lub więcej). Przy klasycznej regule 500 możesz otrzymać ślady niewidoczne na małym formacie, ale zauważalne na monitorze 4K lub dużych wydrukach. Jeśli Twoim celem jest maksymalna ostrość, użyj NPF.',
36
+ },
37
+ {
38
+ question: 'Jak znaleźć deklinację obiektu, który chcę sfotografować?',
39
+ answer: 'Możesz użyć aplikacji takich jak Stellarium, SkySafari lub sprawdzić mapy nieba. Ogólna zasada brzmi: im bliżej bieguna niebieskiego (Dec 90°) znajduje się obiekt, na tym dłuższy czas ekspozycji możesz sobie pozwolić.',
40
+ },
41
+ {
42
+ question: 'Czy ten kalkulator działa z trackerem gwiazd (star tracker)?',
43
+ answer: 'Nie dla samego nieba, ponieważ tracker kompensuje obrót Ziemi. Jest on jednak kluczowy przy obliczaniu ekspozycji dla pierwszego planu, którego tracker nie śledzi, lub do weryfikacji pracy silnika, jeśli zauważysz nieoczekiwane ślady.',
44
+ },
45
+ ];
46
+
47
+ const howTo: StarExposureCalculatorLocaleContent['howTo'] = [
48
+ { name: '1. Wybierz tryb obliczeń', text: 'Wybierz tryb klasyczny (reguła 500) dla szybkiego oszacowania lub NPF, jeśli masz matrycę o wysokiej rozdzielczości i zależy Ci na maksymalnej ostrości.' },
49
+ { name: '2. Skonfiguruj swój sprzęt', text: 'Wprowadź ogniskową obiektywu i wybierz crop factor swojego aparatu.' },
50
+ { name: '3. Dostosuj deklinację', text: 'Jeśli fotografujesz w pobliżu bieguna niebieskiego, zwiększ deklinację, aby pozwolić na dłuższą ekspozycję bez śladów ruchu.' },
51
+ { name: '4. Symuluj przekroczenie czasu', text: 'Użyj suwaka symulacji, aby zobaczyć, jak wyglądałaby gwiazda po przekroczeniu obliczonego czasu ekspozycji.' },
52
+ ];
53
+
54
+ const bibliography: StarExposureCalculatorLocaleContent['bibliography'] = [
55
+ { name: 'Francuskie Towarzystwo Astronomiczne: Model NPF', url: 'https://sahavre.fr/wp/regle-npf-rule/' },
56
+ { name: 'PetaPixel: Dlaczego reguła 500 już nie wystarcza', url: 'https://petapixel.com/2015/01/06/avoid-star-trails-following-500-rule/' },
57
+ { name: 'Lonely Speck: Kalkulator czasu ekspozycji w astrofotografii', url: 'https://www.lonelyspeck.com/advanced-astrophotography-shutter-time-calculator/' },
58
+ ];
59
+
60
+ const seo: StarExposureCalculatorLocaleContent['seo'] = [
61
+ {
62
+ type: 'summary',
63
+ title: 'Kluczowe punkty reguły 500 i NPF',
64
+ items: [
65
+ 'Reguła 500 to dobre przybliżenie dla matryc o niskiej rozdzielczości i małych formatów wyświetlania.',
66
+ 'Model NPF jest znacznie dokładniejszy dla nowoczesnych matryc o dużej gęstości pikseli.',
67
+ 'Deklinacja niebieska pozwala na dłuższy czas ekspozycji w pobliżu biegunów (Dec 90°).',
68
+ 'Crop factor matrycy mnoży efektywną ogniskową i skraca maksymalny czas ekspozycji.',
69
+ ],
70
+ },
71
+ { type: 'title', text: 'Mistrzowska astrofotografia: reguła 500 i model NPF', level: 2 },
72
+ {
73
+ type: 'paragraph',
74
+ html: 'Uchwycenie ogromu nocnego nieba to jedno z najbardziej satysfakcjonujących wyzwań dla każdego fotografa. Pierwszą przeszkodą jest jednak obrót Ziemi. Jeśli zostawimy otwartą migawkę zbyt długo, te idealne punkty światła staną się nieestetycznymi kreskami. Aby uzyskać ostre, punktowe gwiazdy, musimy obliczyć <strong>maksymalny czas ekspozycji</strong> przy użyciu reguły 500 lub modelu NPF.',
75
+ },
76
+ { type: 'title', text: 'Czym jest reguła 500?', level: 2 },
77
+ {
78
+ type: 'paragraph',
79
+ html: '<strong>Reguła 500</strong> to uproszczony wzór empiryczny, który przez dekady był standardem w astrofotografii krajobrazowej. Wzór to: <code>Czas = 500 / (Ogniskowa × Crop Factor)</code>. Pozwala na szybkie obliczenia w pamięci i jest wystarczająco dokładny dla matryc o niskiej rozdzielczości.',
80
+ },
81
+ { type: 'title', text: 'Crop Factor i jego wpływ', level: 2 },
82
+ {
83
+ type: 'paragraph',
84
+ html: 'Wielu początkujących zapomina, że reguła 500 opiera się na standardzie 35 mm (Full Frame). Jeśli Twój aparat ma mniejszą matrycę, pole widzenia jest węższe, a ruch gwiazd zostaje powiększony. Obiektyw 14 mm na matrycy APS-C (crop 1,5x) zachowuje się jak odpowiednik 21 mm, skracając maksymalny czas z 35,7 s do zaledwie 23,8 s.',
85
+ },
86
+ {
87
+ type: 'table',
88
+ headers: ['Matryca', 'Crop', '14mm', '24mm', '50mm', '85mm'],
89
+ rows: [
90
+ ['Full Frame', 'x1.0', '35.7s', '20.8s', '10.0s', '5.9s'],
91
+ ['APS-C Nikon/Sony', 'x1.5', '23.8s', '13.9s', '6.7s', '3.9s'],
92
+ ['APS-C Canon', 'x1.6', '22.3s', '13.0s', '6.3s', '3.7s'],
93
+ ['Micro 4/3', 'x2.0', '17.9s', '10.4s', '5.0s', '2.9s'],
94
+ ],
95
+ },
96
+ { type: 'title', text: 'Model NPF: precyzja dla nowoczesnych matryc', level: 2 },
97
+ {
98
+ type: 'paragraph',
99
+ html: 'Reguła 500 powstała w erze filmu. Dzisiaj, przy matrycach 24-60 MP, piksele są tak małe, że poruszenie jest widoczne znacznie wcześniej. <strong>Model NPF</strong>, opracowany przez Francuskie Towarzystwo Astronomiczne, uwzględnia przysłonę i gęstość pikseli: <code>t = (35×f + 30×p) / F</code>, gdzie f to przysłona, p to rozmiar piksela, a F to ogniskowa.',
100
+ },
101
+ {
102
+ type: 'tip',
103
+ title: 'Deklinacja: sekret zaawansowanego fotografa',
104
+ html: 'Gwiazdy w pobliżu <strong>bieguna niebieskiego</strong> (Gwiazda Polarna na półkuli północnej) zataczają na niebie bardzo małe okręgi. Oznacza to, że poruszają się bardzo powoli względem matrycy, co pozwala na znacznie dłuższą ekspozycję. Fotografując okolice Gwiazdy Polarnej, możesz użyć dwu- lub nawet trzykrotnie dłuższego czasu niż obliczony, bez widocznych śladów ruchu. Deklinacja mówi Ci, jak blisko bieguna niebieskiego znajduje się Twój cel.',
105
+ },
106
+ {
107
+ type: 'stats',
108
+ columns: 2,
109
+ items: [
110
+ { label: 'Reguła 500 - 14mm FF', value: '35.7s', icon: 'mdi:timer' },
111
+ { label: 'NPF - 14mm f/2.8 24MP', value: '~12s', icon: 'mdi:timer-sand' },
112
+ { label: 'Korekta Dec 60°', value: 'x2.0', icon: 'mdi:compass' },
113
+ { label: 'Korekta Dec 80°', value: 'x5.8', icon: 'mdi:compass' },
114
+ ],
115
+ },
116
+ ];
117
+
118
+ const faqSchema: WithContext<FAQPage> = {
119
+ '@context': 'https://schema.org',
120
+ '@type': 'FAQPage',
121
+ mainEntity: faq.map((item) => ({
122
+ '@type': 'Question',
123
+ name: item.question,
124
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
125
+ })),
126
+ };
127
+
128
+ const howToSchema: WithContext<HowTo> = {
129
+ '@context': 'https://schema.org',
130
+ '@type': 'HowTo',
131
+ name: title,
132
+ description,
133
+ step: howTo.map((step) => ({
134
+ '@type': 'HowToStep',
135
+ name: step.name,
136
+ text: step.text,
137
+ })),
138
+ };
139
+
140
+ const appSchema: WithContext<SoftwareApplication> = {
141
+ '@context': 'https://schema.org',
142
+ '@type': 'SoftwareApplication',
143
+ name: title,
144
+ description,
145
+ applicationCategory: 'UtilitiesApplication',
146
+ operatingSystem: 'Web',
147
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
148
+ inLanguage: 'pl',
149
+ };
150
+
151
+ export const content: StarExposureCalculatorLocaleContent = {
152
+ slug,
153
+ title,
154
+ description,
155
+ ui,
156
+ seo,
157
+ faq,
158
+ faqTitle: 'Często zadawane pytania',
159
+ bibliography,
160
+ bibliographyTitle: 'Bibliografia',
161
+ howTo,
162
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
163
+ };
@@ -0,0 +1,163 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { StarExposureCalculatorUI, StarExposureCalculatorLocaleContent } from '../index';
3
+
4
+ const slug = '500-rule-calculator';
5
+ const title = 'Calculadora da Regra dos 500 e NPF para Astrofotografia';
6
+ const description = 'Calcule o tempo de exposição máximo para astrofotografia sem rastos de estrelas. Regra clássica dos 500 e modelo NPF de alta precisão para sensores modernos.';
7
+
8
+ const ui: StarExposureCalculatorUI = {
9
+ toolTitle: 'Calculadora da Regra dos 500',
10
+ modeLabel: 'Modo',
11
+ classicMode: 'Clássico (500)',
12
+ npfMode: 'Preciso (NPF)',
13
+ sensorLabel: 'Sensor (Fator de Corte)',
14
+ focalLabel: 'Distância Focal (mm)',
15
+ apertureLabel: 'Abertura (f/stop)',
16
+ megapixelsLabel: 'Megapixels (MP)',
17
+ declinationLabel: 'Declinação Celeste',
18
+ equatorLabel: 'Equador',
19
+ poleLabel: 'Polo',
20
+ secondsUnit: 'segundos',
21
+ resultText: 'Tempo máximo para estrelas pontuais.',
22
+ simLabel: 'Simulação Visual (Zoom de 200%)',
23
+ simRangeLabel: 'Simular excesso de tempo',
24
+ pointStars: 'Estrelas como pontos',
25
+ trailStars: 'Rasto de estrela visível',
26
+ };
27
+
28
+ const faq: StarExposureCalculatorLocaleContent['faq'] = [
29
+ {
30
+ question: 'O que acontece se eu exceder o tempo calculado?',
31
+ answer: 'Se exceder o tempo máximo, as estrelas começarão a alongar-se em vez de serem pontos nítidos. Se a exposição for muito longa, obterá rastos de estrelas (star trails), uma técnica artística válida, mas que requer tempos muito mais longos para ser estética.',
32
+ },
33
+ {
34
+ question: 'Quando devo usar o NPF em vez da Regra dos 500?',
35
+ answer: 'O modelo NPF é mais preciso e recomendado para câmaras com sensores de alta resolução (24MP ou mais). Com a clássica Regra dos 500, poderá obter rastos invisíveis numa impressão de 10x15cm, mas visíveis ao visualizar num monitor 4K ou em impressões de grande formato. Se o seu objetivo é a nitidez máxima, use o NPF.',
36
+ },
37
+ {
38
+ question: 'Como encontro a declinação do objeto que quero fotografar?',
39
+ answer: 'Pode usar aplicações como Stellarium, SkySafari ou consultar cartas estelares. Como regra geral: quanto mais próximo do polo celeste (Dec 90°) o objeto estiver, mais tempo de exposição pode permitir-se.',
40
+ },
41
+ {
42
+ question: 'Esta calculadora funciona com um rastreador estelar (star tracker)?',
43
+ answer: 'Não para o céu em si, uma vez que o rastreador compensa a rotação. No entanto, é vital para calcular a foto do primeiro plano onde o rastreador não ajuda, ou para verificar se o motor está a falhar quando vê rastos inesperados.',
44
+ },
45
+ ];
46
+
47
+ const howTo: StarExposureCalculatorLocaleContent['howTo'] = [
48
+ { name: '1. Escolha o modo de cálculo', text: 'Selecione Clássico (Regra dos 500) para uma estimativa rápida ou NPF se tiver um sensor de alta resolução e procurar a nitidez máxima.' },
49
+ { name: '2. Configure o seu equipamento', text: 'Introduza a distância focal da sua lente e selecione o fator de corte (crop factor) da sua câmara.' },
50
+ { name: '3. Ajuste a declinação', text: 'Se estiver a fotografar perto do polo celeste, aumente a declinação para permitir exposições mais longas sem rastos.' },
51
+ { name: '4. Simule o excesso de tempo', text: 'Use o cursor de simulação para visualizar como uma estrela ficaria se exceder o tempo calculado.' },
52
+ ];
53
+
54
+ const bibliography: StarExposureCalculatorLocaleContent['bibliography'] = [
55
+ { name: 'Sociedade Astronómica Francesa: O Modelo NPF', url: 'https://sahavre.fr/wp/regle-npf-rule/' },
56
+ { name: 'PetaPixel: Porque a Regra dos 500 já não é suficiente', url: 'https://petapixel.com/2015/01/06/avoid-star-trails-following-500-rule/' },
57
+ { name: 'Lonely Speck: Calculadora de Tempo de Obturação para Astrofotografia', url: 'https://www.lonelyspeck.com/advanced-astrophotography-shutter-time-calculator/' },
58
+ ];
59
+
60
+ const seo: StarExposureCalculatorLocaleContent['seo'] = [
61
+ {
62
+ type: 'summary',
63
+ title: 'Pontos Chave da Regra dos 500 e NPF',
64
+ items: [
65
+ 'A Regra dos 500 é uma aproximação válida para sensores de baixa resolução e visualização em pequenos formatos.',
66
+ 'O modelo NPF é mais preciso para sensores modernos com alta densidade de píxeis.',
67
+ 'A declinação celeste permite mais tempo de exposição perto dos polos (Dec 90°).',
68
+ 'O fator de corte do seu sensor multiplica a distância focal efetiva e reduz o tempo máximo.',
69
+ ],
70
+ },
71
+ { type: 'title', text: 'Dominando a Astrofotografia: Regra dos 500 e Modelo NPF', level: 2 },
72
+ {
73
+ type: 'paragraph',
74
+ html: 'Capturar a vastidão do céu noturno é um dos desafios mais gratificantes para qualquer fotógrafo. No entanto, o primeiro obstáculo é a rotação da Terra. Se deixarmos o obturador aberto durante demasiado tempo, esses pontos de luz perfeitos tornam-se rastos inestéticos. Para obter estrelas nítidas como pontos, precisamos de calcular o <strong>tempo de exposição máximo</strong> usando a Regora dos 500 ou o Modelo NPF.',
75
+ },
76
+ { type: 'title', text: 'O que é a Regra dos 500?', level: 2 },
77
+ {
78
+ type: 'paragraph',
79
+ html: 'A <strong>Regra dos 500</strong> é uma fórmula empírica simplificada que tem sido o padrão na astrofotografia de paisagem durante décadas. A sua fórmula é: <code>Tempo = 500 / (Distância Focal × Fator de Corte)</code>. É rápida, mental e suficientemente precisa para sensores de baixa resolução e visualização em formatos pequenos.',
80
+ },
81
+ { type: 'title', text: 'O Fator de Corte e o seu impacto', level: 2 },
82
+ {
83
+ type: 'paragraph',
84
+ html: 'Muitos principiantes esquecem-se que a Regra dos 500 se baseia no padrão de 35mm (Full Frame). Se a sua câmara tiver um sensor mais pequeno, o campo de visão é mais estreito e o movimento das estrelas é ampliado. Uma lente de 14mm numa APS-C (corte de 1.5x) comporta-se como uma equivalente a 21mm, reduzindo o tempo máximo de 35.7s para apenas 23.8s.',
85
+ },
86
+ {
87
+ type: 'table',
88
+ headers: ['Sensor', 'Corte', '14mm', '24mm', '50mm', '85mm'],
89
+ rows: [
90
+ ['Full Frame', 'x1.0', '35.7s', '20.8s', '10.0s', '5.9s'],
91
+ ['APS-C Nikon/Sony', 'x1.5', '23.8s', '13.9s', '6.7s', '3.9s'],
92
+ ['APS-C Canon', 'x1.6', '22.3s', '13.0s', '6.3s', '3.7s'],
93
+ ['Micro 4/3', 'x2.0', '17.9s', '10.4s', '5.0s', '2.9s'],
94
+ ],
95
+ },
96
+ { type: 'title', text: 'O Modelo NPF: Precisão para Sensores Modernos', level: 2 },
97
+ {
98
+ type: 'paragraph',
99
+ html: 'A Regra dos 500 nasceu na era do rolo. Hoje, com sensores de 24-60MP, os píxeis são tão pequenos que os rastos são percebidos muito mais cedo. O <strong>Modelo NPF</strong>, desenvolvido pela Sociedade Astronómica Francesa, adiciona a abertura e a densidade de píxeis ao cálculo: <code>t = (35×f + 30×p) / F</code>, onde f é a abertura, p é o pixel pitch e F é a distância focal.',
100
+ },
101
+ {
102
+ type: 'tip',
103
+ title: 'Declinação: O Segredo do Fotógrafo Avançado',
104
+ html: 'As estrelas perto do <strong>polo celeste</strong> (Estrela Polar no hemisfério norte) traçam círculos muito pequenos no céu. Isto significa que se movem muito lentamente através do seu sensor, permitindo exposições muito mais longas. Se fotografar a área em redor da Estrela Polar, pode usar o dobro ou o triplo do tempo calculado sem visibilidade de rastos. A declinação indica o quão próximo do polo celeste o seu alvo está.',
105
+ },
106
+ {
107
+ type: 'stats',
108
+ columns: 2,
109
+ items: [
110
+ { label: 'Regra 500 - 14mm FF', value: '35.7s', icon: 'mdi:timer' },
111
+ { label: 'NPF - 14mm f/2.8 24MP', value: '~12s', icon: 'mdi:timer-sand' },
112
+ { label: 'Correção Dec 60°', value: 'x2.0', icon: 'mdi:compass' },
113
+ { label: 'Correção Dec 80°', value: 'x5.8', icon: 'mdi:compass' },
114
+ ],
115
+ },
116
+ ];
117
+
118
+ const faqSchema: WithContext<FAQPage> = {
119
+ '@context': 'https://schema.org',
120
+ '@type': 'FAQPage',
121
+ mainEntity: faq.map((item) => ({
122
+ '@type': 'Question',
123
+ name: item.question,
124
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
125
+ })),
126
+ };
127
+
128
+ const howToSchema: WithContext<HowTo> = {
129
+ '@context': 'https://schema.org',
130
+ '@type': 'HowTo',
131
+ name: title,
132
+ description,
133
+ step: howTo.map((step) => ({
134
+ '@type': 'HowToStep',
135
+ name: step.name,
136
+ text: step.text,
137
+ })),
138
+ };
139
+
140
+ const appSchema: WithContext<SoftwareApplication> = {
141
+ '@context': 'https://schema.org',
142
+ '@type': 'SoftwareApplication',
143
+ name: title,
144
+ description,
145
+ applicationCategory: 'UtilitiesApplication',
146
+ operatingSystem: 'Web',
147
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
148
+ inLanguage: 'pt',
149
+ };
150
+
151
+ export const content: StarExposureCalculatorLocaleContent = {
152
+ slug,
153
+ title,
154
+ description,
155
+ ui,
156
+ seo,
157
+ faq,
158
+ faqTitle: 'Perguntas Frequentes',
159
+ bibliography,
160
+ bibliographyTitle: 'Referências Bibliográficas',
161
+ howTo,
162
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
163
+ };
@@ -0,0 +1,163 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { StarExposureCalculatorUI, StarExposureCalculatorLocaleContent } from '../index';
3
+
4
+ const slug = '500-rule-calculator';
5
+ const title = 'Калькулятор правила 500 и NPF для астрофотографии';
6
+ const description = 'Рассчитайте максимальную выдержку для съемки звезд без смаза (треков). Классическое правило 500 и высокоточная модель NPF для современных камер.';
7
+
8
+ const ui: StarExposureCalculatorUI = {
9
+ toolTitle: 'Калькулятор правила 500',
10
+ modeLabel: 'Режим',
11
+ classicMode: 'Классика (500)',
12
+ npfMode: 'Точный (NPF)',
13
+ sensorLabel: 'Матрица (Кроп-фактор)',
14
+ focalLabel: 'Фокусное расстояние (мм)',
15
+ apertureLabel: 'Диафрагма (f/)',
16
+ megapixelsLabel: 'Разрешение (Мп)',
17
+ declinationLabel: 'Склонение объекта',
18
+ equatorLabel: 'Экватор',
19
+ poleLabel: 'Полюс',
20
+ secondsUnit: 'секунд',
21
+ resultText: 'Макс. время для точечных звезд.',
22
+ simLabel: 'Визуализация (зум 200%)',
23
+ simRangeLabel: 'Симуляция превышения времени',
24
+ pointStars: 'Звезды как точки',
25
+ trailStars: 'Виден смаз звезд',
26
+ };
27
+
28
+ const faq: StarExposureCalculatorLocaleContent['faq'] = [
29
+ {
30
+ question: 'Что будет, если превысить расчетное время?',
31
+ answer: 'Если вы превысите максимальную выдержку, звезды вместо четких точек начнут превращаться в овалы. При очень длинных выдержках получатся звездные треки (star trails) — это отдельный художественный прием, требующий гораздо большего времени экспозиции.',
32
+ },
33
+ {
34
+ question: 'Когда использовать NPF вместо правила 500?',
35
+ answer: 'Модель NPF точнее и рекомендуется для современных камер с высоким разрешением (от 24 Мп). Правило 500 может давать смаз, незаметный на маленьких отпечатках, но видимый на 4K-мониторах или больших форматах. Для максимальной резкости используйте NPF.',
36
+ },
37
+ {
38
+ question: 'Как узнать склонение (Declination) объекта съёмки?',
39
+ answer: 'Используйте приложения Stellarium, SkySafari или звездные карты. Общее правило: чем ближе объект к небесному полюсу (склонение 90°), тем более длинную выдержку можно себе позволить.',
40
+ },
41
+ {
42
+ question: 'Работает ли этот калькулятор с астротрекером?',
43
+ answer: 'Для самого неба — нет, так как трекер компенсирует вращение Земли. Однако калькулятор важен для расчета выдержки переднего плана, который остается неподвижным, или для проверки работы мотора трекера, если вы видите ошибки ведения.',
44
+ },
45
+ ];
46
+
47
+ const howTo: StarExposureCalculatorLocaleContent['howTo'] = [
48
+ { name: '1. Выберите режим расчета', text: 'Выберите Классический (Правило 500) для быстрой оценки или NPF, если у вас камера с высоким разрешением и важна идеальная резкость.' },
49
+ { name: '2. Укажите параметры оборудования', text: 'Введите фокусное расстояние объектива и выберите кроп-фактор вашей камеры.' },
50
+ { name: '3. Настройте склонение', text: 'При съемке вблизи небесного полюса увеличьте склонение, чтобы получить более длинные выдержки без смаза звезд.' },
51
+ { name: '4. Симулируйте результат', text: 'Используйте слайдер симуляции, чтобы увидеть, как будет выглядеть звезда при превышении расчетного времени.' },
52
+ ];
53
+
54
+ const bibliography: StarExposureCalculatorLocaleContent['bibliography'] = [
55
+ { name: 'Французское астрономическое общество: Модель NPF', url: 'https://sahavre.fr/wp/regle-npf-rule/' },
56
+ { name: 'PetaPixel: Почему правила 500 уже недостаточно', url: 'https://petapixel.com/2015/01/06/avoid-star-trails-following-500-rule/' },
57
+ { name: 'Lonely Speck: Калькулятор выдержки для астрофотографии', url: 'https://www.lonelyspeck.com/advanced-astrophotography-shutter-time-calculator/' },
58
+ ];
59
+
60
+ const seo: StarExposureCalculatorLocaleContent['seo'] = [
61
+ {
62
+ type: 'summary',
63
+ title: 'Ключевые моменты правила 500 и NPF',
64
+ items: [
65
+ 'Правило 500 — хорошее приближение для низкого разрешения и малых форматов просмотра.',
66
+ 'Модель NPF гораздо точнее для современных камер с высокой плотностью пикселей.',
67
+ 'Небесное склонение позволяет увеличивать выдержку при съемке у полюсов (Dec 90°).',
68
+ 'Кроп-фактор матрицы умножает эффективное фокусное расстояние и сокращает макс. выдержку.',
69
+ ],
70
+ },
71
+ { type: 'title', text: 'Мастерство астрофотографии: Правило 500 и Модель NPF', level: 2 },
72
+ {
73
+ type: 'paragraph',
74
+ html: 'Съемка величественного ночного неба — одно из самых вдохновляющих занятий. Однако главным препятствием является вращение Земли. Если оставить затвор открытым слишком долго, идеальные точки света превратятся в некрасивые черточки. Чтобы получить резкие звезды, нужно рассчитать <strong>максимальную выдержку</strong> по Правилу 500 или Модели NPF.',
75
+ },
76
+ { type: 'title', text: 'Что такое Правило 500?', level: 2 },
77
+ {
78
+ type: 'paragraph',
79
+ html: '<strong>Правило 500</strong> — это упрощенная эмпирическая формула, которая десятилетиями была стандартом в пейзажной астрофотографии. Формула: <code>Время = 500 / (Фокусное расстояние × Кроп-фактор)</code>. Она позволяет быстро считать в уме и достаточно точна для старых камер и малых форматов печати.',
80
+ },
81
+ { type: 'title', text: 'Кроп-фактор и его влияние', level: 2 },
82
+ {
83
+ type: 'paragraph',
84
+ html: 'Многие новички забывают, что Правило 500 основано на стандарте 35мм (Full Frame). Если у вашей камеры матрица меньше, поле зрения сужается, и движение звезд увеличивается. Объектив 14мм на кропе APS-C (1.5x) ведет себя как 21мм, сокращая время с 35.7с до всего 23.8с.',
85
+ },
86
+ {
87
+ type: 'table',
88
+ headers: ['Матрица', 'Кроп', '14мм', '24мм', '50мм', '85мм'],
89
+ rows: [
90
+ ['Full Frame', '1.0x', '35.7 сек', '20.8 сек', '10.0 сек', '5.9 сек'],
91
+ ['APS-C Nikon/Sony', '1.5x', '23.8 сек', '13.9 сек', '6.7 сек', '3.9 сек'],
92
+ ['APS-C Canon', '1.6x', '22.3 сек', '13.0 сек', '6.3 сек', '3.7 сек'],
93
+ ['Micro 4/3', '2.0x', '17.9 сек', '10.4 сек', '5.0 сек', '2.9 сек'],
94
+ ],
95
+ },
96
+ { type: 'title', text: 'Модель NPF: Точность для современных камер', level: 2 },
97
+ {
98
+ type: 'paragraph',
99
+ html: 'Правило 500 появилось в эпоху пленки. Сегодня, с матрицами 24-60 Мп, пиксели настолько малы, что смаз заметен гораздо раньше. <strong>Модель NPF</strong>, разработанная Французским астрономическим обществом, добавляет в расчет диафрагму и размер пикселя: <code>t = (35×f + 30×p) / F</code>, где f — диафрагма, p — размер пикселя, а F — фокусное расстояние.',
100
+ },
101
+ {
102
+ type: 'tip',
103
+ title: 'Склонение: Секрет продвинутых фотографов',
104
+ html: 'Звезды рядом с <strong>небесным полюсом</strong> (Полярная звезда в северном полушарии) описывают на небе очень маленькие круги. Это значит, что они движутся по матрице очень медленно, позволяя делать выдержки в разы длиннее. Если вы снимаете область вокруг Полярной звезды, вы можете удвоить или утроить расчетное время без появления смаза. Склонение (Declination) показывает, насколько близко к полюсу находится ваш объект.',
105
+ },
106
+ {
107
+ type: 'stats',
108
+ columns: 2,
109
+ items: [
110
+ { label: '500 Rule - 14mm FF', value: '35.7 сек', icon: 'mdi:timer' },
111
+ { label: 'NPF - 14mm f/2.8 24MP', value: '~12 сек', icon: 'mdi:timer-sand' },
112
+ { label: 'Коррекция Dec 60°', value: 'x2.0', icon: 'mdi:compass' },
113
+ { label: 'Коррекция Dec 80°', value: 'x5.8', icon: 'mdi:compass' },
114
+ ],
115
+ },
116
+ ];
117
+
118
+ const faqSchema: WithContext<FAQPage> = {
119
+ '@context': 'https://schema.org',
120
+ '@type': 'FAQPage',
121
+ mainEntity: faq.map((item) => ({
122
+ '@type': 'Question',
123
+ name: item.question,
124
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
125
+ })),
126
+ };
127
+
128
+ const howToSchema: WithContext<HowTo> = {
129
+ '@context': 'https://schema.org',
130
+ '@type': 'HowTo',
131
+ name: title,
132
+ description,
133
+ step: howTo.map((step) => ({
134
+ '@type': 'HowToStep',
135
+ name: step.name,
136
+ text: step.text,
137
+ })),
138
+ };
139
+
140
+ const appSchema: WithContext<SoftwareApplication> = {
141
+ '@context': 'https://schema.org',
142
+ '@type': 'SoftwareApplication',
143
+ name: title,
144
+ description,
145
+ applicationCategory: 'UtilitiesApplication',
146
+ operatingSystem: 'Web',
147
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
148
+ inLanguage: 'ru',
149
+ };
150
+
151
+ export const content: StarExposureCalculatorLocaleContent = {
152
+ slug,
153
+ title,
154
+ description,
155
+ ui,
156
+ seo,
157
+ faq,
158
+ faqTitle: 'Часто задаваемые вопросы',
159
+ bibliography,
160
+ bibliographyTitle: 'Источники информации',
161
+ howTo,
162
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
163
+ };