@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.
- package/package.json +59 -58
- package/src/category/i18n/de.ts +57 -0
- package/src/category/i18n/id.ts +57 -0
- package/src/category/i18n/it.ts +57 -0
- package/src/category/i18n/ja.ts +57 -0
- package/src/category/i18n/ko.ts +57 -0
- package/src/category/i18n/nl.ts +57 -0
- package/src/category/i18n/pl.ts +57 -0
- package/src/category/i18n/pt.ts +57 -0
- package/src/category/i18n/ru.ts +57 -0
- package/src/category/i18n/sv.ts +57 -0
- package/src/category/i18n/tr.ts +57 -0
- package/src/category/i18n/zh.ts +57 -0
- package/src/category/index.ts +13 -1
- package/src/tests/faq_count.test.ts +9 -14
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +3 -38
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_validation.test.ts +5 -5
- package/src/tool/bortleVisualizer/component.astro +11 -4
- package/src/tool/bortleVisualizer/i18n/de.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/en.ts +14 -0
- package/src/tool/bortleVisualizer/i18n/es.ts +14 -0
- package/src/tool/bortleVisualizer/i18n/fr.ts +13 -0
- package/src/tool/bortleVisualizer/i18n/id.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/it.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/ja.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/ko.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/nl.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/pl.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/pt.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/ru.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/sv.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/tr.ts +167 -0
- package/src/tool/bortleVisualizer/i18n/zh.ts +167 -0
- package/src/tool/bortleVisualizer/index.ts +32 -8
- package/src/tool/deepSpaceScope/component.astro +26 -18
- package/src/tool/deepSpaceScope/i18n/de.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/en.ts +21 -0
- package/src/tool/deepSpaceScope/i18n/es.ts +21 -0
- package/src/tool/deepSpaceScope/i18n/fr.ts +21 -0
- package/src/tool/deepSpaceScope/i18n/id.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/it.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/ja.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/ko.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/nl.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/pl.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/pt.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/ru.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/sv.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/tr.ts +178 -0
- package/src/tool/deepSpaceScope/i18n/zh.ts +178 -0
- package/src/tool/deepSpaceScope/index.ts +32 -8
- package/src/tool/deepSpaceScope/logic.ts +1 -17
- package/src/tool/starExposureCalculator/component.astro +8 -2
- package/src/tool/starExposureCalculator/i18n/de.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/id.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/it.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/ja.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/ko.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/nl.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/pl.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/pt.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/ru.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/sv.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/tr.ts +163 -0
- package/src/tool/starExposureCalculator/i18n/zh.ts +163 -0
- package/src/tool/starExposureCalculator/index.ts +15 -7
- package/src/tool/telescopeResolution/component.astro +26 -26
- package/src/tool/telescopeResolution/i18n/de.ts +176 -0
- package/src/tool/telescopeResolution/i18n/en.ts +10 -2
- package/src/tool/telescopeResolution/i18n/es.ts +8 -0
- package/src/tool/telescopeResolution/i18n/fr.ts +9 -1
- package/src/tool/telescopeResolution/i18n/id.ts +176 -0
- package/src/tool/telescopeResolution/i18n/it.ts +176 -0
- package/src/tool/telescopeResolution/i18n/ja.ts +176 -0
- package/src/tool/telescopeResolution/i18n/ko.ts +176 -0
- package/src/tool/telescopeResolution/i18n/nl.ts +176 -0
- package/src/tool/telescopeResolution/i18n/pl.ts +176 -0
- package/src/tool/telescopeResolution/i18n/pt.ts +176 -0
- package/src/tool/telescopeResolution/i18n/ru.ts +176 -0
- package/src/tool/telescopeResolution/i18n/sv.ts +176 -0
- package/src/tool/telescopeResolution/i18n/tr.ts +176 -0
- package/src/tool/telescopeResolution/i18n/zh.ts +176 -0
- package/src/tool/telescopeResolution/index.ts +17 -8
- package/src/types.ts +6 -4
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { DeepSpaceScopeUI, DeepSpaceScopeLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'telescope-reach';
|
|
5
|
+
const title = '望远镜观测极限计算器';
|
|
6
|
+
const description = '计算您望远镜的极限星等,并根据您当地的星空条件,探索使用您的设备可以观测到哪些深空天体。';
|
|
7
|
+
|
|
8
|
+
const ui: DeepSpaceScopeUI = {
|
|
9
|
+
toolTitle: '望远镜性能',
|
|
10
|
+
apertureLabel: '口径',
|
|
11
|
+
bortleLabel: '天空暗度 (波特尔)',
|
|
12
|
+
limitMagLabel: '极限星等',
|
|
13
|
+
azimuthLabel: '方位角',
|
|
14
|
+
dragHint: '点击并拖动以探索宇宙 (360°)',
|
|
15
|
+
dragHintMobile: '拖动以探索 360° 宇宙',
|
|
16
|
+
planetLabel: '行星',
|
|
17
|
+
starLabel: '恒星',
|
|
18
|
+
deepSpaceLabel: '深空',
|
|
19
|
+
magnitudeLabel: '星等',
|
|
20
|
+
coordinatesLabel: '坐标',
|
|
21
|
+
closeLabel: '关闭',
|
|
22
|
+
altitudeLabel: '高度',
|
|
23
|
+
defaultObjDesc: '一个迷人的深空天体。星等',
|
|
24
|
+
bortleClassPrefix: '等级',
|
|
25
|
+
deepSpaceObjects: [
|
|
26
|
+
{ name: '金星', type: 'Planet', mag: -4.5, az: 270, alt: 30, icon: 'mdi:circle', color: '#fef08a', desc: '夜空中最亮的行星。在大白天也能看到。' },
|
|
27
|
+
{ name: '木星', type: 'Planet', mag: -2.5, az: 180, alt: 40, icon: 'mdi:circle', color: '#fef9c3', desc: '太阳系的巨人。它的四颗伽利略卫星可以用双筒望远镜看到。' },
|
|
28
|
+
{ name: '土星', type: 'Planet', mag: 0.8, az: 220, alt: 35, icon: 'mdi:circle', color: '#fefce8', desc: '用 60mm 望远镜在 50 倍放大倍率下即可看到它的光环。' },
|
|
29
|
+
{ name: '火星', type: 'Planet', mag: 1.5, az: 150, alt: 25, icon: 'mdi:circle', color: '#f87171', desc: '红色行星。亮度从大冲时的 -2.9 等到合日时的 +1.8 等不等。' },
|
|
30
|
+
{ name: '天狼星', type: 'Star', mag: -1.46, az: 145, alt: 50, icon: 'mdi:star-four-points', color: '#bfdbfe', desc: '夜空中最亮的恒星。距离我们仅 8.6 光年。' },
|
|
31
|
+
{ name: '老人星', type: 'Star', mag: -0.74, az: 200, alt: 20, icon: 'mdi:star-four-points', color: '#fef9c3', desc: '全天第二亮的恒星,用于南半球的导航。' },
|
|
32
|
+
{ name: '大角星', type: 'Star', mag: -0.05, az: 60, alt: 55, icon: 'mdi:star-four-points', color: '#fdba74', desc: '牧夫座中的橙色巨星。距离地球 36 光年。' },
|
|
33
|
+
{ name: '织女星', type: 'Star', mag: 0.03, az: 40, alt: 70, icon: 'mdi:star-four-points', color: '#dbeafe', desc: '夏际大三角的一个顶点。星等 0 的参考恒星。' },
|
|
34
|
+
{ name: 'M42 猎户座大星云', type: 'Nebula', mag: 4.0, az: 140, alt: 45, icon: 'mdi:creation', color: '#a5b4fc', desc: '伟大的猎户座大星云,距离 1344 光年。年轻恒星的摇篮。' },
|
|
35
|
+
{ name: 'M45 昴星团', type: 'Cluster', mag: 1.6, az: 100, alt: 60, icon: 'mdi:creation', color: '#93c5fd', desc: '七姐妹星团。距离 444 光年,是天空中最有名的疏散星团。' },
|
|
36
|
+
{ name: 'M31 仙女座星系', type: 'Galaxy', mag: 3.4, az: 30, alt: 50, icon: 'mdi:creation', color: '#d8b4fe', desc: '最大的邻居星系。距离 250 万光年,在暗空下肉眼可见。' },
|
|
37
|
+
{ name: 'M13 武仙座球状星团', type: 'Cluster', mag: 5.8, az: 80, alt: 65, icon: 'mdi:creation', color: '#fde047', desc: '武仙座中伟大的球状星团。在 25,100 光年外包含 300,000 颗恒星。' },
|
|
38
|
+
{ name: 'M57 环状星云', type: 'Nebula', mag: 8.8, az: 50, alt: 58, icon: 'mdi:creation', color: '#67e8f9', desc: '天琴座中的行星状星云。由白矮星喷射出的气体环。' },
|
|
39
|
+
{ name: 'M81 波德星系', type: 'Galaxy', mag: 6.9, az: 340, alt: 55, icon: 'mdi:creation', color: '#c4b5fd', desc: '大熊座中的螺旋星系。正与 M82 进行引力相互作用。' },
|
|
40
|
+
{ name: '冥王星', type: 'Dwarf Planet', mag: 14.3, az: 195, alt: 22, icon: 'mdi:circle-small', color: '#cbd5e1', desc: '最著名的矮行星。需要 250mm 或更大的望远镜以及极暗的天空。' },
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const faq: DeepSpaceScopeLocaleContent['faq'] = [
|
|
45
|
+
{
|
|
46
|
+
question: '什么是望远镜的极限星等?',
|
|
47
|
+
answer: '它是指望远镜在给定的天空条件下能探测到的最暗天体的星等。它取决于口径大小(口径越大 = 收集的光线越多)和天空质量(波特尔阶级)。人类眼睛在理想条件下可达到 6.5 等;一台 200mm 的望远镜可以达到 13-14 等。',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
question: '波特尔量表如何影响我的观测?',
|
|
51
|
+
answer: '每一个波特尔等级大约会减少 0.5 等的观测深度。一台 200mm 的望远镜在波特尔 2 级下可以达到 14.5 等,但在波特尔 7 级下,同样的口径只能达到 11-12 等。暗空能成倍地提升任何仪器的性能。',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
question: '从城市里可以看到哪些天体?',
|
|
55
|
+
answer: '在波特尔 7-8 级的天空下(城市),使用 150mm 望远镜可以非常详细地看到明亮的行星、月球、明亮的疏散星团(M45、M44)、球状星团(M13)以及一些明亮的星系(如 M31 和 M81),尽管细节不多。暗淡的星云需要更暗的天空或特定的滤镜。',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
question: '需要多大的口径才能看到星云的颜色?',
|
|
59
|
+
answer: '人类眼睛在弱光下会丧失颜色敏感度。要看到像 M42 这样的发射星云的颜色,至少需要 200-250mm 的口径以及波特尔 3-4 级的天空。如果口径较小,星云看起来是灰色的,尽管通过天文摄影,即使是小望远镜也能捕捉到壮丽的颜色。',
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const howTo: DeepSpaceScopeLocaleContent['howTo'] = [
|
|
64
|
+
{ name: '1. 设置您的口径', text: '移动口径滑块以模拟您的望远镜。范围从 50mm(双筒望远镜)到 400mm(先进望远镜)。' },
|
|
65
|
+
{ name: '2. 调整天空质量', text: '设置您常用观测地点的波特尔等级,以查看真实的极限星等。' },
|
|
66
|
+
{ name: '3. 探索星图', text: '拖动字段以探索 360° 的星空,发现您的设备可以观测到哪些天体。' },
|
|
67
|
+
{ name: '4. 点击天体', text: '点击任何天空天体以查看其详细信息:类型、星等和描述。' },
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
const bibliography: DeepSpaceScopeLocaleContent['bibliography'] = [
|
|
71
|
+
{ name: '完整的梅西耶星表', url: 'https://www.skyatnightmagazine.com/space-science/messier-catalogue' },
|
|
72
|
+
{ name: 'Stellarium Web - 交互式星图', url: 'https://stellarium-web.org/' },
|
|
73
|
+
];
|
|
74
|
+
|
|
75
|
+
const seo: DeepSpaceScopeLocaleContent['seo'] = [
|
|
76
|
+
{
|
|
77
|
+
type: 'summary',
|
|
78
|
+
title: '望远镜性能的核心要点',
|
|
79
|
+
items: [
|
|
80
|
+
'口径是决定性因素:直径越大意味着收集的光线越多,极限星等越高。',
|
|
81
|
+
'暗空(低波特尔值)相比城市天空可以获得 2-3 等的深度增益。',
|
|
82
|
+
'200mm 望远镜在波特尔 3 级可达 13-14 等,而在波特尔 7 级仅为 11 等。',
|
|
83
|
+
'明亮的行星和月亮不需要暗空 —— 在城市中即可观测。',
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
{ type: 'title', text: '天文观测物理学:口径与星等', level: 2 },
|
|
87
|
+
{
|
|
88
|
+
type: 'paragraph',
|
|
89
|
+
html: '望远镜的主要功能不是放大图像,而是 <strong>收集光线</strong>。人类眼睛的瞳孔在完全黑暗中会放大到约 6-7mm。200mm 的望远镜拥有 31,416mm² 的集光面积,比人类瞳孔 <strong>大 800 倍以上</strong>,让您能看到暗数百倍的天体。',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
type: 'paragraph',
|
|
93
|
+
html: '星等增益公式为:<code>增益 = 5 × log₁₀(口径mm / 6)</code>。对于 200mm 口径:5 × log₁₀(200/6) = 5 × 1.52 = 7.6 等(相对于肉眼的额外增益)。加上肉眼可见的 6.5 等(在暗空下),极限星等可达 14.1 等。',
|
|
94
|
+
},
|
|
95
|
+
{ type: 'title', text: '光污染对观测深度的影响', level: 2 },
|
|
96
|
+
{
|
|
97
|
+
type: 'paragraph',
|
|
98
|
+
html: '即使使用世界上最好的望远镜,您也无法在市中心看到暗淡的星系。天空背景的亮度会“抹除”必要的对比度。<strong>波特尔量表</strong>量化了这种影响:每增加一阶波特尔等级,望远镜的观测深度大约会减少 0.5 等。',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'table',
|
|
102
|
+
headers: ['口径', '波特尔 2 (极暗)', '波特尔 4 (乡村)', '波特尔 6 (郊区)', '波特尔 8 (城市)'],
|
|
103
|
+
rows: [
|
|
104
|
+
['70mm', '12.0 等', '10.8 等', '9.5 等', '8.3 等'],
|
|
105
|
+
['100mm', '12.8 等', '11.6 等', '10.3 等', '9.1 等'],
|
|
106
|
+
['150mm', '13.6 等', '12.4 等', '11.1 等', '9.9 等'],
|
|
107
|
+
['200mm', '14.2 等', '13.0 等', '11.7 等', '10.5 等'],
|
|
108
|
+
['300mm', '15.0 等', '13.8 等', '12.5 等', '11.3 等'],
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'tip',
|
|
113
|
+
title: '梅西耶星表:您的目标清单',
|
|
114
|
+
html: '查尔斯·梅西耶在 1781 年编制了他著名的 110 个天体星表,以避免将它们与彗星混淆。今天,它是目视观测者的参考星表。这 110 个梅西耶天体(M1-M110)包括星云、星团和星系,在波特尔 4-5 级的天空下,使用 150mm 以下的望远镜即可全部观测到。',
|
|
115
|
+
},
|
|
116
|
+
{ type: 'title', text: '按类型和难度分类的特色天体', level: 2 },
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: '对于初学者来说,<strong>行星</strong>是最有成就感的目标:它们不需要暗空,即使是用小望远镜也能展现出令人惊讶的细节(40 倍下的土星环、80 倍下的木星条纹、火星极冠)。<strong>星云</strong>和 <strong>星系</strong> 需要更大的口径和更暗的天空,但会回馈您无与伦比的美丽全景。',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'stats',
|
|
123
|
+
columns: 2,
|
|
124
|
+
items: [
|
|
125
|
+
{ label: '人眼 (7mm)', value: '6.5 等', icon: 'mdi:eye' },
|
|
126
|
+
{ label: '70mm 折射镜', value: '12 等', icon: 'mdi:telescope' },
|
|
127
|
+
{ label: '200mm 杜布森镜', value: '14+ 等', icon: 'mdi:telescope' },
|
|
128
|
+
{ label: 'HST 哈勃太空望远镜', value: '31 等', icon: 'mdi:satellite-variant' },
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
];
|
|
132
|
+
|
|
133
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
134
|
+
'@context': 'https://schema.org',
|
|
135
|
+
'@type': 'FAQPage',
|
|
136
|
+
mainEntity: faq.map((item) => ({
|
|
137
|
+
'@type': 'Question',
|
|
138
|
+
name: item.question,
|
|
139
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
140
|
+
})),
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
const howToSchema: WithContext<HowTo> = {
|
|
144
|
+
'@context': 'https://schema.org',
|
|
145
|
+
'@type': 'HowTo',
|
|
146
|
+
name: title,
|
|
147
|
+
description,
|
|
148
|
+
step: howTo.map((step) => ({
|
|
149
|
+
'@type': 'HowToStep',
|
|
150
|
+
name: step.name,
|
|
151
|
+
text: step.text,
|
|
152
|
+
})),
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
156
|
+
'@context': 'https://schema.org',
|
|
157
|
+
'@type': 'SoftwareApplication',
|
|
158
|
+
name: title,
|
|
159
|
+
description,
|
|
160
|
+
applicationCategory: 'UtilitiesApplication',
|
|
161
|
+
operatingSystem: 'Web',
|
|
162
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
163
|
+
inLanguage: 'zh',
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
export const content: DeepSpaceScopeLocaleContent = {
|
|
167
|
+
slug,
|
|
168
|
+
title,
|
|
169
|
+
description,
|
|
170
|
+
ui,
|
|
171
|
+
seo,
|
|
172
|
+
faq,
|
|
173
|
+
faqTitle: '常见问题',
|
|
174
|
+
bibliography,
|
|
175
|
+
bibliographyTitle: '参考文献',
|
|
176
|
+
howTo,
|
|
177
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
178
|
+
};
|
|
@@ -3,8 +3,19 @@ import DeepSpaceScopeComponent from './component.astro';
|
|
|
3
3
|
import DeepSpaceScopeSEO from './seo.astro';
|
|
4
4
|
import DeepSpaceScopeBibliography from './bibliography.astro';
|
|
5
5
|
|
|
6
|
+
export interface DeepSpaceObject {
|
|
7
|
+
name: string;
|
|
8
|
+
type: string;
|
|
9
|
+
mag: number;
|
|
10
|
+
az: number;
|
|
11
|
+
alt: number;
|
|
12
|
+
color: string;
|
|
13
|
+
icon: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
6
16
|
export interface DeepSpaceScopeUI {
|
|
7
|
-
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
[key: string]: any;
|
|
8
19
|
toolTitle: string;
|
|
9
20
|
apertureLabel: string;
|
|
10
21
|
bortleLabel: string;
|
|
@@ -17,14 +28,15 @@ export interface DeepSpaceScopeUI {
|
|
|
17
28
|
deepSpaceLabel: string;
|
|
18
29
|
magnitudeLabel: string;
|
|
19
30
|
coordinatesLabel: string;
|
|
31
|
+
closeLabel: string;
|
|
32
|
+
altitudeLabel: string;
|
|
33
|
+
defaultObjDesc: string;
|
|
34
|
+
bortleClassPrefix: string;
|
|
35
|
+
deepSpaceObjects: DeepSpaceObject[];
|
|
20
36
|
}
|
|
21
37
|
|
|
22
38
|
export type DeepSpaceScopeLocaleContent = ToolLocaleContent<DeepSpaceScopeUI>;
|
|
23
39
|
|
|
24
|
-
import { content as es } from './i18n/es';
|
|
25
|
-
import { content as en } from './i18n/en';
|
|
26
|
-
import { content as fr } from './i18n/fr';
|
|
27
|
-
|
|
28
40
|
export const deepSpaceScope: AstronomyToolEntry<DeepSpaceScopeUI> = {
|
|
29
41
|
id: 'deep-space-scope',
|
|
30
42
|
icons: {
|
|
@@ -32,9 +44,21 @@ export const deepSpaceScope: AstronomyToolEntry<DeepSpaceScopeUI> = {
|
|
|
32
44
|
fg: 'mdi:eye',
|
|
33
45
|
},
|
|
34
46
|
i18n: {
|
|
35
|
-
|
|
36
|
-
en:
|
|
37
|
-
|
|
47
|
+
de: () => import('./i18n/de').then((m) => m.content),
|
|
48
|
+
en: () => import('./i18n/en').then((m) => m.content),
|
|
49
|
+
es: () => import('./i18n/es').then((m) => m.content),
|
|
50
|
+
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
51
|
+
id: () => import('./i18n/id').then((m) => m.content),
|
|
52
|
+
it: () => import('./i18n/it').then((m) => m.content),
|
|
53
|
+
ja: () => import('./i18n/ja').then((m) => m.content),
|
|
54
|
+
ko: () => import('./i18n/ko').then((m) => m.content),
|
|
55
|
+
nl: () => import('./i18n/nl').then((m) => m.content),
|
|
56
|
+
pl: () => import('./i18n/pl').then((m) => m.content),
|
|
57
|
+
pt: () => import('./i18n/pt').then((m) => m.content),
|
|
58
|
+
ru: () => import('./i18n/ru').then((m) => m.content),
|
|
59
|
+
sv: () => import('./i18n/sv').then((m) => m.content),
|
|
60
|
+
tr: () => import('./i18n/tr').then((m) => m.content),
|
|
61
|
+
zh: () => import('./i18n/zh').then((m) => m.content),
|
|
38
62
|
},
|
|
39
63
|
};
|
|
40
64
|
|
|
@@ -22,20 +22,4 @@ export function apertureSliderToMm(sliderValue: number): number {
|
|
|
22
22
|
return Math.round(50 + (sliderValue / 100) * 350);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export const DEEP_SPACE_OBJECTS: DeepSpaceObject[] = [
|
|
26
|
-
{ name: 'Venus', type: 'Planeta', mag: -4.5, az: 270, alt: 30, icon: 'mdi:circle', color: '#fef08a', desc: 'El planeta más brillante del cielo nocturno. Visible a plena luz del día.' },
|
|
27
|
-
{ name: 'Júpiter', type: 'Planeta', mag: -2.5, az: 180, alt: 40, icon: 'mdi:circle', color: '#fef9c3', desc: 'El gigante del sistema solar. Con binoculares se pueden ver sus cuatro lunas galileanas.' },
|
|
28
|
-
{ name: 'Saturno', type: 'Planeta', mag: 0.8, az: 220, alt: 35, icon: 'mdi:circle', color: '#fefce8', desc: 'Sus anillos son visibles con un telescopio de 60mm a 50 aumentos.' },
|
|
29
|
-
{ name: 'Marte', type: 'Planeta', mag: 1.5, az: 150, alt: 25, icon: 'mdi:circle', color: '#f87171', desc: 'El planeta rojo. Varía de magnitud -2.9 en oposición a +1.8 en conjunción.' },
|
|
30
|
-
{ name: 'Sirio', type: 'Estrella', mag: -1.46, az: 145, alt: 50, icon: 'mdi:star-four-points', color: '#bfdbfe', desc: 'La estrella más brillante del cielo nocturno. Está a solo 8.6 años-luz.' },
|
|
31
|
-
{ name: 'Canopus', type: 'Estrella', mag: -0.74, az: 200, alt: 20, icon: 'mdi:star-four-points', color: '#fef9c3', desc: 'La segunda estrella más brillante, usada para navegar en el hemisferio sur.' },
|
|
32
|
-
{ name: 'Arcturus', type: 'Estrella', mag: -0.05, az: 60, alt: 55, icon: 'mdi:star-four-points', color: '#fdba74', desc: 'Gigante naranja en la constelación del Boyero. A 36 años-luz de la Tierra.' },
|
|
33
|
-
{ name: 'Vega', type: 'Estrella', mag: 0.03, az: 40, alt: 70, icon: 'mdi:star-four-points', color: '#dbeafe', desc: 'Vértice del Triángulo de Verano. La estrella de referencia para magnitud 0.' },
|
|
34
|
-
{ name: 'M42 Orión', type: 'Nebulosa', mag: 4.0, az: 140, alt: 45, icon: 'mdi:creation', color: '#a5b4fc', desc: 'La gran nebulosa de Orión, a 1344 años-luz. Vivero de estrellas jóvenes.' },
|
|
35
|
-
{ name: 'M45 Pléyades', type: 'Cúmulo', mag: 1.6, az: 100, alt: 60, icon: 'mdi:creation', color: '#93c5fd', desc: 'Las Siete Hermanas. A 444 años-luz, el cúmulo abierto más famoso del cielo.' },
|
|
36
|
-
{ name: 'M31 Andrómeda', type: 'Galaxia', mag: 3.4, az: 30, alt: 50, icon: 'mdi:creation', color: '#d8b4fe', desc: 'La galaxia vecina más grande. A 2.5 millones de años-luz, visible a simple vista en cielos oscuros.' },
|
|
37
|
-
{ name: 'M13 Hércules', type: 'Cúmulo', mag: 5.8, az: 80, alt: 65, icon: 'mdi:creation', color: '#fde047', desc: 'El gran cúmulo globular de Hércules. Contiene 300.000 estrellas a 25.100 años-luz.' },
|
|
38
|
-
{ name: 'M57 Anillo', type: 'Nebulosa', mag: 8.8, az: 50, alt: 58, icon: 'mdi:creation', color: '#67e8f9', desc: 'Nebulosa planetaria en Lyra. Anillo de gas expulsado por una enana blanca.' },
|
|
39
|
-
{ name: 'M81 Bode', type: 'Galaxia', mag: 6.9, az: 340, alt: 55, icon: 'mdi:creation', color: '#c4b5fd', desc: 'Galaxia espiral en la Osa Mayor. Interactuando gravitatoriamente con M82.' },
|
|
40
|
-
{ name: 'Plutón', type: 'Planeta Enano', mag: 14.3, az: 195, alt: 22, icon: 'mdi:circle-small', color: '#cbd5e1', desc: 'El planeta enano más famoso. Requiere un telescopio de 250mm o más y cielos oscuros.' },
|
|
41
|
-
];
|
|
25
|
+
export const DEEP_SPACE_OBJECTS: DeepSpaceObject[] = [];
|
|
@@ -105,10 +105,16 @@ const { ui } = Astro.props;
|
|
|
105
105
|
</div>
|
|
106
106
|
</div>
|
|
107
107
|
|
|
108
|
+
<script define:vars={{ ui }} is:inline>
|
|
109
|
+
window.__starCalcUI = ui;
|
|
110
|
+
</script>
|
|
111
|
+
|
|
108
112
|
<script>
|
|
109
113
|
import { calculateExposureTime } from './logic';
|
|
110
114
|
import type { SensorCropFactor } from './logic';
|
|
111
115
|
|
|
116
|
+
const uiData = window.__starCalcUI;
|
|
117
|
+
|
|
112
118
|
class StarCalculatorApp {
|
|
113
119
|
mode = 'classic';
|
|
114
120
|
focalLengthInput: HTMLInputElement;
|
|
@@ -228,12 +234,12 @@ const { ui } = Astro.props;
|
|
|
228
234
|
this.starPreview.style.width = `${trailLength + 4}px`;
|
|
229
235
|
this.starPreview.style.borderRadius = '2px';
|
|
230
236
|
this.starPreview.classList.add('is-trail');
|
|
231
|
-
if (info) info.textContent =
|
|
237
|
+
if (info) info.textContent = uiData.trailStars;
|
|
232
238
|
} else {
|
|
233
239
|
this.starPreview.style.width = '4px';
|
|
234
240
|
this.starPreview.style.borderRadius = '50%';
|
|
235
241
|
this.starPreview.classList.remove('is-trail');
|
|
236
|
-
if (info) info.textContent =
|
|
242
|
+
if (info) info.textContent = uiData.pointStars;
|
|
237
243
|
}
|
|
238
244
|
}
|
|
239
245
|
}
|
|
@@ -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 = '500er Regel und NPF Rechner für die Astrofotografie';
|
|
6
|
+
const description = 'Berechnen Sie die maximale Belichtungszeit für die Astrofotografie ohne Strichspuren. Klassische 500er-Regel und hochpräzises NPF-Modell für moderne Sensoren.';
|
|
7
|
+
|
|
8
|
+
const ui: StarExposureCalculatorUI = {
|
|
9
|
+
toolTitle: '500er-Regel-Rechner',
|
|
10
|
+
modeLabel: 'Modus',
|
|
11
|
+
classicMode: 'Klassisch (500)',
|
|
12
|
+
npfMode: 'Präzise (NPF)',
|
|
13
|
+
sensorLabel: 'Sensor (Crop-Faktor)',
|
|
14
|
+
focalLabel: 'Brennweite (mm)',
|
|
15
|
+
apertureLabel: 'Blende (f-Zahl)',
|
|
16
|
+
megapixelsLabel: 'Megapixel (MP)',
|
|
17
|
+
declinationLabel: 'Himmelsdeklination',
|
|
18
|
+
equatorLabel: 'Äquator',
|
|
19
|
+
poleLabel: 'Pol',
|
|
20
|
+
secondsUnit: 'Sekunden',
|
|
21
|
+
resultText: 'Maximale Zeit für punktförmige Sterne.',
|
|
22
|
+
simLabel: 'Visuelle Simulation (200% Zoom)',
|
|
23
|
+
simRangeLabel: 'Zeitüberschreitung simulieren',
|
|
24
|
+
pointStars: 'Sterne als Punkte',
|
|
25
|
+
trailStars: 'Strichspuren sichtbar',
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const faq: StarExposureCalculatorLocaleContent['faq'] = [
|
|
29
|
+
{
|
|
30
|
+
question: 'Was passiert, wenn ich die berechnete Zeit überschreite?',
|
|
31
|
+
answer: 'Wenn Sie die maximale Zeit überschreiten, beginnen sich die Sterne in die Länge zu ziehen, anstatt scharfe Punkte zu bleiben. Bei sehr langen Belichtungszeiten entstehen Strichspuren (Star Trails), eine anerkannte künstlerische Technik, die jedoch wesentlich längere Zeiten erfordert, um ästhetisch zu wirken.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: 'Wann sollte ich NPF anstelle der 500er-Regel verwenden?',
|
|
35
|
+
answer: 'Das NPF-Modell ist genauer und wird für Kameras mit hochauflösenden Sensoren (24 MP oder mehr) empfohlen. Mit der klassischen 500er-Regel können Spuren entstehen, die auf einem kleinen Abzug unsichtbar, auf einem 4K-Monitor oder bei großen Ausdrucken jedoch deutlich erkennbar sind. Wenn Ihr Ziel maximale Schärfe ist, verwenden Sie NPF.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: 'Wie finde ich die Deklination des Objekts, das ich fotografieren möchte?',
|
|
39
|
+
answer: 'Sie können Apps wie Stellarium, SkySafari verwenden oder Sternenkarten konsultieren. Als allgemeine Regel gilt: Je näher das Objekt am Himmelspol liegt (Dekl. 90°), desto länger können Sie belichten.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
question: 'Funktioniert dieser Rechner mit einer Nachführung (Star Tracker)?',
|
|
43
|
+
answer: 'Nicht für den Himmel selbst, da die Nachführung die Erddrehung ausgleicht. Er ist jedoch wichtig, um die Belichtungszeit für den Vordergrund zu berechnen, der nicht nachgeführt wird, oder um zu überprüfen, ob der Motor fehlerhaft arbeitet, wenn Sie unerwartete Spuren sehen.',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const howTo: StarExposureCalculatorLocaleContent['howTo'] = [
|
|
48
|
+
{ name: '1. Berechnungsmodus wählen', text: 'Wählen Sie die klassische 500er-Regel für eine schnelle Schätzung oder NPF, wenn Sie einen hochauflösenden Sensor haben und maximale Schärfe anstreben.' },
|
|
49
|
+
{ name: '2. Ausrüstung konfigurieren', text: 'Geben Sie die Brennweite Ihres Objektivs ein und wählen Sie den Crop-Faktor Ihrer Kamera.' },
|
|
50
|
+
{ name: '3. Deklination anpassen', text: 'Erhöhen Sie bei Aufnahmen in der Nähe des Himmelspols die Deklination, um längere Belichtungszeiten ohne Spuren zu ermöglichen.' },
|
|
51
|
+
{ name: '4. Zeitüberschreitung simulieren', text: 'Verwenden Sie den Simulationsschieberegler, um zu visualisieren, wie ein Stern aussehen würde, wenn Sie die berechnete Zeit überschreiten.' },
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: StarExposureCalculatorLocaleContent['bibliography'] = [
|
|
55
|
+
{ name: 'Französische Astronomische Gesellschaft: Das NPF-Modell', url: 'https://sahavre.fr/wp/regle-npf-rule/' },
|
|
56
|
+
{ name: 'PetaPixel: Warum die 500er-Regel nicht mehr ausreicht', url: 'https://petapixel.com/2015/01/06/avoid-star-trails-following-500-rule/' },
|
|
57
|
+
{ name: 'Lonely Speck: Belichtungsrechner für Astrofotografie', url: 'https://www.lonelyspeck.com/advanced-astrophotography-shutter-time-calculator/' },
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
const seo: StarExposureCalculatorLocaleContent['seo'] = [
|
|
61
|
+
{
|
|
62
|
+
type: 'summary',
|
|
63
|
+
title: 'Kernpunkte der 500er Regel und NPF',
|
|
64
|
+
items: [
|
|
65
|
+
'Die 500er-Regel ist eine gute Näherung für Sensoren mit niedriger Auflösung und kleine Anzeigeformate.',
|
|
66
|
+
'Das NPF-Modell ist für moderne Sensoren mit hoher Pixeldichte deutlich präziser.',
|
|
67
|
+
'Die Himmelsdeklination ermöglicht längere Belichtungszeiten in der Nähe der Pole (Dekl. 90°).',
|
|
68
|
+
'Der Crop-Faktor Ihres Sensors multipliziert die effektive Brennweite und verkürzt die maximale Zeit.',
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{ type: 'title', text: 'Meisterhafte Astrofotografie: 500er-Regel und NPF-Modell', level: 2 },
|
|
72
|
+
{
|
|
73
|
+
type: 'paragraph',
|
|
74
|
+
html: 'Die Weite des Nachthimmels einzufangen, ist eine der lohnendsten Herausforderungen für jeden Fotografen. Das erste Hindernis ist jedoch die Erdrotation. Wenn wir den Verschluss zu lange offen lassen, werden aus perfekten Lichtpunkten unschöne Striche. Um scharfe, punktförmige Sterne zu erhalten, müssen wir die <strong>maximale Belichtungszeit</strong> mit der 500er-Regel oder dem NPF-Modell berechnen.',
|
|
75
|
+
},
|
|
76
|
+
{ type: 'title', text: 'Was ist die 500er-Regel?', level: 2 },
|
|
77
|
+
{
|
|
78
|
+
type: 'paragraph',
|
|
79
|
+
html: 'Die <strong>500er-Regel</strong> ist eine vereinfachte empirische Formel, die in der Landschafts-Astrofotografie seit Jahrzehnten Standard ist. Die Formel lautet: <code>Zeit = 500 / (Brennweite × Crop-Faktor)</code>. Sie ist schnell im Kopf zu berechnen und für Sensoren mit niedriger Auflösung sowie kleine Anzeigeformate ausreichend genau.',
|
|
80
|
+
},
|
|
81
|
+
{ type: 'title', text: 'Der Crop-Faktor und seine Auswirkungen', level: 2 },
|
|
82
|
+
{
|
|
83
|
+
type: 'paragraph',
|
|
84
|
+
html: 'Viele Anfänger vergessen, dass die 500er-Regel auf dem 35-mm-Standard (Vollformat) basiert. Wenn Ihre Kamera einen kleineren Sensor hat, ist das Sichtfeld enger und die Sternbewegung wird vergrößert. Ein 14-mm-Objektiv an einer APS-C-Kamera (1,5-facher Crop) verhält sich wie ein 21-mm-Äquivalent, wodurch sich die maximale Zeit von 35,7 s auf nur 23,8 s verkürzt.',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'table',
|
|
88
|
+
headers: ['Sensor', 'Crop', '14mm', '24mm', '50mm', '85mm'],
|
|
89
|
+
rows: [
|
|
90
|
+
['Vollformat', '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: 'Das NPF-Modell: Präzision für moderne Sensoren', level: 2 },
|
|
97
|
+
{
|
|
98
|
+
type: 'paragraph',
|
|
99
|
+
html: 'Die 500er-Regel entstand in der Ära des Films. Heute, mit 24-60 MP Sensoren, sind die Pixel so klein, dass Spuren viel früher wahrgenommen werden. Das <strong>NPF-Modell</strong>, entwickelt von der Französischen Astronomischen Gesellschaft, bezieht Blende und Pixeldichte in die Berechnung ein: <code>t = (35×f + 30×p) / F</code>, wobei f die Blende, p der Pixelabstand und F die Brennweite ist.',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'tip',
|
|
103
|
+
title: 'Deklination: Das Geheimnis fortgeschrittener Fotografen',
|
|
104
|
+
html: 'Sterne in der Nähe des <strong>Himmelspols</strong> (Polaris auf der Nordhalbkugel) ziehen sehr kleine Kreise am Himmel. Das bedeutet, dass sie sich viel langsamer über Ihren Sensor bewegen, was deutlich längere Belichtungszeiten ermöglicht. Wenn Sie den Bereich um Polaris fotografieren, können Sie die berechnete Zeit verdoppeln oder verdreifachen, ohne dass Spuren sichtbar werden. Die Deklination sagt Ihnen, wie nah Ihr Ziel am Himmelspol liegt.',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'stats',
|
|
108
|
+
columns: 2,
|
|
109
|
+
items: [
|
|
110
|
+
{ label: '500er-Regel - 14mm Vollf.', value: '35,7s', icon: 'mdi:timer' },
|
|
111
|
+
{ label: 'NPF - 14mm f/2.8 24MP', value: '~12s', icon: 'mdi:timer-sand' },
|
|
112
|
+
{ label: 'Dekl. 60° Korrektur', value: 'x2.0', icon: 'mdi:compass' },
|
|
113
|
+
{ label: 'Dekl. 80° Korrektur', 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: 'de',
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
export const content: StarExposureCalculatorLocaleContent = {
|
|
152
|
+
slug,
|
|
153
|
+
title,
|
|
154
|
+
description,
|
|
155
|
+
ui,
|
|
156
|
+
seo,
|
|
157
|
+
faq,
|
|
158
|
+
faqTitle: 'Häufig gestellte Fragen (FAQ)',
|
|
159
|
+
bibliography,
|
|
160
|
+
bibliographyTitle: 'Bibliographische Referenzen',
|
|
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 = 'Kalkulator Aturan 500 dan NPF untuk Astrofotografi';
|
|
6
|
+
const description = 'Hitung waktu eksposur maksimum untuk astrofotografi tanpa jejak bintang. Aturan klasik 500 dan model NPF presisi tinggi untuk sensor modern.';
|
|
7
|
+
|
|
8
|
+
const ui: StarExposureCalculatorUI = {
|
|
9
|
+
toolTitle: 'Kalkulator Aturan 500',
|
|
10
|
+
modeLabel: 'Mode',
|
|
11
|
+
classicMode: 'Klasik (500)',
|
|
12
|
+
npfMode: 'Presisi (NPF)',
|
|
13
|
+
sensorLabel: 'Sensor (Crop Factor)',
|
|
14
|
+
focalLabel: 'Panjang Fokus (mm)',
|
|
15
|
+
apertureLabel: 'Apertur (f/stop)',
|
|
16
|
+
megapixelsLabel: 'Megapiksel (MP)',
|
|
17
|
+
declinationLabel: 'Deklinasi Surgawi',
|
|
18
|
+
equatorLabel: 'Ekuator',
|
|
19
|
+
poleLabel: 'Kutub',
|
|
20
|
+
secondsUnit: 'detik',
|
|
21
|
+
resultText: 'Waktu maksimum untuk bintang titik.',
|
|
22
|
+
simLabel: 'Simulasi Visual (Zoom 200%)',
|
|
23
|
+
simRangeLabel: 'Simulasikan kelebihan waktu',
|
|
24
|
+
pointStars: 'Bintang sebagai titik',
|
|
25
|
+
trailStars: 'Jejak bintang terlihat',
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const faq: StarExposureCalculatorLocaleContent['faq'] = [
|
|
29
|
+
{
|
|
30
|
+
question: 'Apa yang terjadi jika saya melebihi waktu yang dihitung?',
|
|
31
|
+
answer: 'Jika Anda melebihi waktu maksimum, bintang akan mulai memanjang alih-alih menjadi titik yang tajam. Jika eksposur sangat lama, Anda akan mendapatkan jejak bintang (star trails), teknik artistik yang valid tetapi membutuhkan waktu yang jauh lebih lama agar terlihat estetis.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: 'Kapan saya harus menggunakan NPF alih-alih Aturan 500?',
|
|
35
|
+
answer: 'Model NPF lebih akurat dan direkomendasikan untuk kamera dengan sensor beresolusi tinggi (24MP atau lebih). Dengan Aturan klasik 500, Anda mungkin mendapatkan jejak yang tidak terlihat pada cetakan 4x6 tetapi terlihat saat mencetak besar atau dilihat di monitor 4K. Jika tujuan Anda adalah ketajaman maksimum, gunakan NPF.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: 'Bagaimana cara menemukan deklinasi objek yang ingin saya foto?',
|
|
39
|
+
answer: 'Anda dapat menggunakan aplikasi seperti Stellarium, SkySafari, atau memeriksa peta bintang. Sebagai aturan umum: semakin dekat objek ke kutub langit (Dec 90°), semakin banyak waktu eksposur yang dapat Anda gunakan.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
question: 'Apakah kalkulator ini berfungsi dengan pelacak bintang (star tracker)?',
|
|
43
|
+
answer: 'Tidak untuk langit itu sendiri, karena pelacak mengompensasi rotasi. Namun, ini sangat penting untuk menghitung bidikan latar depan di mana pelacak tidak membantu, atau untuk memverifikasi apakah motor gagal saat Anda melihat jejak yang tidak terduga.',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const howTo: StarExposureCalculatorLocaleContent['howTo'] = [
|
|
48
|
+
{ name: '1. Pilih mode perhitungan', text: 'Pilih Klasik (Aturan 500) untuk estimasi cepat atau NPF jika Anda memiliki sensor beresolusi tinggi dan mencari ketajaman maksimum.' },
|
|
49
|
+
{ name: '2. Konfigurasikan peralatan Anda', text: 'Masukkan panjang fokus lensa Anda dan pilih faktor crop kamera Anda.' },
|
|
50
|
+
{ name: '3. Sesuaikan deklinasi', text: 'Jika memotret di dekat kutub langit, tingkatkan deklinasi untuk memungkinkan eksposur yang lebih lama tanpa jejak.' },
|
|
51
|
+
{ name: '4. Simulasikan kelebihan waktu', text: 'Gunakan slider simulasi untuk memvisualisasikan bagaimana bintang akan terlihat jika Anda melebihi waktu yang dihitung.' },
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: StarExposureCalculatorLocaleContent['bibliography'] = [
|
|
55
|
+
{ name: 'Masyarakat Astronomi Prancis: Model NPF', url: 'https://sahavre.fr/wp/regle-npf-rule/' },
|
|
56
|
+
{ name: 'PetaPixel: Mengapa Aturan 500 Tidak Lagi Cukup', url: 'https://petapixel.com/2015/01/06/avoid-star-trails-following-500-rule/' },
|
|
57
|
+
{ name: 'Lonely Speck: Kalkulator Waktu Rana Astrofotografi', url: 'https://www.lonelyspeck.com/advanced-astrophotography-shutter-time-calculator/' },
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
const seo: StarExposureCalculatorLocaleContent['seo'] = [
|
|
61
|
+
{
|
|
62
|
+
type: 'summary',
|
|
63
|
+
title: 'Poin Utama Aturan 500 dan NPF',
|
|
64
|
+
items: [
|
|
65
|
+
'Aturan 500 adalah perkiraan yang valid untuk sensor beresolusi rendah dan tampilan format kecil.',
|
|
66
|
+
'Model NPF lebih akurat untuk sensor modern dengan kepadatan piksel tinggi.',
|
|
67
|
+
'Deklinasi surgawi memungkinkan waktu eksposur lebih lama di dekat kutub (Dec 90°).',
|
|
68
|
+
'Faktor crop sensor Anda melipatgandakan panjang fokus efektif dan mengurangi waktu maksimum.',
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{ type: 'title', text: 'Menguasai Astrofotografi: Aturan 500 dan Model NPF', level: 2 },
|
|
72
|
+
{
|
|
73
|
+
type: 'paragraph',
|
|
74
|
+
html: 'Menangkap luasnya langit malam adalah salah satu tantangan paling memuaskan bagi fotografer mana pun. Namun, hambatan pertama adalah rotasi Bumi. Jika kita membiarkan rana terbuka terlalu lama, titik-titik cahaya yang sempurna itu menjadi jejak yang tidak sedap dipandang. Untuk mendapatkan bintang yang tajam seperti titik, kita perlu menghitung <strong>waktu eksposur maksimum</strong> menggunakan Aturan 500 atau Model NPF.',
|
|
75
|
+
},
|
|
76
|
+
{ type: 'title', text: 'Apa itu Aturan 500?', level: 2 },
|
|
77
|
+
{
|
|
78
|
+
type: 'paragraph',
|
|
79
|
+
html: '<strong>Aturan 500</strong> adalah formula empiris sederhana yang telah menjadi standar dalam astrofotografi lanskap selama beberapa dekade. Formulanya adalah: <code>Waktu = 500 / (Panjang Fokus × Faktor Crop)</code>. Ini cepat, dapat dihitung di luar kepala, dan cukup akurat untuk sensor beresolusi rendah dan tampilan format kecil.',
|
|
80
|
+
},
|
|
81
|
+
{ type: 'title', text: 'Faktor Crop dan Dampaknya', level: 2 },
|
|
82
|
+
{
|
|
83
|
+
type: 'paragraph',
|
|
84
|
+
html: 'Banyak pemula lupa bahwa Aturan 500 didasarkan pada standar 35mm (Full Frame). Jika kamera Anda memiliki sensor yang lebih kecil, bidang pandang lebih sempit dan pergerakan bintang diperbesar. Lensa 14mm pada APS-C (crop 1,5x) berperilaku seperti setara 21mm, mengurangi waktu maksimum dari 35,7 detik menjadi hanya 23,8 detik.',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'table',
|
|
88
|
+
headers: ['Sensor', '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: Presisi untuk Sensor Modern', level: 2 },
|
|
97
|
+
{
|
|
98
|
+
type: 'paragraph',
|
|
99
|
+
html: 'Aturan 500 lahir di era film. Saat ini, dengan sensor 24-60MP, piksel sangat kecil sehingga jejak dirasakan jauh lebih awal. <strong>Model NPF</strong>, yang dikembangkan oleh Masyarakat Astronomi Prancis, menambahkan bukaan dan kepadatan piksel ke dalam perhitungan: <code>t = (35×f + 30×p) / F</code>, di mana f adalah bukaan, p adalah pitch piksel dan F adalah panjang fokus.',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'tip',
|
|
103
|
+
title: 'Deklinasi: Rahasia Fotografer Tingkat Lanjut',
|
|
104
|
+
html: 'Bintang-bintang di dekat <strong>kutub langit</strong> (Polaris di belahan bumi utara) menelusuri lingkaran yang sangat kecil di langit. Ini berarti mereka bergerak sangat lambat melintasi sensor Anda, memungkinkan eksposur yang jauh lebih lama. Jika memotret area di sekitar Polaris, Anda dapat menggunakan dua atau tiga kali waktu yang dihitung tanpa jejak yang terlihat. Deklinasi memberi tahu Anda seberapa dekat target Anda dengan kutub langit.',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'stats',
|
|
108
|
+
columns: 2,
|
|
109
|
+
items: [
|
|
110
|
+
{ label: 'Aturan 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: 'Koreksi Dec 60°', value: 'x2.0', icon: 'mdi:compass' },
|
|
113
|
+
{ label: 'Koreksi 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: 'id',
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
export const content: StarExposureCalculatorLocaleContent = {
|
|
152
|
+
slug,
|
|
153
|
+
title,
|
|
154
|
+
description,
|
|
155
|
+
ui,
|
|
156
|
+
seo,
|
|
157
|
+
faq,
|
|
158
|
+
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
159
|
+
bibliography,
|
|
160
|
+
bibliographyTitle: 'Referensi Bibliografi',
|
|
161
|
+
howTo,
|
|
162
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
163
|
+
};
|