@jjlmoya/utils-science 1.50.0 → 1.52.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/es.ts +3 -4
- package/src/category/i18n/fr.ts +2 -2
- package/src/category/i18n/it.ts +2 -2
- package/src/category/i18n/pt.ts +2 -2
- package/src/category/index.ts +25 -25
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/data.ts +1 -1
- package/src/env.d.ts +1 -1
- package/src/layouts/PreviewLayout.astro +1 -1
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +76 -0
- package/src/tests/faq_count.test.ts +19 -19
- package/src/tests/i18n_coverage.test.ts +36 -36
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/script_density.test.ts +94 -94
- package/src/tests/seo_length.test.ts +24 -24
- package/src/tests/seo_parity.test.ts +5 -5
- package/src/tests/seo_translation_completeness.test.ts +76 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/spanish_leakage.test.ts +175 -153
- package/src/tool/asteroid-impact/component.astro +251 -251
- package/src/tool/asteroid-impact/helpers.ts +17 -17
- package/src/tool/asteroid-impact/i18n/de.ts +2 -2
- package/src/tool/asteroid-impact/i18n/en.ts +2 -2
- package/src/tool/asteroid-impact/i18n/es.ts +2 -2
- package/src/tool/asteroid-impact/i18n/fr.ts +2 -2
- package/src/tool/asteroid-impact/i18n/id.ts +2 -2
- package/src/tool/asteroid-impact/i18n/it.ts +2 -2
- package/src/tool/asteroid-impact/i18n/ja.ts +2 -2
- package/src/tool/asteroid-impact/i18n/ko.ts +2 -2
- package/src/tool/asteroid-impact/i18n/nl.ts +2 -2
- package/src/tool/asteroid-impact/i18n/pl.ts +2 -2
- package/src/tool/asteroid-impact/i18n/pt.ts +2 -2
- package/src/tool/asteroid-impact/i18n/ru.ts +2 -2
- package/src/tool/asteroid-impact/i18n/sv.ts +2 -2
- package/src/tool/asteroid-impact/i18n/tr.ts +2 -2
- package/src/tool/asteroid-impact/i18n/zh.ts +2 -2
- package/src/tool/asteroid-impact/script.ts +262 -262
- package/src/tool/asteroid-impact/seo.astro +15 -15
- package/src/tool/asteroid-impact/ui.ts +69 -69
- package/src/tool/black-hole-event-horizon-simulator/i18n/de.ts +249 -241
- package/src/tool/black-hole-event-horizon-simulator/i18n/fr.ts +252 -247
- package/src/tool/black-hole-event-horizon-simulator/i18n/id.ts +259 -259
- package/src/tool/black-hole-event-horizon-simulator/i18n/it.ts +255 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/ja.ts +254 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/ko.ts +258 -258
- package/src/tool/black-hole-event-horizon-simulator/i18n/nl.ts +256 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/pl.ts +258 -258
- package/src/tool/black-hole-event-horizon-simulator/i18n/pt.ts +256 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/ru.ts +258 -258
- package/src/tool/black-hole-event-horizon-simulator/i18n/sv.ts +257 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/tr.ts +256 -251
- package/src/tool/black-hole-event-horizon-simulator/i18n/zh.ts +261 -252
- package/src/tool/cellular-renewal/component.astro +126 -126
- package/src/tool/cellular-renewal/i18n/de.ts +1 -1
- package/src/tool/cellular-renewal/i18n/en.ts +1 -1
- package/src/tool/cellular-renewal/i18n/es.ts +1 -1
- package/src/tool/cellular-renewal/i18n/fr.ts +1 -1
- package/src/tool/cellular-renewal/i18n/id.ts +1 -1
- package/src/tool/cellular-renewal/i18n/it.ts +1 -1
- package/src/tool/cellular-renewal/i18n/ja.ts +1 -1
- package/src/tool/cellular-renewal/i18n/ko.ts +1 -1
- package/src/tool/cellular-renewal/i18n/nl.ts +1 -1
- package/src/tool/cellular-renewal/i18n/pl.ts +1 -1
- package/src/tool/cellular-renewal/i18n/pt.ts +1 -1
- package/src/tool/cellular-renewal/i18n/ru.ts +1 -1
- package/src/tool/cellular-renewal/i18n/sv.ts +1 -1
- package/src/tool/cellular-renewal/i18n/tr.ts +1 -1
- package/src/tool/cellular-renewal/i18n/zh.ts +1 -1
- package/src/tool/cellular-renewal/seo.astro +15 -15
- package/src/tool/colony-counter/i18n/de.ts +1 -1
- package/src/tool/colony-counter/i18n/en.ts +1 -1
- package/src/tool/colony-counter/i18n/es.ts +1 -1
- package/src/tool/colony-counter/i18n/fr.ts +1 -1
- package/src/tool/colony-counter/i18n/id.ts +1 -1
- package/src/tool/colony-counter/i18n/it.ts +1 -1
- package/src/tool/colony-counter/i18n/ja.ts +1 -1
- package/src/tool/colony-counter/i18n/ko.ts +1 -1
- package/src/tool/colony-counter/i18n/nl.ts +1 -1
- package/src/tool/colony-counter/i18n/pl.ts +1 -1
- package/src/tool/colony-counter/i18n/pt.ts +1 -1
- package/src/tool/colony-counter/i18n/ru.ts +1 -1
- package/src/tool/colony-counter/i18n/sv.ts +1 -1
- package/src/tool/colony-counter/i18n/tr.ts +1 -1
- package/src/tool/colony-counter/i18n/zh.ts +1 -1
- package/src/tool/colony-counter/seo.astro +15 -15
- package/src/tool/conway-life-rule-lab/component.astro +1 -1
- package/src/tool/conway-life-rule-lab/i18n/de.ts +145 -141
- package/src/tool/conway-life-rule-lab/i18n/es.ts +146 -142
- package/src/tool/conway-life-rule-lab/i18n/fr.ts +146 -142
- package/src/tool/conway-life-rule-lab/i18n/id.ts +146 -145
- package/src/tool/conway-life-rule-lab/i18n/it.ts +146 -145
- package/src/tool/conway-life-rule-lab/i18n/ja.ts +146 -145
- package/src/tool/conway-life-rule-lab/i18n/ko.ts +146 -145
- package/src/tool/conway-life-rule-lab/i18n/nl.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/pl.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/pt.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/ru.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/sv.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/tr.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/zh.ts +147 -145
- package/src/tool/conway-life-rule-lab/logic/LifeLabRuntime.ts +2 -2
- package/src/tool/cosmic-inflation/i18n/ru.ts +105 -105
- package/src/tool/crystal-lattice-structure-finder/i18n/de.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/en.ts +1 -1
- package/src/tool/crystal-lattice-structure-finder/i18n/es.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/fr.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/id.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/it.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/ja.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/ko.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/nl.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/pl.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/pt.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/ru.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/sv.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/tr.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/zh.ts +217 -217
- package/src/tool/double-slit-decoherence/i18n/de.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/fr.ts +180 -180
- package/src/tool/double-slit-decoherence/i18n/id.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/it.ts +180 -180
- package/src/tool/double-slit-decoherence/i18n/ja.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/ko.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/nl.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/pl.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/pt.ts +178 -174
- package/src/tool/double-slit-decoherence/i18n/ru.ts +180 -180
- package/src/tool/double-slit-decoherence/i18n/sv.ts +176 -172
- package/src/tool/double-slit-decoherence/i18n/tr.ts +180 -180
- package/src/tool/double-slit-decoherence/i18n/zh.ts +181 -181
- package/src/tool/dyson-sphere-energy-capture/component.astro +253 -253
- package/src/tool/dyson-sphere-energy-capture/i18n/de.ts +194 -194
- package/src/tool/dyson-sphere-energy-capture/i18n/en.ts +6 -6
- package/src/tool/dyson-sphere-energy-capture/i18n/es.ts +6 -6
- package/src/tool/dyson-sphere-energy-capture/i18n/fr.ts +194 -194
- package/src/tool/dyson-sphere-energy-capture/i18n/id.ts +195 -195
- package/src/tool/dyson-sphere-energy-capture/i18n/it.ts +194 -194
- package/src/tool/dyson-sphere-energy-capture/i18n/ja.ts +194 -190
- package/src/tool/dyson-sphere-energy-capture/i18n/ko.ts +194 -193
- package/src/tool/dyson-sphere-energy-capture/i18n/nl.ts +197 -197
- package/src/tool/dyson-sphere-energy-capture/i18n/pl.ts +168 -166
- package/src/tool/dyson-sphere-energy-capture/i18n/pt.ts +194 -193
- package/src/tool/dyson-sphere-energy-capture/i18n/ru.ts +195 -193
- package/src/tool/dyson-sphere-energy-capture/i18n/sv.ts +195 -193
- package/src/tool/dyson-sphere-energy-capture/i18n/tr.ts +168 -166
- package/src/tool/dyson-sphere-energy-capture/i18n/zh.ts +194 -193
- package/src/tool/epidemic-sir-simulator/i18n/de.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/es.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/fr.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/it.ts +346 -346
- package/src/tool/epidemic-sir-simulator/i18n/nl.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/ru.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/sv.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/zh.ts +347 -347
- package/src/tool/exoplanet-biosignature-detector/i18n/de.ts +186 -186
- package/src/tool/exoplanet-biosignature-detector/i18n/en.ts +195 -195
- package/src/tool/exoplanet-biosignature-detector/i18n/es.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/fr.ts +183 -183
- package/src/tool/exoplanet-biosignature-detector/i18n/id.ts +193 -193
- package/src/tool/exoplanet-biosignature-detector/i18n/it.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/ja.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/ko.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/nl.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/pl.ts +144 -144
- package/src/tool/exoplanet-biosignature-detector/i18n/pt.ts +146 -146
- package/src/tool/exoplanet-biosignature-detector/i18n/ru.ts +143 -143
- package/src/tool/exoplanet-biosignature-detector/i18n/sv.ts +144 -144
- package/src/tool/exoplanet-biosignature-detector/i18n/tr.ts +145 -145
- package/src/tool/exoplanet-biosignature-detector/i18n/zh.ts +194 -194
- package/src/tool/global-albedo-snowball-simulator/component.astro +1 -1
- package/src/tool/global-albedo-snowball-simulator/i18n/de.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/fr.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/id.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/it.ts +87 -87
- package/src/tool/global-albedo-snowball-simulator/i18n/ja.ts +87 -87
- package/src/tool/global-albedo-snowball-simulator/i18n/ko.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/nl.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/pl.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/pt.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/ru.ts +165 -161
- package/src/tool/global-albedo-snowball-simulator/i18n/sv.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/tr.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/zh.ts +169 -169
- package/src/tool/lorenz-attractor/i18n/de.ts +144 -143
- package/src/tool/lorenz-attractor/i18n/fr.ts +144 -144
- package/src/tool/lorenz-attractor/i18n/id.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/it.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/ja.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/ko.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/nl.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/pl.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/pt.ts +142 -141
- package/src/tool/lorenz-attractor/i18n/ru.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/sv.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/tr.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/zh.ts +149 -149
- package/src/tool/mandelbrot-fractal/i18n/de.ts +158 -158
- package/src/tool/mandelbrot-fractal/i18n/fr.ts +158 -158
- package/src/tool/mandelbrot-fractal/i18n/id.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/it.ts +155 -151
- package/src/tool/mandelbrot-fractal/i18n/ja.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/ko.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/nl.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/pl.ts +157 -153
- package/src/tool/mandelbrot-fractal/i18n/pt.ts +158 -158
- package/src/tool/mandelbrot-fractal/i18n/ru.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/sv.ts +159 -150
- package/src/tool/mandelbrot-fractal/i18n/tr.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/zh.ts +159 -159
- package/src/tool/microwave-detector/component.astro +238 -238
- package/src/tool/microwave-detector/i18n/de.ts +1 -1
- package/src/tool/microwave-detector/i18n/en.ts +1 -1
- package/src/tool/microwave-detector/i18n/es.ts +1 -1
- package/src/tool/microwave-detector/i18n/fr.ts +1 -1
- package/src/tool/microwave-detector/i18n/id.ts +1 -1
- package/src/tool/microwave-detector/i18n/it.ts +1 -1
- package/src/tool/microwave-detector/i18n/ja.ts +1 -1
- package/src/tool/microwave-detector/i18n/ko.ts +1 -1
- package/src/tool/microwave-detector/i18n/nl.ts +1 -1
- package/src/tool/microwave-detector/i18n/pl.ts +1 -1
- package/src/tool/microwave-detector/i18n/pt.ts +1 -1
- package/src/tool/microwave-detector/i18n/ru.ts +1 -1
- package/src/tool/microwave-detector/i18n/sv.ts +1 -1
- package/src/tool/microwave-detector/i18n/tr.ts +1 -1
- package/src/tool/microwave-detector/i18n/zh.ts +1 -1
- package/src/tool/microwave-detector/seo.astro +15 -15
- package/src/tool/natural-selection-drift/component.astro +135 -135
- package/src/tool/natural-selection-drift/i18n/de.ts +164 -160
- package/src/tool/natural-selection-drift/i18n/fr.ts +204 -204
- package/src/tool/natural-selection-drift/i18n/id.ts +156 -154
- package/src/tool/natural-selection-drift/i18n/it.ts +197 -193
- package/src/tool/natural-selection-drift/i18n/ja.ts +155 -154
- package/src/tool/natural-selection-drift/i18n/ko.ts +155 -154
- package/src/tool/natural-selection-drift/i18n/nl.ts +164 -163
- package/src/tool/natural-selection-drift/i18n/pl.ts +168 -166
- package/src/tool/natural-selection-drift/i18n/pt.ts +200 -195
- package/src/tool/natural-selection-drift/i18n/ru.ts +186 -184
- package/src/tool/natural-selection-drift/i18n/sv.ts +157 -154
- package/src/tool/natural-selection-drift/i18n/tr.ts +186 -184
- package/src/tool/natural-selection-drift/i18n/zh.ts +160 -154
- package/src/tool/natural-selection-drift/natural-selection-drift.css +563 -563
- package/src/tool/phase-diagram-critical-points/i18n/de.ts +178 -178
- package/src/tool/phase-diagram-critical-points/i18n/fr.ts +178 -178
- package/src/tool/phase-diagram-critical-points/i18n/id.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/it.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/ja.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/ko.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/nl.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/pl.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/pt.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/ru.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/sv.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/tr.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/zh.ts +179 -179
- package/src/tool/planet-atmosphere-survival/i18n/de.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/fr.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/id.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/it.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/ja.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/ko.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/nl.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/pl.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/pt.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/ru.ts +227 -223
- package/src/tool/planet-atmosphere-survival/i18n/sv.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/tr.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/zh.ts +255 -255
- package/src/tool/radioactive-decay/i18n/de.ts +168 -164
- package/src/tool/radioactive-decay/i18n/fr.ts +76 -75
- package/src/tool/radioactive-decay/i18n/id.ts +169 -165
- package/src/tool/radioactive-decay/i18n/it.ts +76 -74
- package/src/tool/radioactive-decay/i18n/ja.ts +168 -167
- package/src/tool/radioactive-decay/i18n/ko.ts +168 -167
- package/src/tool/radioactive-decay/i18n/nl.ts +170 -168
- package/src/tool/radioactive-decay/i18n/pl.ts +170 -168
- package/src/tool/radioactive-decay/i18n/pt.ts +169 -167
- package/src/tool/radioactive-decay/i18n/ru.ts +170 -168
- package/src/tool/radioactive-decay/i18n/sv.ts +170 -168
- package/src/tool/radioactive-decay/i18n/tr.ts +171 -168
- package/src/tool/radioactive-decay/i18n/zh.ts +171 -167
- package/src/tool/roche-limit-satellite-disruption/i18n/de.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/fr.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/id.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/it.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/ja.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/ko.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/nl.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/pl.ts +237 -229
- package/src/tool/roche-limit-satellite-disruption/i18n/pt.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/ru.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/sv.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/tr.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/zh.ts +241 -241
- package/src/tool/simulation-probability/component.astro +138 -138
- package/src/tool/simulation-probability/i18n/de.ts +1 -1
- package/src/tool/simulation-probability/i18n/en.ts +1 -1
- package/src/tool/simulation-probability/i18n/es.ts +1 -1
- package/src/tool/simulation-probability/i18n/fr.ts +1 -1
- package/src/tool/simulation-probability/i18n/id.ts +1 -1
- package/src/tool/simulation-probability/i18n/it.ts +1 -1
- package/src/tool/simulation-probability/i18n/ja.ts +1 -1
- package/src/tool/simulation-probability/i18n/ko.ts +1 -1
- package/src/tool/simulation-probability/i18n/nl.ts +1 -1
- package/src/tool/simulation-probability/i18n/pl.ts +1 -1
- package/src/tool/simulation-probability/i18n/pt.ts +1 -1
- package/src/tool/simulation-probability/i18n/ru.ts +1 -1
- package/src/tool/simulation-probability/i18n/sv.ts +1 -1
- package/src/tool/simulation-probability/i18n/tr.ts +1 -1
- package/src/tool/simulation-probability/i18n/zh.ts +1 -1
- package/src/tool/simulation-probability/seo.astro +15 -15
- package/src/tool/stellar-habitability-zone/i18n/ru.ts +189 -189
- package/src/tool/temperature-timeline/i18n/de.ts +2 -1
- package/src/tool/temperature-timeline/i18n/fr.ts +177 -177
- package/src/tool/temperature-timeline/i18n/it.ts +142 -141
- package/src/tool/temperature-timeline/i18n/pt.ts +3 -1
- package/src/tool/temperature-timeline/i18n/ru.ts +116 -114
- package/src/tool/three-body-problem/app.ts +4 -4
- package/src/tool/three-body-problem/component.astro +6 -6
- package/src/tool/twin-paradox-visualizer/i18n/de.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/es.ts +165 -165
- package/src/tool/twin-paradox-visualizer/i18n/fr.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/id.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/it.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/ja.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/ko.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/nl.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/pl.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/pt.ts +164 -160
- package/src/tool/twin-paradox-visualizer/i18n/ru.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/sv.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/tr.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/zh.ts +168 -168
- package/src/types.ts +1 -1
|
@@ -1,159 +1,159 @@
|
|
|
1
|
-
import { bibliography } from '../bibliography';
|
|
2
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
-
|
|
4
|
-
const slug = 'mandelbrot-fraktal-rechner';
|
|
5
|
-
const title = 'Mandelbrot Fraktal Rechner & Selbstähnlichkeits Explorer';
|
|
6
|
-
const description = 'Erkunden Sie die Mandelbrot-Menge, zoomen Sie in selbstähnliche Fraktalgrenzen hinein und vergleichen Sie Iterationstiefe, Farbkontrast und Koordinaten der komplexen Ebene.';
|
|
7
|
-
|
|
8
|
-
const howTo = [
|
|
9
|
-
{
|
|
10
|
-
name: 'Wählen Sie eine Region der Mandelbrot-Menge',
|
|
11
|
-
text: 'Beginnen Sie mit der gesamten Menge oder springen Sie direkt zu einer detailreichen Region wie dem Seepferdchental oder einem spiralförmigen Minibrot.',
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: 'Zoomen Sie durch Klicken auf das Bild',
|
|
15
|
-
text: 'Klicken Sie auf einen beliebigen Punkt auf der Leinwand, um die komplexe Ebene neu zu zentrieren und den Fraktal um diesen Punkt zu vergrößern.',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: 'Passen Sie Iterationstiefe und Farbkontrast an',
|
|
19
|
-
text: 'Erhöhen Sie das Iterationsbudget, um feinere Grenzstrukturen sichtbar zu machen, und passen Sie dann Kontrast und Farbpalette an, um die Fluchtzeitbänder besser lesbar zu machen.',
|
|
20
|
-
},
|
|
21
|
-
];
|
|
22
|
-
|
|
23
|
-
const faq = [
|
|
24
|
-
{
|
|
25
|
-
question: 'Was zeigt der Mandelbrot-Mengen-Rechner?',
|
|
26
|
-
answer: 'Er zeigt, welche komplexen Zahlen c die Rekursion z(n+1) = z(n)^2 + c beschränkt halten, wenn man bei z = 0 beginnt. Punkte, die innerhalb des gewählten Iterationsbudgets nie entkommen, werden als Elemente der Menge eingefärbt, während äußere Punkte danach gefärbt werden, wie schnell ihre Umlaufbahn entkommt.',
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
question: 'Warum enthält der Mandelbrot-Rand so viele Details?',
|
|
30
|
-
answer: 'Der Rand trennt stabile und entkommende Umlaufbahnen. Schon winzige Koordinatenänderungen in der Nähe dieses Randes können das Langzeitverhalten vollständig verändern. Diese Empfindlichkeit erzeugt ineinander verschachtelte Knoten, Spiralen, Filamente und miniaturisierte Kopien, die auf vielen Vergrößerungsstufen erscheinen.',
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
question: 'Ist die Mandelbrot-Menge wirklich selbstähnlich?',
|
|
34
|
-
answer: 'Sie ist nicht perfekt selbstähnlich im gleichen strengen Sinne wie ein Sierpinski-Dreieck, aber sie ist reichhaltig quasi-selbstähnlich. Kleine Kopien der gesamten Menge erscheinen überall in der Ebene, oft verzerrt und durch aufwändige verzweigte Strukturen verbunden.',
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
question: 'Was steuert die Iterationsanzahl?',
|
|
38
|
-
answer: 'Die Iterationsanzahl bestimmt, wie lange der Rechner jeden Punkt testet, bevor er entscheidet, dass er wahrscheinlich zur Menge gehört. Höhere Werte legen tiefere Filamente und sauberere Minibrots frei, erfordern aber mehr Berechnung pro Pixel.',
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
question: 'Warum ändern sich die Farben außerhalb des schwarzen Bereichs?',
|
|
42
|
-
answer: 'Die Farben außen basieren auf der Fluchtzeit: Punkte, die schnell entkommen, erhalten andere Farben als Punkte, die viele Iterationen in der Nähe der Menge bleiben. Glättende Farbgebung reduziert harte Bänder und erleichtert die Untersuchung der Geometrie benachbarter Umlaufbahnen.',
|
|
43
|
-
},
|
|
44
|
-
];
|
|
45
|
-
|
|
46
|
-
export const content: ToolLocaleContent = {
|
|
47
|
-
slug,
|
|
48
|
-
title,
|
|
49
|
-
description,
|
|
50
|
-
ui: {
|
|
51
|
-
title: 'Mandelbrot Fraktal Rechner',
|
|
52
|
-
canvasLabel: 'Interaktive Mandelbrot-Mengen-Leinwand',
|
|
53
|
-
presetsLabel: 'Mandelbrot-Region-Voreinstellungen',
|
|
54
|
-
presetFull: 'Gesamte Menge',
|
|
55
|
-
presetSeahorse: 'Seepferdchental',
|
|
56
|
-
presetSpiral: 'Spiral-Minibrot',
|
|
57
|
-
centerPoint: 'Zentrum',
|
|
58
|
-
magnification: 'Vergrößerung',
|
|
59
|
-
visibleWindow: 'Sichtbarer Ausschnitt',
|
|
60
|
-
renderBudget: 'Iterationen',
|
|
61
|
-
iterationsLabel: 'Iterationstiefe',
|
|
62
|
-
contrastLabel: 'Fluchtkontrast',
|
|
63
|
-
colorLabel: 'Farbfeld',
|
|
64
|
-
paletteEmber: 'Glutbänder',
|
|
65
|
-
paletteLagoon: 'Lagunen-Plasma',
|
|
66
|
-
paletteInk: 'Tinten-Spektrum',
|
|
67
|
-
},
|
|
68
|
-
seo: [
|
|
69
|
-
{
|
|
70
|
-
type: 'title',
|
|
71
|
-
text: 'Mandelbrot-Mengen-Rechner für Fraktale, Fluchtzeit und Selbstähnlichkeit',
|
|
72
|
-
level: 2,
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
type: 'paragraph',
|
|
76
|
-
html: 'Dieser Mandelbrot-Fraktal-Rechner rendert die klassische Menge der komplexen Ebene, definiert durch die Iteration <strong>z(n+1) = z(n)^2 + c</strong>. Er ist für die Erkundung konzipiert, nicht für die passive Betrachtung. Jeder Klick zentriert die Ebene neu, jeder Zoom legt eine kleinere mathematische Nachbarschaft frei, und der Iterationsschieberegler lässt Sie entscheiden, wie tief der Rechner die Grenze testen soll, bevor er einen Punkt als stabil oder entweichend färbt.',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
type: 'title',
|
|
80
|
-
text: 'Wie man das Mandelbrot-Bild liest',
|
|
81
|
-
level: 3,
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: 'paragraph',
|
|
85
|
-
html: 'Die dunkle zentrale Form markiert Punkte, deren Umlaufbahnen innerhalb des aktuellen Iterationsbudgets beschränkt bleiben. Die farbige Außenseite ist eine Fluchtzeitkarte. Ein Punkt, der nahe der Menge gefärbt ist, kann hunderte von Iterationen überstehen, bevor sein Betrag den Fluchtradius überschreitet, während ein weit entfernter Punkt fast sofort entkommt. Die wissenschaftlich interessanteste Geometrie befindet sich normalerweise nicht innerhalb der gefüllten Form, sondern entlang der Grenze, wo beschränktes und unbeschränktes Verhalten ineinandergreifen.',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
type: 'table',
|
|
89
|
-
headers: ['Steuerung', 'Was sie ändert', 'Wann erhöhen'],
|
|
90
|
-
rows: [
|
|
91
|
-
['<strong>Iterationstiefe</strong>', 'Wie viele Rekursionsschritte für jeden Pixel getestet werden.', 'Höhere Werte nach dem Zoomen in dünne Filamente oder miniaturisierte Kopien verwenden.'],
|
|
92
|
-
['<strong>Fluchtkontrast</strong>', 'Wie stark glatte Fluchtwerte in sichtbare Bänder getrennt werden.', 'Erhöhen, wenn das Bild flach aussieht; senken, wenn die Farben zu hart sind.'],
|
|
93
|
-
['<strong>Palette</strong>', 'Die Farbzuordnung, die auf äußere Punkte angewendet wird.', 'Paletten wechseln, um Strukturen sichtbar zu machen, die von einem Farbfeld verdeckt werden könnten.'],
|
|
94
|
-
],
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
type: 'title',
|
|
98
|
-
text: 'Selbstähnlichkeit und Minibrots',
|
|
99
|
-
level: 3,
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
type: 'paragraph',
|
|
103
|
-
html: 'Ein Grund für die Berühmtheit der Mandelbrot-Menge ist ihre Quasi-Selbstähnlichkeit. Beim Hineinzoomen in Antennen und Spiralarme begegnet man immer wieder kleinen Kopien der Gesamtkontur, sogenannten Minibrots.',
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
type: 'title',
|
|
107
|
-
text: 'Warum hohe Iterationszahlen bei tiefem Zoom wichtig sind',
|
|
108
|
-
level: 3,
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
type: 'paragraph',
|
|
112
|
-
html: 'Bei starker Vergrößerung benötigen Grenzpunkte deutlich mehr Rechenschritte, um festzustellen, ob ihre Bahn entweicht. Eine zu niedrige Iterationszahl lässt feine Strukturen verschwommen wirken.',
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
type: 'title',
|
|
116
|
-
text: 'Mathematische Bedeutung der komplexen Koordinaten',
|
|
117
|
-
level: 3,
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
type: 'paragraph',
|
|
121
|
-
html: 'Die Koordinatenanzeige zeigt den aktuellen Mittelpunkt des Bildausschnitts als komplexe Zahl c = a + bi an. Die horizontale Achse ist der Realteil, die vertikale der Imaginärteil.',
|
|
122
|
-
},
|
|
123
|
-
],
|
|
124
|
-
faq,
|
|
125
|
-
bibliography,
|
|
126
|
-
howTo,
|
|
127
|
-
schemas: [
|
|
128
|
-
{
|
|
129
|
-
'@context': 'https://schema.org',
|
|
130
|
-
'@type': 'SoftwareApplication',
|
|
131
|
-
name: title,
|
|
132
|
-
description,
|
|
133
|
-
applicationCategory: 'ScientificApplication',
|
|
134
|
-
operatingSystem: 'Any',
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
'@context': 'https://schema.org',
|
|
138
|
-
'@type': 'FAQPage',
|
|
139
|
-
mainEntity: faq.map((item) => ({
|
|
140
|
-
'@type': 'Question',
|
|
141
|
-
name: item.question,
|
|
142
|
-
acceptedAnswer: {
|
|
143
|
-
'@type': 'Answer',
|
|
144
|
-
text: item.answer,
|
|
145
|
-
},
|
|
146
|
-
})),
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
'@context': 'https://schema.org',
|
|
150
|
-
'@type': 'HowTo',
|
|
151
|
-
name: title,
|
|
152
|
-
step: howTo.map((step) => ({
|
|
153
|
-
'@type': 'HowToStep',
|
|
154
|
-
name: step.name,
|
|
155
|
-
text: step.text,
|
|
156
|
-
})),
|
|
157
|
-
},
|
|
158
|
-
],
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'mandelbrot-fraktal-rechner';
|
|
5
|
+
const title = 'Mandelbrot Fraktal Rechner & Selbstähnlichkeits Explorer';
|
|
6
|
+
const description = 'Erkunden Sie die Mandelbrot-Menge, zoomen Sie in selbstähnliche Fraktalgrenzen hinein und vergleichen Sie Iterationstiefe, Farbkontrast und Koordinaten der komplexen Ebene.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Wählen Sie eine Region der Mandelbrot-Menge',
|
|
11
|
+
text: 'Beginnen Sie mit der gesamten Menge oder springen Sie direkt zu einer detailreichen Region wie dem Seepferdchental oder einem spiralförmigen Minibrot.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Zoomen Sie durch Klicken auf das Bild',
|
|
15
|
+
text: 'Klicken Sie auf einen beliebigen Punkt auf der Leinwand, um die komplexe Ebene neu zu zentrieren und den Fraktal um diesen Punkt zu vergrößern.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Passen Sie Iterationstiefe und Farbkontrast an',
|
|
19
|
+
text: 'Erhöhen Sie das Iterationsbudget, um feinere Grenzstrukturen sichtbar zu machen, und passen Sie dann Kontrast und Farbpalette an, um die Fluchtzeitbänder besser lesbar zu machen.',
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const faq = [
|
|
24
|
+
{
|
|
25
|
+
question: 'Was zeigt der Mandelbrot-Mengen-Rechner?',
|
|
26
|
+
answer: 'Er zeigt, welche komplexen Zahlen c die Rekursion z(n+1) = z(n)^2 + c beschränkt halten, wenn man bei z = 0 beginnt. Punkte, die innerhalb des gewählten Iterationsbudgets nie entkommen, werden als Elemente der Menge eingefärbt, während äußere Punkte danach gefärbt werden, wie schnell ihre Umlaufbahn entkommt.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
question: 'Warum enthält der Mandelbrot-Rand so viele Details?',
|
|
30
|
+
answer: 'Der Rand trennt stabile und entkommende Umlaufbahnen. Schon winzige Koordinatenänderungen in der Nähe dieses Randes können das Langzeitverhalten vollständig verändern. Diese Empfindlichkeit erzeugt ineinander verschachtelte Knoten, Spiralen, Filamente und miniaturisierte Kopien, die auf vielen Vergrößerungsstufen erscheinen.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Ist die Mandelbrot-Menge wirklich selbstähnlich?',
|
|
34
|
+
answer: 'Sie ist nicht perfekt selbstähnlich im gleichen strengen Sinne wie ein Sierpinski-Dreieck, aber sie ist reichhaltig quasi-selbstähnlich. Kleine Kopien der gesamten Menge erscheinen überall in der Ebene, oft verzerrt und durch aufwändige verzweigte Strukturen verbunden.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
question: 'Was steuert die Iterationsanzahl?',
|
|
38
|
+
answer: 'Die Iterationsanzahl bestimmt, wie lange der Rechner jeden Punkt testet, bevor er entscheidet, dass er wahrscheinlich zur Menge gehört. Höhere Werte legen tiefere Filamente und sauberere Minibrots frei, erfordern aber mehr Berechnung pro Pixel.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
question: 'Warum ändern sich die Farben außerhalb des schwarzen Bereichs?',
|
|
42
|
+
answer: 'Die Farben außen basieren auf der Fluchtzeit: Punkte, die schnell entkommen, erhalten andere Farben als Punkte, die viele Iterationen in der Nähe der Menge bleiben. Glättende Farbgebung reduziert harte Bänder und erleichtert die Untersuchung der Geometrie benachbarter Umlaufbahnen.',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
export const content: ToolLocaleContent = {
|
|
47
|
+
slug,
|
|
48
|
+
title,
|
|
49
|
+
description,
|
|
50
|
+
ui: {
|
|
51
|
+
title: 'Mandelbrot Fraktal Rechner',
|
|
52
|
+
canvasLabel: 'Interaktive Mandelbrot-Mengen-Leinwand',
|
|
53
|
+
presetsLabel: 'Mandelbrot-Region-Voreinstellungen',
|
|
54
|
+
presetFull: 'Gesamte Menge',
|
|
55
|
+
presetSeahorse: 'Seepferdchental',
|
|
56
|
+
presetSpiral: 'Spiral-Minibrot',
|
|
57
|
+
centerPoint: 'Zentrum',
|
|
58
|
+
magnification: 'Vergrößerung',
|
|
59
|
+
visibleWindow: 'Sichtbarer Ausschnitt',
|
|
60
|
+
renderBudget: 'Iterationen',
|
|
61
|
+
iterationsLabel: 'Iterationstiefe',
|
|
62
|
+
contrastLabel: 'Fluchtkontrast',
|
|
63
|
+
colorLabel: 'Farbfeld',
|
|
64
|
+
paletteEmber: 'Glutbänder',
|
|
65
|
+
paletteLagoon: 'Lagunen-Plasma',
|
|
66
|
+
paletteInk: 'Tinten-Spektrum',
|
|
67
|
+
},
|
|
68
|
+
seo: [
|
|
69
|
+
{
|
|
70
|
+
type: 'title',
|
|
71
|
+
text: 'Mandelbrot-Mengen-Rechner für Fraktale, Fluchtzeit und Selbstähnlichkeit',
|
|
72
|
+
level: 2,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html: 'Dieser Mandelbrot-Fraktal-Rechner rendert die klassische Menge der komplexen Ebene, definiert durch die Iteration <strong>z(n+1) = z(n)^2 + c</strong>. Er ist für die Erkundung konzipiert, nicht für die passive Betrachtung. Jeder Klick zentriert die Ebene neu, jeder Zoom legt eine kleinere mathematische Nachbarschaft frei, und der Iterationsschieberegler lässt Sie entscheiden, wie tief der Rechner die Grenze testen soll, bevor er einen Punkt als stabil oder entweichend färbt.',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'title',
|
|
80
|
+
text: 'Wie man das Mandelbrot-Bild liest',
|
|
81
|
+
level: 3,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'paragraph',
|
|
85
|
+
html: 'Die dunkle zentrale Form markiert Punkte, deren Umlaufbahnen innerhalb des aktuellen Iterationsbudgets beschränkt bleiben. Die farbige Außenseite ist eine Fluchtzeitkarte. Ein Punkt, der nahe der Menge gefärbt ist, kann hunderte von Iterationen überstehen, bevor sein Betrag den Fluchtradius überschreitet, während ein weit entfernter Punkt fast sofort entkommt. Die wissenschaftlich interessanteste Geometrie befindet sich normalerweise nicht innerhalb der gefüllten Form, sondern entlang der Grenze, wo beschränktes und unbeschränktes Verhalten ineinandergreifen.',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'table',
|
|
89
|
+
headers: ['Steuerung', 'Was sie ändert', 'Wann erhöhen'],
|
|
90
|
+
rows: [
|
|
91
|
+
['<strong>Iterationstiefe</strong>', 'Wie viele Rekursionsschritte für jeden Pixel getestet werden.', 'Höhere Werte nach dem Zoomen in dünne Filamente oder miniaturisierte Kopien verwenden.'],
|
|
92
|
+
['<strong>Fluchtkontrast</strong>', 'Wie stark glatte Fluchtwerte in sichtbare Bänder getrennt werden.', 'Erhöhen, wenn das Bild flach aussieht; senken, wenn die Farben zu hart sind.'],
|
|
93
|
+
['<strong>Palette</strong>', 'Die Farbzuordnung, die auf äußere Punkte angewendet wird.', 'Paletten wechseln, um Strukturen sichtbar zu machen, die von einem Farbfeld verdeckt werden könnten.'],
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
type: 'title',
|
|
98
|
+
text: 'Selbstähnlichkeit und Minibrots',
|
|
99
|
+
level: 3,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'paragraph',
|
|
103
|
+
html: 'Ein Grund für die Berühmtheit der Mandelbrot-Menge ist ihre Quasi-Selbstähnlichkeit. Beim Hineinzoomen in Antennen und Spiralarme begegnet man immer wieder kleinen Kopien der Gesamtkontur, sogenannten Minibrots.',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'title',
|
|
107
|
+
text: 'Warum hohe Iterationszahlen bei tiefem Zoom wichtig sind',
|
|
108
|
+
level: 3,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'paragraph',
|
|
112
|
+
html: 'Bei starker Vergrößerung benötigen Grenzpunkte deutlich mehr Rechenschritte, um festzustellen, ob ihre Bahn entweicht. Eine zu niedrige Iterationszahl lässt feine Strukturen verschwommen wirken.',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
type: 'title',
|
|
116
|
+
text: 'Mathematische Bedeutung der komplexen Koordinaten',
|
|
117
|
+
level: 3,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'paragraph',
|
|
121
|
+
html: 'Die Koordinatenanzeige zeigt den aktuellen Mittelpunkt des Bildausschnitts als komplexe Zahl c = a + bi an. Die horizontale Achse ist der Realteil, die vertikale der Imaginärteil.',
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
faq,
|
|
125
|
+
bibliography,
|
|
126
|
+
howTo,
|
|
127
|
+
schemas: [
|
|
128
|
+
{
|
|
129
|
+
'@context': 'https://schema.org',
|
|
130
|
+
'@type': 'SoftwareApplication',
|
|
131
|
+
name: title,
|
|
132
|
+
description,
|
|
133
|
+
applicationCategory: 'ScientificApplication',
|
|
134
|
+
operatingSystem: 'Any',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
'@context': 'https://schema.org',
|
|
138
|
+
'@type': 'FAQPage',
|
|
139
|
+
mainEntity: faq.map((item) => ({
|
|
140
|
+
'@type': 'Question',
|
|
141
|
+
name: item.question,
|
|
142
|
+
acceptedAnswer: {
|
|
143
|
+
'@type': 'Answer',
|
|
144
|
+
text: item.answer,
|
|
145
|
+
},
|
|
146
|
+
})),
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
'@context': 'https://schema.org',
|
|
150
|
+
'@type': 'HowTo',
|
|
151
|
+
name: title,
|
|
152
|
+
step: howTo.map((step) => ({
|
|
153
|
+
'@type': 'HowToStep',
|
|
154
|
+
name: step.name,
|
|
155
|
+
text: step.text,
|
|
156
|
+
})),
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
159
|
};
|
|
@@ -1,159 +1,159 @@
|
|
|
1
|
-
import { bibliography } from '../bibliography';
|
|
2
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
-
|
|
4
|
-
const slug = 'simulateur-fractale-mandelbrot';
|
|
5
|
-
const title = 'Simulateur de Fractale de Mandelbrot et Explorateur d\'Autosimilarité';
|
|
6
|
-
const description = 'Explorez l\'ensemble de Mandelbrot, zoomez sur les frontières fractales autosimilaires et comparez la profondeur d\'itération, le contraste des couleurs et les coordonnées du plan complexe.';
|
|
7
|
-
|
|
8
|
-
const howTo = [
|
|
9
|
-
{
|
|
10
|
-
name: 'Choisissez une région de l\'ensemble de Mandelbrot',
|
|
11
|
-
text: 'Partez de l\'ensemble complet ou sautez directement vers une région très détaillée telle que la vallée de l\'hippocampe ou un minibrot en spirale.',
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: 'Zoomez en cliquant sur l\'image',
|
|
15
|
-
text: 'Cliquez sur n\'importe quel point du canevas pour recentrer le plan complexe et agrandir la fractale autour de cette coordonnée.',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: 'Réglez la profondeur d\'itération et le contraste des couleurs',
|
|
19
|
-
text: 'Augmentez le budget d\'itérations pour révéler une structure de frontière plus fine, puis ajustez le contraste et la palette pour rendre les bandes de temps d\'évasion plus lisibles.',
|
|
20
|
-
},
|
|
21
|
-
];
|
|
22
|
-
|
|
23
|
-
const faq = [
|
|
24
|
-
{
|
|
25
|
-
question: 'Que montre le simulateur de l\'ensemble de Mandelbrot ?',
|
|
26
|
-
answer: 'Il montre quels nombres complexes c maintiennent la récurrence z(n+1) = z(n)^2 + c bornée en partant de z = 0. Les points qui ne s\'échappent jamais dans le budget d\'itérations sélectionné sont colorés comme membres de l\'ensemble, tandis que les points extérieurs sont colorés selon la vitesse à laquelle leur orbite s\'échappe.',
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
question: 'Pourquoi la frontière de Mandelbrot contient-elle autant de détails ?',
|
|
30
|
-
answer: 'La frontière sépare les orbites stables de celles qui s\'échappent, et de minuscules changements de coordonnées près de cette frontière peuvent complètement modifier le comportement à long terme. Cette sensibilité crée des bulbes imbriqués, des spirales, des filaments et des copies miniatures qui apparaissent à de nombreux niveaux d\'agrandissement.',
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
question: 'L\'ensemble de Mandelbrot est-il vraiment autosimilaire ?',
|
|
34
|
-
answer: 'Il n\'est pas parfaitement autosimilaire au sens strict comme un triangle de Sierpinski, mais il est richement quasi-autosimilaire. De petites copies de l\'ensemble complet apparaissent dans tout le plan, souvent déformées et reliées par des structures ramifiées élaborées.',
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
question: 'Que contrôle le nombre d\'itérations ?',
|
|
38
|
-
answer: 'Le nombre d\'itérations contrôle la durée pendant laquelle le simulateur teste chaque point avant de décider qu\'il appartient probablement à l\'ensemble. Des valeurs plus élevées révèlent des filaments plus profonds et des minibrots plus nets, mais nécessitent plus de calculs par pixel.',
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
question: 'Pourquoi les couleurs changent-elles en dehors de la région noire ?',
|
|
42
|
-
answer: 'Les couleurs extérieures sont basées sur le temps d\'évasion: les points qui s\'échappent rapidement reçoivent des couleurs différentes de ceux qui restent près de l\'ensemble pendant de nombreuses itérations. Un coloriage lisse réduit les bandes marquées et facilite l\'inspection de la géométrie des orbites voisines.',
|
|
43
|
-
},
|
|
44
|
-
];
|
|
45
|
-
|
|
46
|
-
export const content: ToolLocaleContent = {
|
|
47
|
-
slug,
|
|
48
|
-
title,
|
|
49
|
-
description,
|
|
50
|
-
ui: {
|
|
51
|
-
title: 'Simulateur de Fractale de Mandelbrot',
|
|
52
|
-
canvasLabel: 'Canevas interactif de l\'ensemble de Mandelbrot',
|
|
53
|
-
presetsLabel: 'Paramètres de région de Mandelbrot',
|
|
54
|
-
presetFull: 'Ensemble Complet',
|
|
55
|
-
presetSeahorse: 'Vallée de l\'Hippocampe',
|
|
56
|
-
presetSpiral: 'Minibrot Spirale',
|
|
57
|
-
centerPoint: 'Centre',
|
|
58
|
-
magnification: 'Grossissement',
|
|
59
|
-
visibleWindow: 'Fenêtre visible',
|
|
60
|
-
renderBudget: 'Itérations',
|
|
61
|
-
iterationsLabel: 'Profondeur d\'itération',
|
|
62
|
-
contrastLabel: 'Contraste d\'évasion',
|
|
63
|
-
colorLabel: 'Champ de couleur',
|
|
64
|
-
paletteEmber: 'Bandes de braise',
|
|
65
|
-
paletteLagoon: 'Plasma lagunaire',
|
|
66
|
-
paletteInk: 'Spectre d\'encre',
|
|
67
|
-
},
|
|
68
|
-
seo: [
|
|
69
|
-
{
|
|
70
|
-
type: 'title',
|
|
71
|
-
text: 'Simulateur de l\'Ensemble de Mandelbrot pour Fractales, Temps d\'Évasion et Autosimilarité',
|
|
72
|
-
level: 2,
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
type: 'paragraph',
|
|
76
|
-
html: 'Ce simulateur de fractale de Mandelbrot rend le classique ensemble du plan complexe défini par l\'itération <strong>z(n+1) = z(n)^2 + c</strong>. Il est conçu pour l\'exploration plutôt que pour la visualisation passive: chaque clic recentre le plan, chaque zoom expose un voisinage mathématique plus petit, et le curseur d\'itérations vous permet de décider à quelle profondeur le calculateur doit tester la frontière avant de colorer un point comme stable ou en fuite.',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
type: 'title',
|
|
80
|
-
text: 'Comment lire l\'image de Mandelbrot',
|
|
81
|
-
level: 3,
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: 'paragraph',
|
|
85
|
-
html: 'La forme centrale sombre marque les points dont les orbites restent bornées dans le budget d\'itérations actuel. L\'extérieur coloré est une carte du temps d\'évasion. Un point coloré près de l\'ensemble peut survivre des centaines d\'itérations avant que sa magnitude ne dépasse le rayon d\'évasion, tandis qu\'un point éloigné s\'échappe presque immédiatement. La géométrie la plus intéressante scientifiquement ne se trouve généralement pas à l\'intérieur de la forme remplie, mais le long de la frontière où les comportements bornés et non bornés s\'entrelacent.',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
type: 'table',
|
|
89
|
-
headers: ['Contrôle', 'Ce qu\'il modifie', 'Quand l\'augmenter'],
|
|
90
|
-
rows: [
|
|
91
|
-
['<strong>Profondeur d\'itération</strong>', 'Combien d\'étapes de récurrence sont testées pour chaque pixel.', 'Utilisez des valeurs plus élevées après un zoom dans des filaments minces ou des copies miniatures.'],
|
|
92
|
-
['<strong>Contraste d\'évasion</strong>', 'À quel point les valeurs d\'évasion lisses sont séparées en bandes visibles.', 'Augmentez-le quand l\'image paraît plate ; baissez-le quand les couleurs sont trop agressives.'],
|
|
93
|
-
['<strong>Palette</strong>', 'Le mappage de couleur appliqué aux points extérieurs.', 'Changez de palette pour révéler des structures qui pourraient être cachées par un champ de couleur.'],
|
|
94
|
-
],
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
type: 'title',
|
|
98
|
-
text: 'Autosimilarité et Minibrots',
|
|
99
|
-
level: 3,
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
type: 'paragraph',
|
|
103
|
-
html: 'Une des raisons pour lesquelles l\'ensemble de Mandelbrot est si célèbre est sa quasi-autosimilarité. En zoomant sur les antennes, les spirales et les vallées, vous rencontrez à plusieurs reprises de petites îles ressemblant à Mandelbrot, souvent appelées <em>minibrots</em>. Ces copies ne sont pas simplement décoratives. Leur agencement reflète la dynamique des applications quadratiques, y compris les bulbes périodiques, les motifs de bifurcation et les régions où les orbites restent piégées pendant de longues périodes avant de s\'échapper.',
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
type: 'title',
|
|
107
|
-
text: 'Pourquoi les itérations élevées comptent au zoom profond',
|
|
108
|
-
level: 3,
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
type: 'paragraph',
|
|
112
|
-
html: 'À fort grossissement, de nombreux points limites mettent beaucoup plus de temps à révéler s\'ils s\'échappent. Augmenter le nombre d\'itérations améliore la précision de la frontière.',
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
type: 'title',
|
|
116
|
-
text: 'Signification mathématique des coordonnées complexes',
|
|
117
|
-
level: 3,
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
type: 'paragraph',
|
|
121
|
-
html: 'La lecture des coordonnées affiche le centre actuel comme un nombre complexe c = a + bi. L\'axe horizontal représente la partie réelle et l\'axe vertical la partie imaginaire.',
|
|
122
|
-
},
|
|
123
|
-
],
|
|
124
|
-
faq,
|
|
125
|
-
bibliography,
|
|
126
|
-
howTo,
|
|
127
|
-
schemas: [
|
|
128
|
-
{
|
|
129
|
-
'@context': 'https://schema.org',
|
|
130
|
-
'@type': 'SoftwareApplication',
|
|
131
|
-
name: title,
|
|
132
|
-
description,
|
|
133
|
-
applicationCategory: 'ScientificApplication',
|
|
134
|
-
operatingSystem: 'Any',
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
'@context': 'https://schema.org',
|
|
138
|
-
'@type': 'FAQPage',
|
|
139
|
-
mainEntity: faq.map((item) => ({
|
|
140
|
-
'@type': 'Question',
|
|
141
|
-
name: item.question,
|
|
142
|
-
acceptedAnswer: {
|
|
143
|
-
'@type': 'Answer',
|
|
144
|
-
text: item.answer,
|
|
145
|
-
},
|
|
146
|
-
})),
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
'@context': 'https://schema.org',
|
|
150
|
-
'@type': 'HowTo',
|
|
151
|
-
name: title,
|
|
152
|
-
step: howTo.map((step) => ({
|
|
153
|
-
'@type': 'HowToStep',
|
|
154
|
-
name: step.name,
|
|
155
|
-
text: step.text,
|
|
156
|
-
})),
|
|
157
|
-
},
|
|
158
|
-
],
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'simulateur-fractale-mandelbrot';
|
|
5
|
+
const title = 'Simulateur de Fractale de Mandelbrot et Explorateur d\'Autosimilarité';
|
|
6
|
+
const description = 'Explorez l\'ensemble de Mandelbrot, zoomez sur les frontières fractales autosimilaires et comparez la profondeur d\'itération, le contraste des couleurs et les coordonnées du plan complexe.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Choisissez une région de l\'ensemble de Mandelbrot',
|
|
11
|
+
text: 'Partez de l\'ensemble complet ou sautez directement vers une région très détaillée telle que la vallée de l\'hippocampe ou un minibrot en spirale.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Zoomez en cliquant sur l\'image',
|
|
15
|
+
text: 'Cliquez sur n\'importe quel point du canevas pour recentrer le plan complexe et agrandir la fractale autour de cette coordonnée.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Réglez la profondeur d\'itération et le contraste des couleurs',
|
|
19
|
+
text: 'Augmentez le budget d\'itérations pour révéler une structure de frontière plus fine, puis ajustez le contraste et la palette pour rendre les bandes de temps d\'évasion plus lisibles.',
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const faq = [
|
|
24
|
+
{
|
|
25
|
+
question: 'Que montre le simulateur de l\'ensemble de Mandelbrot ?',
|
|
26
|
+
answer: 'Il montre quels nombres complexes c maintiennent la récurrence z(n+1) = z(n)^2 + c bornée en partant de z = 0. Les points qui ne s\'échappent jamais dans le budget d\'itérations sélectionné sont colorés comme membres de l\'ensemble, tandis que les points extérieurs sont colorés selon la vitesse à laquelle leur orbite s\'échappe.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
question: 'Pourquoi la frontière de Mandelbrot contient-elle autant de détails ?',
|
|
30
|
+
answer: 'La frontière sépare les orbites stables de celles qui s\'échappent, et de minuscules changements de coordonnées près de cette frontière peuvent complètement modifier le comportement à long terme. Cette sensibilité crée des bulbes imbriqués, des spirales, des filaments et des copies miniatures qui apparaissent à de nombreux niveaux d\'agrandissement.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'L\'ensemble de Mandelbrot est-il vraiment autosimilaire ?',
|
|
34
|
+
answer: 'Il n\'est pas parfaitement autosimilaire au sens strict comme un triangle de Sierpinski, mais il est richement quasi-autosimilaire. De petites copies de l\'ensemble complet apparaissent dans tout le plan, souvent déformées et reliées par des structures ramifiées élaborées.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
question: 'Que contrôle le nombre d\'itérations ?',
|
|
38
|
+
answer: 'Le nombre d\'itérations contrôle la durée pendant laquelle le simulateur teste chaque point avant de décider qu\'il appartient probablement à l\'ensemble. Des valeurs plus élevées révèlent des filaments plus profonds et des minibrots plus nets, mais nécessitent plus de calculs par pixel.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
question: 'Pourquoi les couleurs changent-elles en dehors de la région noire ?',
|
|
42
|
+
answer: 'Les couleurs extérieures sont basées sur le temps d\'évasion: les points qui s\'échappent rapidement reçoivent des couleurs différentes de ceux qui restent près de l\'ensemble pendant de nombreuses itérations. Un coloriage lisse réduit les bandes marquées et facilite l\'inspection de la géométrie des orbites voisines.',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
export const content: ToolLocaleContent = {
|
|
47
|
+
slug,
|
|
48
|
+
title,
|
|
49
|
+
description,
|
|
50
|
+
ui: {
|
|
51
|
+
title: 'Simulateur de Fractale de Mandelbrot',
|
|
52
|
+
canvasLabel: 'Canevas interactif de l\'ensemble de Mandelbrot',
|
|
53
|
+
presetsLabel: 'Paramètres de région de Mandelbrot',
|
|
54
|
+
presetFull: 'Ensemble Complet',
|
|
55
|
+
presetSeahorse: 'Vallée de l\'Hippocampe',
|
|
56
|
+
presetSpiral: 'Minibrot Spirale',
|
|
57
|
+
centerPoint: 'Centre',
|
|
58
|
+
magnification: 'Grossissement',
|
|
59
|
+
visibleWindow: 'Fenêtre visible',
|
|
60
|
+
renderBudget: 'Itérations',
|
|
61
|
+
iterationsLabel: 'Profondeur d\'itération',
|
|
62
|
+
contrastLabel: 'Contraste d\'évasion',
|
|
63
|
+
colorLabel: 'Champ de couleur',
|
|
64
|
+
paletteEmber: 'Bandes de braise',
|
|
65
|
+
paletteLagoon: 'Plasma lagunaire',
|
|
66
|
+
paletteInk: 'Spectre d\'encre',
|
|
67
|
+
},
|
|
68
|
+
seo: [
|
|
69
|
+
{
|
|
70
|
+
type: 'title',
|
|
71
|
+
text: 'Simulateur de l\'Ensemble de Mandelbrot pour Fractales, Temps d\'Évasion et Autosimilarité',
|
|
72
|
+
level: 2,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html: 'Ce simulateur de fractale de Mandelbrot rend le classique ensemble du plan complexe défini par l\'itération <strong>z(n+1) = z(n)^2 + c</strong>. Il est conçu pour l\'exploration plutôt que pour la visualisation passive: chaque clic recentre le plan, chaque zoom expose un voisinage mathématique plus petit, et le curseur d\'itérations vous permet de décider à quelle profondeur le calculateur doit tester la frontière avant de colorer un point comme stable ou en fuite.',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'title',
|
|
80
|
+
text: 'Comment lire l\'image de Mandelbrot',
|
|
81
|
+
level: 3,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'paragraph',
|
|
85
|
+
html: 'La forme centrale sombre marque les points dont les orbites restent bornées dans le budget d\'itérations actuel. L\'extérieur coloré est une carte du temps d\'évasion. Un point coloré près de l\'ensemble peut survivre des centaines d\'itérations avant que sa magnitude ne dépasse le rayon d\'évasion, tandis qu\'un point éloigné s\'échappe presque immédiatement. La géométrie la plus intéressante scientifiquement ne se trouve généralement pas à l\'intérieur de la forme remplie, mais le long de la frontière où les comportements bornés et non bornés s\'entrelacent.',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'table',
|
|
89
|
+
headers: ['Contrôle', 'Ce qu\'il modifie', 'Quand l\'augmenter'],
|
|
90
|
+
rows: [
|
|
91
|
+
['<strong>Profondeur d\'itération</strong>', 'Combien d\'étapes de récurrence sont testées pour chaque pixel.', 'Utilisez des valeurs plus élevées après un zoom dans des filaments minces ou des copies miniatures.'],
|
|
92
|
+
['<strong>Contraste d\'évasion</strong>', 'À quel point les valeurs d\'évasion lisses sont séparées en bandes visibles.', 'Augmentez-le quand l\'image paraît plate ; baissez-le quand les couleurs sont trop agressives.'],
|
|
93
|
+
['<strong>Palette</strong>', 'Le mappage de couleur appliqué aux points extérieurs.', 'Changez de palette pour révéler des structures qui pourraient être cachées par un champ de couleur.'],
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
type: 'title',
|
|
98
|
+
text: 'Autosimilarité et Minibrots',
|
|
99
|
+
level: 3,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'paragraph',
|
|
103
|
+
html: 'Une des raisons pour lesquelles l\'ensemble de Mandelbrot est si célèbre est sa quasi-autosimilarité. En zoomant sur les antennes, les spirales et les vallées, vous rencontrez à plusieurs reprises de petites îles ressemblant à Mandelbrot, souvent appelées <em>minibrots</em>. Ces copies ne sont pas simplement décoratives. Leur agencement reflète la dynamique des applications quadratiques, y compris les bulbes périodiques, les motifs de bifurcation et les régions où les orbites restent piégées pendant de longues périodes avant de s\'échapper.',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'title',
|
|
107
|
+
text: 'Pourquoi les itérations élevées comptent au zoom profond',
|
|
108
|
+
level: 3,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'paragraph',
|
|
112
|
+
html: 'À fort grossissement, de nombreux points limites mettent beaucoup plus de temps à révéler s\'ils s\'échappent. Augmenter le nombre d\'itérations améliore la précision de la frontière.',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
type: 'title',
|
|
116
|
+
text: 'Signification mathématique des coordonnées complexes',
|
|
117
|
+
level: 3,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'paragraph',
|
|
121
|
+
html: 'La lecture des coordonnées affiche le centre actuel comme un nombre complexe c = a + bi. L\'axe horizontal représente la partie réelle et l\'axe vertical la partie imaginaire.',
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
faq,
|
|
125
|
+
bibliography,
|
|
126
|
+
howTo,
|
|
127
|
+
schemas: [
|
|
128
|
+
{
|
|
129
|
+
'@context': 'https://schema.org',
|
|
130
|
+
'@type': 'SoftwareApplication',
|
|
131
|
+
name: title,
|
|
132
|
+
description,
|
|
133
|
+
applicationCategory: 'ScientificApplication',
|
|
134
|
+
operatingSystem: 'Any',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
'@context': 'https://schema.org',
|
|
138
|
+
'@type': 'FAQPage',
|
|
139
|
+
mainEntity: faq.map((item) => ({
|
|
140
|
+
'@type': 'Question',
|
|
141
|
+
name: item.question,
|
|
142
|
+
acceptedAnswer: {
|
|
143
|
+
'@type': 'Answer',
|
|
144
|
+
text: item.answer,
|
|
145
|
+
},
|
|
146
|
+
})),
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
'@context': 'https://schema.org',
|
|
150
|
+
'@type': 'HowTo',
|
|
151
|
+
name: title,
|
|
152
|
+
step: howTo.map((step) => ({
|
|
153
|
+
'@type': 'HowToStep',
|
|
154
|
+
name: step.name,
|
|
155
|
+
text: step.text,
|
|
156
|
+
})),
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
159
|
};
|