@jjlmoya/utils-astronomy 1.24.0 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/category/i18n/de.ts +57 -57
- package/src/category/i18n/en.ts +1 -1
- package/src/category/i18n/es.ts +1 -1
- package/src/category/i18n/fr.ts +58 -58
- package/src/category/i18n/it.ts +1 -1
- package/src/category/i18n/nl.ts +57 -57
- package/src/category/i18n/pl.ts +57 -57
- package/src/category/i18n/pt.ts +1 -1
- package/src/category/i18n/ru.ts +57 -57
- package/src/category/i18n/sv.ts +57 -57
- package/src/category/i18n/zh.ts +57 -57
- package/src/category/index.ts +30 -30
- package/src/category/seo.astro +15 -15
- package/src/components/PreviewNavSidebar.astro +116 -116
- package/src/components/PreviewToolbar.astro +143 -143
- package/src/data.ts +16 -16
- package/src/env.d.ts +5 -5
- package/src/index.ts +22 -22
- package/src/layouts/PreviewLayout.astro +122 -122
- package/src/pages/[locale].astro +251 -251
- package/src/pages/index.astro +4 -4
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +74 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/mocks/astro_mock.js +2 -2
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/seo_length.test.ts +1 -1
- package/src/tests/seo_parity.test.ts +2 -2
- package/src/tests/seo_translation_completeness.test.ts +75 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/tool_structure.test.ts +71 -71
- package/src/tests/tool_validation.test.ts +146 -146
- package/src/tool/bortleVisualizer/bibliography.astro +14 -14
- package/src/tool/bortleVisualizer/bibliography.ts +8 -8
- package/src/tool/bortleVisualizer/i18n/pl.ts +159 -159
- package/src/tool/bortleVisualizer/i18n/ru.ts +159 -159
- package/src/tool/deepSpaceScope/bibliography.astro +14 -14
- package/src/tool/deepSpaceScope/component.astro +382 -382
- package/src/tool/deepSpaceScope/i18n/de.ts +172 -172
- package/src/tool/deepSpaceScope/i18n/ko.ts +172 -172
- package/src/tool/deepSpaceScope/i18n/pl.ts +172 -172
- package/src/tool/deepSpaceScope/i18n/ru.ts +172 -172
- package/src/tool/deepSpaceScope/i18n/zh.ts +172 -172
- package/src/tool/smartEyepieceCalculator/component.astro +125 -125
- package/src/tool/smartEyepieceCalculator/i18n/fr.ts +165 -165
- package/src/tool/smartEyepieceCalculator/i18n/ru.ts +165 -165
- package/src/tool/smartEyepieceCalculator/i18n/zh.ts +165 -165
- package/src/tool/starExposureCalculator/bibliography.astro +14 -14
- package/src/tool/starExposureCalculator/bibliography.ts +7 -7
- package/src/tool/starExposureCalculator/component.astro +249 -249
- package/src/tool/starExposureCalculator/i18n/pl.ts +156 -156
- package/src/tool/starExposureCalculator/i18n/ru.ts +156 -156
- package/src/tool/telescopeResolution/bibliography.astro +14 -14
- package/src/tool/telescopeResolution/component.astro +222 -222
- package/src/tool/telescopeResolution/i18n/de.ts +169 -169
- package/src/tool/telescopeResolution/i18n/en.ts +169 -169
- package/src/tool/telescopeResolution/i18n/es.ts +169 -169
- package/src/tool/telescopeResolution/i18n/fr.ts +169 -169
- package/src/tool/telescopeResolution/i18n/id.ts +169 -169
- package/src/tool/telescopeResolution/i18n/it.ts +169 -169
- package/src/tool/telescopeResolution/i18n/ja.ts +169 -169
- package/src/tool/telescopeResolution/i18n/ko.ts +169 -169
- package/src/tool/telescopeResolution/i18n/nl.ts +169 -169
- package/src/tool/telescopeResolution/i18n/pl.ts +169 -169
- package/src/tool/telescopeResolution/i18n/pt.ts +169 -169
- package/src/tool/telescopeResolution/i18n/ru.ts +169 -169
- package/src/tool/telescopeResolution/i18n/sv.ts +169 -169
- package/src/tool/telescopeResolution/i18n/tr.ts +169 -169
- package/src/tool/telescopeResolution/i18n/zh.ts +169 -169
|
@@ -1,172 +1,172 @@
|
|
|
1
|
-
import { bibliography } from '../bibliography';
|
|
2
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
-
import type { DeepSpaceScopeUI, DeepSpaceScopeLocaleContent } from '../index';
|
|
4
|
-
|
|
5
|
-
const slug = 'telescope-reach';
|
|
6
|
-
const title = '望远镜观测极限计算器';
|
|
7
|
-
const description = '计算您望远镜的极限星等,并根据您当地的星空条件,探索使用您的设备可以观测到哪些深空天体。';
|
|
8
|
-
|
|
9
|
-
const ui: DeepSpaceScopeUI = {
|
|
10
|
-
toolTitle: '望远镜性能',
|
|
11
|
-
apertureLabel: '口径',
|
|
12
|
-
bortleLabel: '天空暗度 (波特尔)',
|
|
13
|
-
limitMagLabel: '极限星等',
|
|
14
|
-
azimuthLabel: '方位角',
|
|
15
|
-
dragHint: '点击并拖动以探索宇宙 (360°)',
|
|
16
|
-
dragHintMobile: '拖动以探索 360° 宇宙',
|
|
17
|
-
planetLabel: '行星',
|
|
18
|
-
starLabel: '恒星',
|
|
19
|
-
deepSpaceLabel: '深空',
|
|
20
|
-
magnitudeLabel: '星等',
|
|
21
|
-
coordinatesLabel: '坐标',
|
|
22
|
-
closeLabel: '关闭',
|
|
23
|
-
altitudeLabel: '高度',
|
|
24
|
-
defaultObjDesc: '一个迷人的深空天体。星等',
|
|
25
|
-
bortleClassPrefix: '等级',
|
|
26
|
-
deepSpaceObjects: [
|
|
27
|
-
{ name: '金星', type: 'Planet', mag: -4.5, az: 270, alt: 30, icon: 'mdi:circle', color: '#fef08a', desc: '夜空中最亮的行星。在大白天也能看到。' },
|
|
28
|
-
{ name: '木星', type: 'Planet', mag: -2.5, az: 180, alt: 40, icon: 'mdi:circle', color: '#fef9c3', desc: '太阳系的巨人。它的四颗伽利略卫星可以用双筒望远镜看到。' },
|
|
29
|
-
{ name: '土星', type: 'Planet', mag: 0.8, az: 220, alt: 35, icon: 'mdi:circle', color: '#fefce8', desc: '用 60mm 望远镜在 50 倍放大倍率下即可看到它的光环。' },
|
|
30
|
-
{ name: '火星', type: 'Planet', mag: 1.5, az: 150, alt: 25, icon: 'mdi:circle', color: '#f87171', desc: '红色行星。亮度从大冲时的 -2.9 等到合日时的 +1.8 等不等。' },
|
|
31
|
-
{ name: '天狼星', type: 'Star', mag: -1.46, az: 145, alt: 50, icon: 'mdi:star-four-points', color: '#bfdbfe', desc: '夜空中最亮的恒星。距离我们仅 8.6 光年。' },
|
|
32
|
-
{ name: '老人星', type: 'Star', mag: -0.74, az: 200, alt: 20, icon: 'mdi:star-four-points', color: '#fef9c3', desc: '全天第二亮的恒星,用于南半球的导航。' },
|
|
33
|
-
{ name: '大角星', type: 'Star', mag: -0.05, az: 60, alt: 55, icon: 'mdi:star-four-points', color: '#fdba74', desc: '牧夫座中的橙色巨星。距离地球 36 光年。' },
|
|
34
|
-
{ name: '织女星', type: 'Star', mag: 0.03, az: 40, alt: 70, icon: 'mdi:star-four-points', color: '#dbeafe', desc: '夏际大三角的一个顶点。星等 0 的参考恒星。' },
|
|
35
|
-
{ name: 'M42 猎户座大星云', type: 'Nebula', mag: 4.0, az: 140, alt: 45, icon: 'mdi:creation', color: '#a5b4fc', desc: '伟大的猎户座大星云,距离 1344 光年。年轻恒星的摇篮。' },
|
|
36
|
-
{ name: 'M45 昴星团', type: 'Cluster', mag: 1.6, az: 100, alt: 60, icon: 'mdi:creation', color: '#93c5fd', desc: '七姐妹星团。距离 444 光年,是天空中最有名的疏散星团。' },
|
|
37
|
-
{ name: 'M31 仙女座星系', type: 'Galaxy', mag: 3.4, az: 30, alt: 50, icon: 'mdi:creation', color: '#d8b4fe', desc: '最大的邻居星系。距离 250 万光年,在暗空下肉眼可见。' },
|
|
38
|
-
{ name: 'M13 武仙座球状星团', type: 'Cluster', mag: 5.8, az: 80, alt: 65, icon: 'mdi:creation', color: '#fde047', desc: '武仙座中伟大的球状星团。在 25,100 光年外包含 300,000 颗恒星。' },
|
|
39
|
-
{ name: 'M57 环状星云', type: 'Nebula', mag: 8.8, az: 50, alt: 58, icon: 'mdi:creation', color: '#67e8f9', desc: '天琴座中的行星状星云。由白矮星喷射出的气体环。' },
|
|
40
|
-
{ name: 'M81 波德星系', type: 'Galaxy', mag: 6.9, az: 340, alt: 55, icon: 'mdi:creation', color: '#c4b5fd', desc: '大熊座中的螺旋星系。正与 M82 进行引力相互作用。' },
|
|
41
|
-
{ name: '冥王星', type: 'Dwarf Planet', mag: 14.3, az: 195, alt: 22, icon: 'mdi:circle-small', color: '#cbd5e1', desc: '最著名的矮行星。需要 250mm 或更大的望远镜以及极暗的天空。' },
|
|
42
|
-
],
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const faq: DeepSpaceScopeLocaleContent['faq'] = [
|
|
46
|
-
{
|
|
47
|
-
question: '什么是望远镜的极限星等?',
|
|
48
|
-
answer: '它是指望远镜在给定的天空条件下能探测到的最暗天体的星等。它取决于口径大小(口径越大 = 收集的光线越多)和天空质量(波特尔阶级)。人类眼睛在理想条件下可达到 6.5 等;一台 200mm 的望远镜可以达到 13-14 等。',
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
question: '波特尔量表如何影响我的观测?',
|
|
52
|
-
answer: '每一个波特尔等级大约会减少 0.5 等的观测深度。一台 200mm 的望远镜在波特尔 2 级下可以达到 14.5 等,但在波特尔 7 级下,同样的口径只能达到 11-12 等。暗空能成倍地提升任何仪器的性能。',
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
question: '从城市里可以看到哪些天体?',
|
|
56
|
-
answer: '在波特尔 7-8 级的天空下(城市),使用 150mm 望远镜可以非常详细地看到明亮的行星、月球、明亮的疏散星团(M45、M44)、球状星团(M13)以及一些明亮的星系(如 M31 和 M81),尽管细节不多。暗淡的星云需要更暗的天空或特定的滤镜。',
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
question: '需要多大的口径才能看到星云的颜色?',
|
|
60
|
-
answer: '人类眼睛在弱光下会丧失颜色敏感度。要看到像 M42 这样的发射星云的颜色,至少需要 200-250mm 的口径以及波特尔 3-4 级的天空。如果口径较小,星云看起来是灰色的,尽管通过天文摄影,即使是小望远镜也能捕捉到壮丽的颜色。',
|
|
61
|
-
},
|
|
62
|
-
];
|
|
63
|
-
|
|
64
|
-
const howTo: DeepSpaceScopeLocaleContent['howTo'] = [
|
|
65
|
-
{ name: '1. 设置您的口径', text: '移动口径滑块以模拟您的望远镜。范围从 50mm(双筒望远镜)到 400mm(先进望远镜)。' },
|
|
66
|
-
{ name: '2. 调整天空质量', text: '设置您常用观测地点的波特尔等级,以查看真实的极限星等。' },
|
|
67
|
-
{ name: '3. 探索星图', text: '拖动字段以探索 360° 的星空,发现您的设备可以观测到哪些天体。' },
|
|
68
|
-
{ name: '4. 点击天体', text: '点击任何天空天体以查看其详细信息:类型、星等和描述。' },
|
|
69
|
-
];
|
|
70
|
-
|
|
71
|
-
const seo: DeepSpaceScopeLocaleContent['seo'] = [
|
|
72
|
-
{
|
|
73
|
-
type: 'summary',
|
|
74
|
-
title: '望远镜性能的核心要点',
|
|
75
|
-
items: [
|
|
76
|
-
'口径是决定性因素:直径越大意味着收集的光线越多,极限星等越高。',
|
|
77
|
-
'暗空(低波特尔值)相比城市天空可以获得 2-3 等的深度增益。',
|
|
78
|
-
'200mm 望远镜在波特尔 3 级可达 13-14 等,而在波特尔 7 级仅为 11 等。',
|
|
79
|
-
'明亮的行星和月亮不需要暗空 - 在城市中即可观测。',
|
|
80
|
-
],
|
|
81
|
-
},
|
|
82
|
-
{ type: 'title', text: '天文观测物理学:口径与星等', level: 2 },
|
|
83
|
-
{
|
|
84
|
-
type: 'paragraph',
|
|
85
|
-
html: '望远镜的主要功能不是放大图像,而是 <strong>收集光线</strong>。人类眼睛的瞳孔在完全黑暗中会放大到约 6-7mm。200mm 的望远镜拥有 31,416mm² 的集光面积,比人类瞳孔 <strong>大 800 倍以上</strong>,让您能看到暗数百倍的天体。',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
type: 'paragraph',
|
|
89
|
-
html: '星等增益公式为:<code>增益 = 5 × log₁₀(口径mm / 6)</code>。对于 200mm 口径:5 × log₁₀(200/6) = 5 × 1.52 = 7.6 等(相对于肉眼的额外增益)。加上肉眼可见的 6.5 等(在暗空下),极限星等可达 14.1 等。',
|
|
90
|
-
},
|
|
91
|
-
{ type: 'title', text: '光污染对观测深度的影响', level: 2 },
|
|
92
|
-
{
|
|
93
|
-
type: 'paragraph',
|
|
94
|
-
html: '即使使用世界上最好的望远镜,您也无法在市中心看到暗淡的星系。天空背景的亮度会\"抹除\"必要的对比度。<strong>波特尔量表</strong>量化了这种影响:每增加一阶波特尔等级,望远镜的观测深度大约会减少 0.5 等。',
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
type: 'table',
|
|
98
|
-
headers: ['口径', '波特尔 2 (极暗)', '波特尔 4 (乡村)', '波特尔 6 (郊区)', '波特尔 8 (城市)'],
|
|
99
|
-
rows: [
|
|
100
|
-
['70mm', '12.0 等', '10.8 等', '9.5 等', '8.3 等'],
|
|
101
|
-
['100mm', '12.8 等', '11.6 等', '10.3 等', '9.1 等'],
|
|
102
|
-
['150mm', '13.6 等', '12.4 等', '11.1 等', '9.9 等'],
|
|
103
|
-
['200mm', '14.2 等', '13.0 等', '11.7 等', '10.5 等'],
|
|
104
|
-
['300mm', '15.0 等', '13.8 等', '12.5 等', '11.3 等'],
|
|
105
|
-
],
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
type: 'tip',
|
|
109
|
-
title: '梅西耶星表:您的目标清单',
|
|
110
|
-
html: '查尔斯·梅西耶在 1781 年编制了他著名的 110 个天体星表,以避免将它们与彗星混淆。今天,它是目视观测者的参考星表。这 110 个梅西耶天体(M1-M110)包括星云、星团和星系,在波特尔 4-5 级的天空下,使用 150mm 以下的望远镜即可全部观测到。',
|
|
111
|
-
},
|
|
112
|
-
{ type: 'title', text: '按类型和难度分类的特色天体', level: 2 },
|
|
113
|
-
{
|
|
114
|
-
type: 'paragraph',
|
|
115
|
-
html: '对于初学者来说,<strong>行星</strong>是最有成就感的目标:它们不需要暗空,即使是用小望远镜也能展现出令人惊讶的细节(40 倍下的土星环、80 倍下的木星条纹、火星极冠)。<strong>星云</strong>和 <strong>星系</strong> 需要更大的口径和更暗的天空,但会回馈您无与伦比的美丽全景。',
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
type: 'stats',
|
|
119
|
-
columns: 2,
|
|
120
|
-
items: [
|
|
121
|
-
{ label: '人眼 (7mm)', value: '6.5 等', icon: 'mdi:eye' },
|
|
122
|
-
{ label: '70mm 折射镜', value: '12 等', icon: 'mdi:telescope' },
|
|
123
|
-
{ label: '200mm 杜布森镜', value: '14+ 等', icon: 'mdi:telescope' },
|
|
124
|
-
{ label: 'HST 哈勃太空望远镜', value: '31 等', icon: 'mdi:satellite-variant' },
|
|
125
|
-
],
|
|
126
|
-
},
|
|
127
|
-
];
|
|
128
|
-
|
|
129
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
130
|
-
'@context': 'https://schema.org',
|
|
131
|
-
'@type': 'FAQPage',
|
|
132
|
-
mainEntity: faq.map((item) => ({
|
|
133
|
-
'@type': 'Question',
|
|
134
|
-
name: item.question,
|
|
135
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
136
|
-
})),
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
const howToSchema: WithContext<HowTo> = {
|
|
140
|
-
'@context': 'https://schema.org',
|
|
141
|
-
'@type': 'HowTo',
|
|
142
|
-
name: title,
|
|
143
|
-
description,
|
|
144
|
-
step: howTo.map((step) => ({
|
|
145
|
-
'@type': 'HowToStep',
|
|
146
|
-
name: step.name,
|
|
147
|
-
text: step.text,
|
|
148
|
-
})),
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
152
|
-
'@context': 'https://schema.org',
|
|
153
|
-
'@type': 'SoftwareApplication',
|
|
154
|
-
name: title,
|
|
155
|
-
description,
|
|
156
|
-
applicationCategory: 'UtilitiesApplication',
|
|
157
|
-
operatingSystem: 'Web',
|
|
158
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
159
|
-
inLanguage: 'zh',
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
export const content: DeepSpaceScopeLocaleContent = {
|
|
163
|
-
slug,
|
|
164
|
-
title,
|
|
165
|
-
description,
|
|
166
|
-
ui,
|
|
167
|
-
seo,
|
|
168
|
-
faq,
|
|
169
|
-
bibliography,
|
|
170
|
-
howTo,
|
|
171
|
-
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
172
|
-
};
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { DeepSpaceScopeUI, DeepSpaceScopeLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'telescope-reach';
|
|
6
|
+
const title = '望远镜观测极限计算器';
|
|
7
|
+
const description = '计算您望远镜的极限星等,并根据您当地的星空条件,探索使用您的设备可以观测到哪些深空天体。';
|
|
8
|
+
|
|
9
|
+
const ui: DeepSpaceScopeUI = {
|
|
10
|
+
toolTitle: '望远镜性能',
|
|
11
|
+
apertureLabel: '口径',
|
|
12
|
+
bortleLabel: '天空暗度 (波特尔)',
|
|
13
|
+
limitMagLabel: '极限星等',
|
|
14
|
+
azimuthLabel: '方位角',
|
|
15
|
+
dragHint: '点击并拖动以探索宇宙 (360°)',
|
|
16
|
+
dragHintMobile: '拖动以探索 360° 宇宙',
|
|
17
|
+
planetLabel: '行星',
|
|
18
|
+
starLabel: '恒星',
|
|
19
|
+
deepSpaceLabel: '深空',
|
|
20
|
+
magnitudeLabel: '星等',
|
|
21
|
+
coordinatesLabel: '坐标',
|
|
22
|
+
closeLabel: '关闭',
|
|
23
|
+
altitudeLabel: '高度',
|
|
24
|
+
defaultObjDesc: '一个迷人的深空天体。星等',
|
|
25
|
+
bortleClassPrefix: '等级',
|
|
26
|
+
deepSpaceObjects: [
|
|
27
|
+
{ name: '金星', type: 'Planet', mag: -4.5, az: 270, alt: 30, icon: 'mdi:circle', color: '#fef08a', desc: '夜空中最亮的行星。在大白天也能看到。' },
|
|
28
|
+
{ name: '木星', type: 'Planet', mag: -2.5, az: 180, alt: 40, icon: 'mdi:circle', color: '#fef9c3', desc: '太阳系的巨人。它的四颗伽利略卫星可以用双筒望远镜看到。' },
|
|
29
|
+
{ name: '土星', type: 'Planet', mag: 0.8, az: 220, alt: 35, icon: 'mdi:circle', color: '#fefce8', desc: '用 60mm 望远镜在 50 倍放大倍率下即可看到它的光环。' },
|
|
30
|
+
{ name: '火星', type: 'Planet', mag: 1.5, az: 150, alt: 25, icon: 'mdi:circle', color: '#f87171', desc: '红色行星。亮度从大冲时的 -2.9 等到合日时的 +1.8 等不等。' },
|
|
31
|
+
{ name: '天狼星', type: 'Star', mag: -1.46, az: 145, alt: 50, icon: 'mdi:star-four-points', color: '#bfdbfe', desc: '夜空中最亮的恒星。距离我们仅 8.6 光年。' },
|
|
32
|
+
{ name: '老人星', type: 'Star', mag: -0.74, az: 200, alt: 20, icon: 'mdi:star-four-points', color: '#fef9c3', desc: '全天第二亮的恒星,用于南半球的导航。' },
|
|
33
|
+
{ name: '大角星', type: 'Star', mag: -0.05, az: 60, alt: 55, icon: 'mdi:star-four-points', color: '#fdba74', desc: '牧夫座中的橙色巨星。距离地球 36 光年。' },
|
|
34
|
+
{ name: '织女星', type: 'Star', mag: 0.03, az: 40, alt: 70, icon: 'mdi:star-four-points', color: '#dbeafe', desc: '夏际大三角的一个顶点。星等 0 的参考恒星。' },
|
|
35
|
+
{ name: 'M42 猎户座大星云', type: 'Nebula', mag: 4.0, az: 140, alt: 45, icon: 'mdi:creation', color: '#a5b4fc', desc: '伟大的猎户座大星云,距离 1344 光年。年轻恒星的摇篮。' },
|
|
36
|
+
{ name: 'M45 昴星团', type: 'Cluster', mag: 1.6, az: 100, alt: 60, icon: 'mdi:creation', color: '#93c5fd', desc: '七姐妹星团。距离 444 光年,是天空中最有名的疏散星团。' },
|
|
37
|
+
{ name: 'M31 仙女座星系', type: 'Galaxy', mag: 3.4, az: 30, alt: 50, icon: 'mdi:creation', color: '#d8b4fe', desc: '最大的邻居星系。距离 250 万光年,在暗空下肉眼可见。' },
|
|
38
|
+
{ name: 'M13 武仙座球状星团', type: 'Cluster', mag: 5.8, az: 80, alt: 65, icon: 'mdi:creation', color: '#fde047', desc: '武仙座中伟大的球状星团。在 25,100 光年外包含 300,000 颗恒星。' },
|
|
39
|
+
{ name: 'M57 环状星云', type: 'Nebula', mag: 8.8, az: 50, alt: 58, icon: 'mdi:creation', color: '#67e8f9', desc: '天琴座中的行星状星云。由白矮星喷射出的气体环。' },
|
|
40
|
+
{ name: 'M81 波德星系', type: 'Galaxy', mag: 6.9, az: 340, alt: 55, icon: 'mdi:creation', color: '#c4b5fd', desc: '大熊座中的螺旋星系。正与 M82 进行引力相互作用。' },
|
|
41
|
+
{ name: '冥王星', type: 'Dwarf Planet', mag: 14.3, az: 195, alt: 22, icon: 'mdi:circle-small', color: '#cbd5e1', desc: '最著名的矮行星。需要 250mm 或更大的望远镜以及极暗的天空。' },
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const faq: DeepSpaceScopeLocaleContent['faq'] = [
|
|
46
|
+
{
|
|
47
|
+
question: '什么是望远镜的极限星等?',
|
|
48
|
+
answer: '它是指望远镜在给定的天空条件下能探测到的最暗天体的星等。它取决于口径大小(口径越大 = 收集的光线越多)和天空质量(波特尔阶级)。人类眼睛在理想条件下可达到 6.5 等;一台 200mm 的望远镜可以达到 13-14 等。',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
question: '波特尔量表如何影响我的观测?',
|
|
52
|
+
answer: '每一个波特尔等级大约会减少 0.5 等的观测深度。一台 200mm 的望远镜在波特尔 2 级下可以达到 14.5 等,但在波特尔 7 级下,同样的口径只能达到 11-12 等。暗空能成倍地提升任何仪器的性能。',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
question: '从城市里可以看到哪些天体?',
|
|
56
|
+
answer: '在波特尔 7-8 级的天空下(城市),使用 150mm 望远镜可以非常详细地看到明亮的行星、月球、明亮的疏散星团(M45、M44)、球状星团(M13)以及一些明亮的星系(如 M31 和 M81),尽管细节不多。暗淡的星云需要更暗的天空或特定的滤镜。',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
question: '需要多大的口径才能看到星云的颜色?',
|
|
60
|
+
answer: '人类眼睛在弱光下会丧失颜色敏感度。要看到像 M42 这样的发射星云的颜色,至少需要 200-250mm 的口径以及波特尔 3-4 级的天空。如果口径较小,星云看起来是灰色的,尽管通过天文摄影,即使是小望远镜也能捕捉到壮丽的颜色。',
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
const howTo: DeepSpaceScopeLocaleContent['howTo'] = [
|
|
65
|
+
{ name: '1. 设置您的口径', text: '移动口径滑块以模拟您的望远镜。范围从 50mm(双筒望远镜)到 400mm(先进望远镜)。' },
|
|
66
|
+
{ name: '2. 调整天空质量', text: '设置您常用观测地点的波特尔等级,以查看真实的极限星等。' },
|
|
67
|
+
{ name: '3. 探索星图', text: '拖动字段以探索 360° 的星空,发现您的设备可以观测到哪些天体。' },
|
|
68
|
+
{ name: '4. 点击天体', text: '点击任何天空天体以查看其详细信息:类型、星等和描述。' },
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const seo: DeepSpaceScopeLocaleContent['seo'] = [
|
|
72
|
+
{
|
|
73
|
+
type: 'summary',
|
|
74
|
+
title: '望远镜性能的核心要点',
|
|
75
|
+
items: [
|
|
76
|
+
'口径是决定性因素:直径越大意味着收集的光线越多,极限星等越高。',
|
|
77
|
+
'暗空(低波特尔值)相比城市天空可以获得 2-3 等的深度增益。',
|
|
78
|
+
'200mm 望远镜在波特尔 3 级可达 13-14 等,而在波特尔 7 级仅为 11 等。',
|
|
79
|
+
'明亮的行星和月亮不需要暗空 - 在城市中即可观测。',
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
{ type: 'title', text: '天文观测物理学:口径与星等', level: 2 },
|
|
83
|
+
{
|
|
84
|
+
type: 'paragraph',
|
|
85
|
+
html: '望远镜的主要功能不是放大图像,而是 <strong>收集光线</strong>。人类眼睛的瞳孔在完全黑暗中会放大到约 6-7mm。200mm 的望远镜拥有 31,416mm² 的集光面积,比人类瞳孔 <strong>大 800 倍以上</strong>,让您能看到暗数百倍的天体。',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'paragraph',
|
|
89
|
+
html: '星等增益公式为:<code>增益 = 5 × log₁₀(口径mm / 6)</code>。对于 200mm 口径:5 × log₁₀(200/6) = 5 × 1.52 = 7.6 等(相对于肉眼的额外增益)。加上肉眼可见的 6.5 等(在暗空下),极限星等可达 14.1 等。',
|
|
90
|
+
},
|
|
91
|
+
{ type: 'title', text: '光污染对观测深度的影响', level: 2 },
|
|
92
|
+
{
|
|
93
|
+
type: 'paragraph',
|
|
94
|
+
html: '即使使用世界上最好的望远镜,您也无法在市中心看到暗淡的星系。天空背景的亮度会\"抹除\"必要的对比度。<strong>波特尔量表</strong>量化了这种影响:每增加一阶波特尔等级,望远镜的观测深度大约会减少 0.5 等。',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
type: 'table',
|
|
98
|
+
headers: ['口径', '波特尔 2 (极暗)', '波特尔 4 (乡村)', '波特尔 6 (郊区)', '波特尔 8 (城市)'],
|
|
99
|
+
rows: [
|
|
100
|
+
['70mm', '12.0 等', '10.8 等', '9.5 等', '8.3 等'],
|
|
101
|
+
['100mm', '12.8 等', '11.6 等', '10.3 等', '9.1 等'],
|
|
102
|
+
['150mm', '13.6 等', '12.4 等', '11.1 等', '9.9 等'],
|
|
103
|
+
['200mm', '14.2 等', '13.0 等', '11.7 等', '10.5 等'],
|
|
104
|
+
['300mm', '15.0 等', '13.8 等', '12.5 等', '11.3 等'],
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
type: 'tip',
|
|
109
|
+
title: '梅西耶星表:您的目标清单',
|
|
110
|
+
html: '查尔斯·梅西耶在 1781 年编制了他著名的 110 个天体星表,以避免将它们与彗星混淆。今天,它是目视观测者的参考星表。这 110 个梅西耶天体(M1-M110)包括星云、星团和星系,在波特尔 4-5 级的天空下,使用 150mm 以下的望远镜即可全部观测到。',
|
|
111
|
+
},
|
|
112
|
+
{ type: 'title', text: '按类型和难度分类的特色天体', level: 2 },
|
|
113
|
+
{
|
|
114
|
+
type: 'paragraph',
|
|
115
|
+
html: '对于初学者来说,<strong>行星</strong>是最有成就感的目标:它们不需要暗空,即使是用小望远镜也能展现出令人惊讶的细节(40 倍下的土星环、80 倍下的木星条纹、火星极冠)。<strong>星云</strong>和 <strong>星系</strong> 需要更大的口径和更暗的天空,但会回馈您无与伦比的美丽全景。',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'stats',
|
|
119
|
+
columns: 2,
|
|
120
|
+
items: [
|
|
121
|
+
{ label: '人眼 (7mm)', value: '6.5 等', icon: 'mdi:eye' },
|
|
122
|
+
{ label: '70mm 折射镜', value: '12 等', icon: 'mdi:telescope' },
|
|
123
|
+
{ label: '200mm 杜布森镜', value: '14+ 等', icon: 'mdi:telescope' },
|
|
124
|
+
{ label: 'HST 哈勃太空望远镜', value: '31 等', icon: 'mdi:satellite-variant' },
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
];
|
|
128
|
+
|
|
129
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
130
|
+
'@context': 'https://schema.org',
|
|
131
|
+
'@type': 'FAQPage',
|
|
132
|
+
mainEntity: faq.map((item) => ({
|
|
133
|
+
'@type': 'Question',
|
|
134
|
+
name: item.question,
|
|
135
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
136
|
+
})),
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const howToSchema: WithContext<HowTo> = {
|
|
140
|
+
'@context': 'https://schema.org',
|
|
141
|
+
'@type': 'HowTo',
|
|
142
|
+
name: title,
|
|
143
|
+
description,
|
|
144
|
+
step: howTo.map((step) => ({
|
|
145
|
+
'@type': 'HowToStep',
|
|
146
|
+
name: step.name,
|
|
147
|
+
text: step.text,
|
|
148
|
+
})),
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
152
|
+
'@context': 'https://schema.org',
|
|
153
|
+
'@type': 'SoftwareApplication',
|
|
154
|
+
name: title,
|
|
155
|
+
description,
|
|
156
|
+
applicationCategory: 'UtilitiesApplication',
|
|
157
|
+
operatingSystem: 'Web',
|
|
158
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
159
|
+
inLanguage: 'zh',
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export const content: DeepSpaceScopeLocaleContent = {
|
|
163
|
+
slug,
|
|
164
|
+
title,
|
|
165
|
+
description,
|
|
166
|
+
ui,
|
|
167
|
+
seo,
|
|
168
|
+
faq,
|
|
169
|
+
bibliography,
|
|
170
|
+
howTo,
|
|
171
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
172
|
+
};
|
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
---
|
|
2
|
-
import type { EyepieceCalculatorUI } from './entry';
|
|
3
|
-
import './smart-eyepiece-calculator.css';
|
|
4
|
-
|
|
5
|
-
interface Props {
|
|
6
|
-
ui: EyepieceCalculatorUI;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const { ui } = Astro.props;
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
<script define:vars={{ ui }} is:inline>
|
|
13
|
-
window.__epcUI = ui;
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<div class="epc-wrapper" id="epc-root">
|
|
17
|
-
<div class="epc-layout">
|
|
18
|
-
<div class="epc-controls">
|
|
19
|
-
<section class="epc-section">
|
|
20
|
-
<h3 class="epc-section-title">{ui.telescopeTitle}</h3>
|
|
21
|
-
|
|
22
|
-
<div class="epc-control-group">
|
|
23
|
-
<label class="epc-label" for="epc-preset">{ui.presetsLabel}</label>
|
|
24
|
-
<select id="epc-preset" class="epc-select">
|
|
25
|
-
<option value="">{ui.presetsPlaceholder}</option>
|
|
26
|
-
<option value="60,700">Refractor 60/700 (f/11.6)</option>
|
|
27
|
-
<option value="72,400">Apo ED72 Astrofoto 72/400 (f/5.5)</option>
|
|
28
|
-
<option value="80,400">Refractor Gran Campo 80/400 (f/5)</option>
|
|
29
|
-
<option value="127,1000">Celestron 127EQ (f/7.9)</option>
|
|
30
|
-
<option value="130,650">Sky-Watcher 130/650 (f/5)</option>
|
|
31
|
-
<option value="150,1500">Maksutov 150/1500 (f/10)</option>
|
|
32
|
-
<option value="200,1200">Dobson 8" 200/1200 (f/6)</option>
|
|
33
|
-
<option value="300,1500">Dobson 12" Gigante 300/1500 (f/5)</option>
|
|
34
|
-
</select>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<div class="epc-grid-2">
|
|
38
|
-
<div class="epc-control-group">
|
|
39
|
-
<label class="epc-label" title={ui.apertureHelp} for="epc-aperture">
|
|
40
|
-
{ui.apertureLabel}
|
|
41
|
-
<svg class="epc-info-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
|
|
42
|
-
</label>
|
|
43
|
-
<input type="number" id="epc-aperture" class="epc-input" placeholder="Ej: 150" />
|
|
44
|
-
</div>
|
|
45
|
-
<div class="epc-control-group">
|
|
46
|
-
<label class="epc-label" title={ui.focalHelp} for="epc-focal">
|
|
47
|
-
{ui.focalLabel}
|
|
48
|
-
<svg class="epc-info-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
|
|
49
|
-
</label>
|
|
50
|
-
<input type="number" id="epc-focal" class="epc-input" placeholder="Ej: 750" />
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
</section>
|
|
54
|
-
|
|
55
|
-
<section class="epc-section">
|
|
56
|
-
<h3 class="epc-section-title">{ui.eyepiecesTitle}</h3>
|
|
57
|
-
<div id="epc-cards-container" class="epc-cards-container"></div>
|
|
58
|
-
<button id="epc-add-btn" class="epc-btn-primary">{ui.addEyepieceBtn}</button>
|
|
59
|
-
</section>
|
|
60
|
-
</div>
|
|
61
|
-
|
|
62
|
-
<div class="epc-simulator-panel">
|
|
63
|
-
<h3 class="epc-section-title">{ui.simulatorTitle}</h3>
|
|
64
|
-
|
|
65
|
-
<div class="epc-control-group">
|
|
66
|
-
<select id="epc-target" class="epc-select" aria-label={ui.targetLabel}>
|
|
67
|
-
<option value="moon">{ui.targetMoon} (0.5°)</option>
|
|
68
|
-
<option value="pleiades">{ui.targetPleiades} (1.8°)</option>
|
|
69
|
-
<option value="andromeda">{ui.targetAndromeda} (3.16°)</option>
|
|
70
|
-
<option value="m13">{ui.targetM13} (0.33°)</option>
|
|
71
|
-
<option value="saturn">{ui.targetSaturn} (0.012°)</option>
|
|
72
|
-
</select>
|
|
73
|
-
</div>
|
|
74
|
-
|
|
75
|
-
<div class="epc-sim-container">
|
|
76
|
-
<div class="epc-sim-canvas" id="epc-sim-canvas">
|
|
77
|
-
<div class="epc-sim-target" id="epc-sim-target"></div>
|
|
78
|
-
<div class="epc-sim-noise" id="epc-sim-noise"></div>
|
|
79
|
-
<div id="epc-sim-masks"></div>
|
|
80
|
-
</div>
|
|
81
|
-
</div>
|
|
82
|
-
|
|
83
|
-
<div id="epc-feedback-status" class="epc-feedback-card"></div>
|
|
84
|
-
|
|
85
|
-
<div class="epc-cta-box" id="epc-cta">
|
|
86
|
-
{ui.ctaText}
|
|
87
|
-
</div>
|
|
88
|
-
</div>
|
|
89
|
-
</div>
|
|
90
|
-
</div>
|
|
91
|
-
|
|
92
|
-
<template id="epc-card-template">
|
|
93
|
-
<div class="epc-card">
|
|
94
|
-
<div class="epc-card-header">
|
|
95
|
-
<span class="epc-card-title">Ocular</span>
|
|
96
|
-
<button class="epc-card-remove"><svg viewBox="0 0 24 24" fill="none" class="epc-icon"><path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></button>
|
|
97
|
-
</div>
|
|
98
|
-
<div class="epc-grid-2">
|
|
99
|
-
<div class="epc-control-group">
|
|
100
|
-
<label class="epc-label" title="Focal del ocular en mm">Focal (mm)</label>
|
|
101
|
-
<input type="number" class="epc-input epc-ep-focal" placeholder="Ej: 10" aria-label={ui.eyepieceFocal} />
|
|
102
|
-
</div>
|
|
103
|
-
<div class="epc-control-group">
|
|
104
|
-
<label class="epc-label" title="Campo aparente en grados">AFOV (°)</label>
|
|
105
|
-
<input type="number" class="epc-input epc-ep-afov" placeholder="Ej: 52" value="52" aria-label={ui.eyepieceAfov} />
|
|
106
|
-
</div>
|
|
107
|
-
</div>
|
|
108
|
-
<div class="epc-card-results">
|
|
109
|
-
<div class="epc-stat"><span class="epc-stat-val" data-type="mag">--</span><span class="epc-stat-lbl">x</span></div>
|
|
110
|
-
<div class="epc-stat"><span class="epc-stat-val" data-type="tfov">--</span><span class="epc-stat-lbl">°</span></div>
|
|
111
|
-
<div class="epc-stat"><span class="epc-stat-val" data-type="pupil">--</span><span class="epc-stat-lbl">mm</span></div>
|
|
112
|
-
</div>
|
|
113
|
-
</div>
|
|
114
|
-
</template>
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
<script>
|
|
119
|
-
import { EyepieceApp } from './app';
|
|
120
|
-
|
|
121
|
-
if (typeof window !== 'undefined') {
|
|
122
|
-
const win = window as unknown as { __epcUI: Record<string, string> };
|
|
123
|
-
new EyepieceApp(win.__epcUI);
|
|
124
|
-
}
|
|
125
|
-
</script>
|
|
1
|
+
---
|
|
2
|
+
import type { EyepieceCalculatorUI } from './entry';
|
|
3
|
+
import './smart-eyepiece-calculator.css';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
ui: EyepieceCalculatorUI;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const { ui } = Astro.props;
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<script define:vars={{ ui }} is:inline>
|
|
13
|
+
window.__epcUI = ui;
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<div class="epc-wrapper" id="epc-root">
|
|
17
|
+
<div class="epc-layout">
|
|
18
|
+
<div class="epc-controls">
|
|
19
|
+
<section class="epc-section">
|
|
20
|
+
<h3 class="epc-section-title">{ui.telescopeTitle}</h3>
|
|
21
|
+
|
|
22
|
+
<div class="epc-control-group">
|
|
23
|
+
<label class="epc-label" for="epc-preset">{ui.presetsLabel}</label>
|
|
24
|
+
<select id="epc-preset" class="epc-select">
|
|
25
|
+
<option value="">{ui.presetsPlaceholder}</option>
|
|
26
|
+
<option value="60,700">Refractor 60/700 (f/11.6)</option>
|
|
27
|
+
<option value="72,400">Apo ED72 Astrofoto 72/400 (f/5.5)</option>
|
|
28
|
+
<option value="80,400">Refractor Gran Campo 80/400 (f/5)</option>
|
|
29
|
+
<option value="127,1000">Celestron 127EQ (f/7.9)</option>
|
|
30
|
+
<option value="130,650">Sky-Watcher 130/650 (f/5)</option>
|
|
31
|
+
<option value="150,1500">Maksutov 150/1500 (f/10)</option>
|
|
32
|
+
<option value="200,1200">Dobson 8" 200/1200 (f/6)</option>
|
|
33
|
+
<option value="300,1500">Dobson 12" Gigante 300/1500 (f/5)</option>
|
|
34
|
+
</select>
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<div class="epc-grid-2">
|
|
38
|
+
<div class="epc-control-group">
|
|
39
|
+
<label class="epc-label" title={ui.apertureHelp} for="epc-aperture">
|
|
40
|
+
{ui.apertureLabel}
|
|
41
|
+
<svg class="epc-info-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
|
|
42
|
+
</label>
|
|
43
|
+
<input type="number" id="epc-aperture" class="epc-input" placeholder="Ej: 150" />
|
|
44
|
+
</div>
|
|
45
|
+
<div class="epc-control-group">
|
|
46
|
+
<label class="epc-label" title={ui.focalHelp} for="epc-focal">
|
|
47
|
+
{ui.focalLabel}
|
|
48
|
+
<svg class="epc-info-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
|
|
49
|
+
</label>
|
|
50
|
+
<input type="number" id="epc-focal" class="epc-input" placeholder="Ej: 750" />
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</section>
|
|
54
|
+
|
|
55
|
+
<section class="epc-section">
|
|
56
|
+
<h3 class="epc-section-title">{ui.eyepiecesTitle}</h3>
|
|
57
|
+
<div id="epc-cards-container" class="epc-cards-container"></div>
|
|
58
|
+
<button id="epc-add-btn" class="epc-btn-primary">{ui.addEyepieceBtn}</button>
|
|
59
|
+
</section>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div class="epc-simulator-panel">
|
|
63
|
+
<h3 class="epc-section-title">{ui.simulatorTitle}</h3>
|
|
64
|
+
|
|
65
|
+
<div class="epc-control-group">
|
|
66
|
+
<select id="epc-target" class="epc-select" aria-label={ui.targetLabel}>
|
|
67
|
+
<option value="moon">{ui.targetMoon} (0.5°)</option>
|
|
68
|
+
<option value="pleiades">{ui.targetPleiades} (1.8°)</option>
|
|
69
|
+
<option value="andromeda">{ui.targetAndromeda} (3.16°)</option>
|
|
70
|
+
<option value="m13">{ui.targetM13} (0.33°)</option>
|
|
71
|
+
<option value="saturn">{ui.targetSaturn} (0.012°)</option>
|
|
72
|
+
</select>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<div class="epc-sim-container">
|
|
76
|
+
<div class="epc-sim-canvas" id="epc-sim-canvas">
|
|
77
|
+
<div class="epc-sim-target" id="epc-sim-target"></div>
|
|
78
|
+
<div class="epc-sim-noise" id="epc-sim-noise"></div>
|
|
79
|
+
<div id="epc-sim-masks"></div>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<div id="epc-feedback-status" class="epc-feedback-card"></div>
|
|
84
|
+
|
|
85
|
+
<div class="epc-cta-box" id="epc-cta">
|
|
86
|
+
{ui.ctaText}
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<template id="epc-card-template">
|
|
93
|
+
<div class="epc-card">
|
|
94
|
+
<div class="epc-card-header">
|
|
95
|
+
<span class="epc-card-title">Ocular</span>
|
|
96
|
+
<button class="epc-card-remove"><svg viewBox="0 0 24 24" fill="none" class="epc-icon"><path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></button>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="epc-grid-2">
|
|
99
|
+
<div class="epc-control-group">
|
|
100
|
+
<label class="epc-label" title="Focal del ocular en mm">Focal (mm)</label>
|
|
101
|
+
<input type="number" class="epc-input epc-ep-focal" placeholder="Ej: 10" aria-label={ui.eyepieceFocal} />
|
|
102
|
+
</div>
|
|
103
|
+
<div class="epc-control-group">
|
|
104
|
+
<label class="epc-label" title="Campo aparente en grados">AFOV (°)</label>
|
|
105
|
+
<input type="number" class="epc-input epc-ep-afov" placeholder="Ej: 52" value="52" aria-label={ui.eyepieceAfov} />
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="epc-card-results">
|
|
109
|
+
<div class="epc-stat"><span class="epc-stat-val" data-type="mag">--</span><span class="epc-stat-lbl">x</span></div>
|
|
110
|
+
<div class="epc-stat"><span class="epc-stat-val" data-type="tfov">--</span><span class="epc-stat-lbl">°</span></div>
|
|
111
|
+
<div class="epc-stat"><span class="epc-stat-val" data-type="pupil">--</span><span class="epc-stat-lbl">mm</span></div>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
</template>
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
<script>
|
|
119
|
+
import { EyepieceApp } from './app';
|
|
120
|
+
|
|
121
|
+
if (typeof window !== 'undefined') {
|
|
122
|
+
const win = window as unknown as { __epcUI: Record<string, string> };
|
|
123
|
+
new EyepieceApp(win.__epcUI);
|
|
124
|
+
}
|
|
125
|
+
</script>
|