@jjlmoya/utils-science 1.34.0 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +3 -1
  4. package/src/index.ts +1 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/roche-limit-satellite-disruption/bibliography.astro +14 -0
  8. package/src/tool/roche-limit-satellite-disruption/bibliography.ts +16 -0
  9. package/src/tool/roche-limit-satellite-disruption/component.astro +97 -0
  10. package/src/tool/roche-limit-satellite-disruption/entry.ts +28 -0
  11. package/src/tool/roche-limit-satellite-disruption/i18n/de.ts +229 -0
  12. package/src/tool/roche-limit-satellite-disruption/i18n/en.ts +229 -0
  13. package/src/tool/roche-limit-satellite-disruption/i18n/es.ts +229 -0
  14. package/src/tool/roche-limit-satellite-disruption/i18n/fr.ts +229 -0
  15. package/src/tool/roche-limit-satellite-disruption/i18n/id.ts +229 -0
  16. package/src/tool/roche-limit-satellite-disruption/i18n/it.ts +229 -0
  17. package/src/tool/roche-limit-satellite-disruption/i18n/ja.ts +229 -0
  18. package/src/tool/roche-limit-satellite-disruption/i18n/ko.ts +229 -0
  19. package/src/tool/roche-limit-satellite-disruption/i18n/nl.ts +229 -0
  20. package/src/tool/roche-limit-satellite-disruption/i18n/pl.ts +229 -0
  21. package/src/tool/roche-limit-satellite-disruption/i18n/pt.ts +229 -0
  22. package/src/tool/roche-limit-satellite-disruption/i18n/ru.ts +229 -0
  23. package/src/tool/roche-limit-satellite-disruption/i18n/sv.ts +229 -0
  24. package/src/tool/roche-limit-satellite-disruption/i18n/tr.ts +229 -0
  25. package/src/tool/roche-limit-satellite-disruption/i18n/zh.ts +229 -0
  26. package/src/tool/roche-limit-satellite-disruption/index.ts +11 -0
  27. package/src/tool/roche-limit-satellite-disruption/logic.ts +102 -0
  28. package/src/tool/roche-limit-satellite-disruption/particle-system.ts +66 -0
  29. package/src/tool/roche-limit-satellite-disruption/roche-limit-satellite-disruption-calculator.css +568 -0
  30. package/src/tool/roche-limit-satellite-disruption/script.ts +274 -0
  31. package/src/tool/roche-limit-satellite-disruption/seo.astro +15 -0
  32. package/src/tool/roche-limit-satellite-disruption/storage.ts +28 -0
  33. package/src/tool/roche-limit-satellite-disruption/visual-data.ts +16 -0
  34. package/src/tools.ts +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jjlmoya/utils-science",
3
- "version": "1.34.0",
3
+ "version": "1.35.0",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -16,10 +16,11 @@ import { twinParadoxVisualizer } from '../tool/twin-paradox-visualizer/index';
16
16
  import { mandelbrotFractal } from '../tool/mandelbrot-fractal/index';
17
17
  import { planetAtmosphereSurvival } from '../tool/planet-atmosphere-survival/index';
18
18
  import { threeBodyProblem } from '../tool/three-body-problem/index';
19
+ import { rocheLimitSatelliteDisruption } from '../tool/roche-limit-satellite-disruption/index';
19
20
 
20
21
  export const scienceCategory: ScienceCategoryEntry = {
21
22
  icon: 'mdi:flask',
22
- tools: [colonyCounter, asteroidImpact, microwaveDetector, simulationProbability, cellularRenewal, cosmicInflation, temperatureTimeline, lorenzAttractor, stellarHabitabilityZone, radioactiveDecay, naturalSelectionDrift, entropySecondLaw, phaseDiagramCriticalPoints, twinParadoxVisualizer, mandelbrotFractal, planetAtmosphereSurvival, threeBodyProblem],
23
+ tools: [colonyCounter, asteroidImpact, microwaveDetector, simulationProbability, cellularRenewal, cosmicInflation, temperatureTimeline, lorenzAttractor, stellarHabitabilityZone, radioactiveDecay, naturalSelectionDrift, entropySecondLaw, phaseDiagramCriticalPoints, twinParadoxVisualizer, mandelbrotFractal, planetAtmosphereSurvival, threeBodyProblem, rocheLimitSatelliteDisruption],
23
24
  i18n: {
24
25
  es: () => import('./i18n/es').then((m) => m.content),
25
26
  en: () => import('./i18n/en').then((m) => m.content),
package/src/entries.ts CHANGED
@@ -16,6 +16,7 @@ export { twinParadoxVisualizer } from './tool/twin-paradox-visualizer/entry';
16
16
  export { mandelbrotFractal } from './tool/mandelbrot-fractal/entry';
17
17
  export { planetAtmosphereSurvival } from './tool/planet-atmosphere-survival/entry';
18
18
  export { threeBodyProblem } from './tool/three-body-problem/entry';
19
+ export { rocheLimitSatelliteDisruption } from './tool/roche-limit-satellite-disruption/entry';
19
20
  export { scienceCategory } from './category';
20
21
  import { asteroidImpact } from './tool/asteroid-impact/entry';
21
22
  import { cellularRenewal } from './tool/cellular-renewal/entry';
@@ -34,4 +35,5 @@ import { twinParadoxVisualizer } from './tool/twin-paradox-visualizer/entry';
34
35
  import { mandelbrotFractal } from './tool/mandelbrot-fractal/entry';
35
36
  import { planetAtmosphereSurvival } from './tool/planet-atmosphere-survival/entry';
36
37
  import { threeBodyProblem } from './tool/three-body-problem/entry';
37
- export const ALL_ENTRIES = [asteroidImpact, cellularRenewal, colonyCounter, microwaveDetector, simulationProbability, cosmicInflation, temperatureTimeline, lorenzAttractor, stellarHabitabilityZone, radioactiveDecay, naturalSelectionDrift, entropySecondLaw, phaseDiagramCriticalPoints, twinParadoxVisualizer, mandelbrotFractal, planetAtmosphereSurvival, threeBodyProblem];
38
+ import { rocheLimitSatelliteDisruption } from './tool/roche-limit-satellite-disruption/entry';
39
+ export const ALL_ENTRIES = [asteroidImpact, cellularRenewal, colonyCounter, microwaveDetector, simulationProbability, cosmicInflation, temperatureTimeline, lorenzAttractor, stellarHabitabilityZone, radioactiveDecay, naturalSelectionDrift, entropySecondLaw, phaseDiagramCriticalPoints, twinParadoxVisualizer, mandelbrotFractal, planetAtmosphereSurvival, threeBodyProblem, rocheLimitSatelliteDisruption];
package/src/index.ts CHANGED
@@ -17,6 +17,7 @@ export { TWIN_PARADOX_VISUALIZER_TOOL } from './tool/twin-paradox-visualizer/ind
17
17
  export { MANDELBROT_FRACTAL_TOOL } from './tool/mandelbrot-fractal/index';
18
18
  export { PLANET_ATMOSPHERE_SURVIVAL_TOOL } from './tool/planet-atmosphere-survival/index';
19
19
  export { THREE_BODY_PROBLEM_TOOL } from './tool/three-body-problem/index';
20
+ export { ROCHE_LIMIT_SATELLITE_DISRUPTION_TOOL } from './tool/roche-limit-satellite-disruption/index';
20
21
 
21
22
  export type {
22
23
  KnownLocale,
@@ -18,7 +18,7 @@ describe('Locale Completeness Validation', () => {
18
18
  });
19
19
  });
20
20
 
21
- it('all 17 tools registered', () => {
22
- expect(ALL_TOOLS.length).toBe(17);
21
+ it('all 18 tools registered', () => {
22
+ expect(ALL_TOOLS.length).toBe(18);
23
23
  });
24
24
  });
@@ -4,8 +4,8 @@ import { scienceCategory } from '../data';
4
4
 
5
5
  describe('Tool Validation Suite', () => {
6
6
  describe('Library Registration', () => {
7
- it('should have 17 tools in ALL_TOOLS', () => {
8
- expect(ALL_TOOLS.length).toBe(17);
7
+ it('should have 18 tools in ALL_TOOLS', () => {
8
+ expect(ALL_TOOLS.length).toBe(18);
9
9
  });
10
10
 
11
11
  it('scienceCategory should be defined', () => {
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
+ import { rocheLimitSatelliteDisruption } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'en' } = Astro.props;
11
+ const content = await rocheLimitSatelliteDisruption.i18n[locale]?.();
12
+ ---
13
+
14
+ {content && <SharedBibliography links={content.bibliography} />}
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Murray, C. D. & Dermott, S. F. (1999). Solar System Dynamics. Cambridge University Press.',
6
+ url: 'https://www.cambridge.org/core/books/solar-system-dynamics/108745217E4A18190CBA340ED5E477A2',
7
+ },
8
+ {
9
+ name: 'NASA Solar System Exploration: Roche Limit and Saturn ring context.',
10
+ url: 'https://www.nasa.gov/solar-system/new-simulations-shed-light-on-origins-of-saturns-rings-and-icy-moons/',
11
+ },
12
+ {
13
+ name: 'Chandrasekhar, S. (1969). Ellipsoidal Figures of Equilibrium. Yale University Press.',
14
+ url: 'https://academic.oup.com/gji/article/21/1/103/729424',
15
+ },
16
+ ];
@@ -0,0 +1,97 @@
1
+ ---
2
+ import './roche-limit-satellite-disruption-calculator.css';
3
+
4
+ interface Props {
5
+ ui: Record<string, string>;
6
+ }
7
+
8
+ const { ui } = Astro.props;
9
+ const uiData = JSON.stringify(ui);
10
+ ---
11
+
12
+ <div class="roche-console" id="roche-console" data-ui={uiData}>
13
+ <div class="roche-status">
14
+ <strong id="roche-verdict">{ui.stable}</strong>
15
+ <span class="roche-distance-readout"><small>{ui.orbitDistance}</small><b id="roche-distance-output">-</b></span>
16
+ </div>
17
+
18
+ <section class="roche-visual" aria-label={ui.ringFormation}>
19
+ <div class="roche-orbit-stage">
20
+ <canvas id="roche-particle-canvas" class="roche-particle-canvas" aria-hidden="true"></canvas>
21
+ <svg class="roche-orbit-map" viewBox="0 0 560 560" role="img" aria-label={ui.rocheBoundary}>
22
+ <defs>
23
+ <radialGradient id="roche-planet-gradient" cx="42%" cy="35%">
24
+ <stop id="roche-planet-stop-a" offset="0%" stop-color="#f7efe2"></stop>
25
+ <stop id="roche-planet-stop-b" offset="42%" stop-color="#d19a66"></stop>
26
+ <stop id="roche-planet-stop-c" offset="100%" stop-color="#63425f"></stop>
27
+ </radialGradient>
28
+ <linearGradient id="roche-ring-gradient" x1="0" x2="1">
29
+ <stop offset="0%" stop-color="#7cd5ff"></stop>
30
+ <stop offset="48%" stop-color="#f8d66d"></stop>
31
+ <stop offset="100%" stop-color="#ff7f8a"></stop>
32
+ </linearGradient>
33
+ </defs>
34
+ <path class="roche-debris roche-debris-back" d="M 102 280 A 178 62 0 0 1 458 280"></path>
35
+ <path class="roche-debris roche-debris-back roche-debris-wide" d="M 66 280 A 214 74 0 0 1 494 280"></path>
36
+ <circle class="roche-boundary" id="roche-boundary" cx="280" cy="280" r="180"></circle>
37
+ <circle class="roche-orbit" id="roche-orbit" cx="280" cy="280" r="230"></circle>
38
+ <g id="roche-fragments"></g>
39
+ <circle class="roche-planet" id="roche-planet" cx="280" cy="280" r="88"></circle>
40
+ <path class="roche-debris roche-debris-front" d="M 458 280 A 178 62 0 0 1 102 280"></path>
41
+ <path class="roche-debris roche-debris-front roche-debris-wide" d="M 494 280 A 214 74 0 0 1 66 280"></path>
42
+ <g class="roche-moon" id="roche-moon">
43
+ <ellipse id="roche-moon-body" cx="0" cy="0" rx="22" ry="22"></ellipse>
44
+ <path id="roche-moon-scar" d="M -11 -13 C 5 -7 10 4 5 17"></path>
45
+ </g>
46
+ <text class="roche-map-label" x="280" y="512" id="roche-map-label">{ui.moonTrack}</text>
47
+ </svg>
48
+ </div>
49
+ </section>
50
+
51
+ <section class="roche-readouts" aria-label={ui.tidalStress}>
52
+ <div><span>{ui.activeLimit}</span><strong id="roche-active-limit">-</strong></div>
53
+ <div><span>{ui.safetyRatio}</span><strong id="roche-safety-ratio">-</strong></div>
54
+ <div><span>{ui.orbitalPeriod}</span><strong id="roche-period">-</strong></div>
55
+ <div><span>{ui.ringFormation}</span><strong id="roche-ring-progress">-</strong></div>
56
+ </section>
57
+
58
+ <section class="roche-controls" aria-label={ui.primaryBody}>
59
+ <div class="roche-field roche-picker" id="roche-primary-picker">
60
+ <span>{ui.primaryBody}</span>
61
+ <button class="roche-picker-trigger" type="button" id="roche-primary-trigger" aria-expanded="false">
62
+ <strong id="roche-primary-name">-</strong><small id="roche-primary-density">-</small><i aria-hidden="true"></i>
63
+ </button>
64
+ <div class="roche-picker-menu" id="roche-primary-menu" role="listbox"></div>
65
+ </div>
66
+
67
+ <div class="roche-field roche-picker" id="roche-satellite-picker">
68
+ <span>{ui.satelliteType}</span>
69
+ <button class="roche-picker-trigger" type="button" id="roche-satellite-trigger" aria-expanded="false">
70
+ <strong id="roche-satellite-name">-</strong><small id="roche-satellite-density">-</small><i aria-hidden="true"></i>
71
+ </button>
72
+ <div class="roche-picker-menu" id="roche-satellite-menu" role="listbox"></div>
73
+ </div>
74
+
75
+ <label class="roche-field roche-distance" for="roche-distance">
76
+ <span>{ui.orbitDistance}</span>
77
+ <input id="roche-distance" type="range" min="8000" max="260000" step="250" />
78
+ </label>
79
+
80
+ <div class="roche-button-row">
81
+ <button type="button" id="roche-close-pass">{ui.closePass}</button>
82
+ <button type="button" id="roche-reset">{ui.reset}</button>
83
+ </div>
84
+ </section>
85
+
86
+ <section class="roche-comparison" aria-label={ui.fluidLimit}>
87
+ <div class="roche-bar"><span>{ui.fluidLimit}</span><div><i id="roche-fluid-bar"></i></div><strong id="roche-fluid-limit">-</strong></div>
88
+ <div class="roche-bar"><span>{ui.rigidLimit}</span><div><i id="roche-rigid-bar"></i></div><strong id="roche-rigid-limit">-</strong></div>
89
+ <div class="roche-material">
90
+ <span id="roche-density">-</span>
91
+ <span id="roche-cohesion">-</span>
92
+ <span id="roche-radius">-</span>
93
+ </div>
94
+ </section>
95
+ </div>
96
+
97
+ <script src="./script.ts"></script>
@@ -0,0 +1,28 @@
1
+ import type { ScienceToolEntry } from '../../types';
2
+
3
+ export const rocheLimitSatelliteDisruption: ScienceToolEntry = {
4
+ id: 'roche-limit-satellite-disruption',
5
+ icons: {
6
+ bg: 'mdi:orbit',
7
+ fg: 'mdi:moon-waning-crescent',
8
+ },
9
+ i18n: {
10
+ de: () => import('./i18n/de').then((m) => m.content),
11
+ en: () => import('./i18n/en').then((m) => m.content),
12
+ es: () => import('./i18n/es').then((m) => m.content),
13
+ fr: () => import('./i18n/fr').then((m) => m.content),
14
+ id: () => import('./i18n/id').then((m) => m.content),
15
+ it: () => import('./i18n/it').then((m) => m.content),
16
+ ja: () => import('./i18n/ja').then((m) => m.content),
17
+ ko: () => import('./i18n/ko').then((m) => m.content),
18
+ nl: () => import('./i18n/nl').then((m) => m.content),
19
+ pl: () => import('./i18n/pl').then((m) => m.content),
20
+ pt: () => import('./i18n/pt').then((m) => m.content),
21
+ ru: () => import('./i18n/ru').then((m) => m.content),
22
+ sv: () => import('./i18n/sv').then((m) => m.content),
23
+ tr: () => import('./i18n/tr').then((m) => m.content),
24
+ zh: () => import('./i18n/zh').then((m) => m.content),
25
+ },
26
+ };
27
+
28
+ export type { ToolLocaleContent } from '../../types';
@@ -0,0 +1,229 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'roche-grenze-satellitenzerstoerung-rechner';
5
+ const title = 'Roche Grenze Rechner und Satellitenzerstörungssimulator';
6
+ const description = 'Berechne die Roche Grenze für Planeten und Monde, vergleiche fluide und starre Zerfallsdistanzen und visualisiere, wie Gezeitenkräfte einen Satelliten in ein Ringsystem verwandeln.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Wähle den Primärkörper',
11
+ text: 'Wähle den Planeten, dessen Schwerkraft den Satelliten dehnt. Der Rechner lädt seinen Radius, seine Dichte und seine Masse für die Roche Grenze und Umlaufzeitschätzungen.',
12
+ },
13
+ {
14
+ name: 'Wähle den Satellitentyp',
15
+ text: 'Wähle einen Eismond, Gesteinsmond, Trümmerhaufen oder eisenreichen Körper. Dichte und innere Kohäsion verändern die Zerfallsgrenze.',
16
+ },
17
+ {
18
+ name: 'Bewege den Orbitregler',
19
+ text: 'Ziehe die orbitale Distanz nach innen oder außen. Die visuelle Scheibe zeigt, ob der Satellit außerhalb der Roche Grenze ist, sie streift, fragmentiert oder bereits zu einem Ring wird.',
20
+ },
21
+ {
22
+ name: 'Vergleiche die Grenzen',
23
+ text: 'Nutze die Anzeigen, um die klassische fluide Roche Grenze mit der niedrigeren starren Schätzung und der kohäsionsangepassten Betriebsgrenze zu vergleichen.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Was ist die Roche Grenze?',
30
+ answer: 'Die Roche Grenze ist der Abstand von einem massiven Primärkörper, bei dem die Gezeitenkräfte auf einen kleineren umlaufenden Körper stark genug werden, um die Eigengravitation des kleineren Körpers zu überwinden. Innerhalb dieser Grenze kann ein schwacher oder fluider Satellit auseinandergerissen werden.',
31
+ },
32
+ {
33
+ question: 'Warum gibt es fluide und starre Roche Grenzen?',
34
+ answer: 'Ein fluider Satellit verformt sich leicht, daher können Gezeiten seine Verlängerung verstärken und ihn weiter vom Planeten entfernt zerstören. Ein starrer Satellit kann der Verformung durch Materialfestigkeit widerstehen, daher setzt die einfache starre Schätzung den Zerfall näher am Primärkörper an.',
35
+ },
36
+ {
37
+ question: 'Wird jeder Mond innerhalb der Roche Grenze sofort zu Ringen?',
38
+ answer: 'Nein. Echte Zerstörung hängt von Rotation, Zusammensetzung, Rissen, Porosität, Erwärmung, Einschlägen und Materialfestigkeit ab. Dieses Werkzeug zeigt die klassische Gravitationsgrenze und verwendet ein Übergangsband, um Risiko zu kommunizieren, statt einen sofortigen Schalter.',
39
+ },
40
+ {
41
+ question: 'Warum hängen Saturnringe mit der Roche Grenze Physik zusammen?',
42
+ answer: 'Saturns Ringe befinden sich in einer Region, in der eisiges Material als Partikel bestehen bleiben kann, statt zu einem großen Mond zu akkretieren. Die Roche Grenze hilft zu erklären, warum Ringpartikel nahe am Planeten verteilt bleiben.',
43
+ },
44
+ ];
45
+
46
+ export const content: ToolLocaleContent = {
47
+ slug,
48
+ title,
49
+ description,
50
+ ui: {
51
+ primaryBody: 'Primärkörper',
52
+ satelliteType: 'Satellitentyp',
53
+ orbitDistance: 'Orbitale Entfernung',
54
+ rocheBoundary: 'Roche Grenze',
55
+ fluidLimit: 'Fluide Grenze',
56
+ rigidLimit: 'Starre Grenze',
57
+ activeLimit: 'Aktive Grenze',
58
+ safetyRatio: 'Sicherheitsverhältnis',
59
+ orbitalPeriod: 'Umlaufzeit',
60
+ tidalStress: 'Gezeitenstress',
61
+ ringFormation: 'Ringbildung',
62
+ stable: 'Stabiler Orbit',
63
+ grazing: 'Gezeitenstreifung',
64
+ fragmenting: 'Fragmentierung',
65
+ ring: 'Ringsystem',
66
+ km: 'km',
67
+ hours: 'h',
68
+ density: 'Dichte',
69
+ cohesion: 'Kohäsion',
70
+ planetRadius: 'Planetenradius',
71
+ reset: 'Zurücksetzen',
72
+ closePass: 'Naher Vorbeiflug',
73
+ moonTrack: 'Mondspur',
74
+ debrisTrack: 'Trümmerspur',
75
+ },
76
+ seo: [
77
+ {
78
+ type: 'title',
79
+ text: 'Roche Grenze Formel, Bedeutung und Wie Man Diesen Rechner Nutzt',
80
+ level: 2,
81
+ },
82
+ {
83
+ type: 'paragraph',
84
+ html: 'Die <strong>Roche Grenze</strong> ist der minimale orbitale Abstand, bei dem ein Satellit, der hauptsächlich durch seine eigene Schwerkraft zusammengehalten wird, einen größeren Körper umkreisen kann, ohne durch Gezeitenkräfte auseinandergerissen zu werden. Menschen suchen danach, wenn sie wissen wollen, ob ein Mond, Komet, Asteroid oder ein künstliches Szenario eine nahe Begegnung mit einem Planeten überleben würde, oder ob sich das Material zu einem Ring ausbreiten würde. Dieser Rechner beantwortet diese Frage, indem er den Planetenradius, die Planetendichte, die Satellitendichte und die ungefähre innere Festigkeit des Satelliten kombiniert.',
85
+ },
86
+ {
87
+ type: 'paragraph',
88
+ html: 'Die Kernidee ist einfach: Die Schwerkraft ist nicht überall auf dem Satelliten gleich stark. Die nahe Seite wird stärker angezogen als die ferne Seite, was eine Dehnungskraft erzeugt. Wenn diese Gezeitendehnung stärker ist als die Eigengravitation und Materialkohäsion des Satelliten, kann der Körper reißen, Masse verlieren und schließlich fragmentieren. Die Roche Grenze ist daher nicht nur eine Entfernung; sie ist ein Vergleich zwischen äußerem Gezeitenstress und innerer Bindung.',
89
+ },
90
+ {
91
+ type: 'title',
92
+ text: 'Vom Rechner Verwendete Roche Grenze Gleichungen',
93
+ level: 3,
94
+ },
95
+ {
96
+ type: 'paragraph',
97
+ html: 'Für einen fluiden oder sehr schwachen Satelliten ist die klassische Näherung <strong>d = 2.44 R (rho_M / rho_m)^(1/3)</strong>. Für einen starren Satelliten ist eine gebräuchliche Näherung <strong>d = 1.26 R (rho_M / rho_m)^(1/3)</strong>. In diesen Gleichungen ist <strong>d</strong> die vom Planetenmittelpunkt gemessene Roche Grenze, <strong>R</strong> der Radius des Primärkörpers, <strong>rho_M</strong> die Dichte des Primärkörpers und <strong>rho_m</strong> die Dichte des Satelliten.',
98
+ },
99
+ {
100
+ type: 'list',
101
+ items: [
102
+ '<strong>Primärradius:</strong> Größere Planeten erzeugen eine größere Roche Grenze, selbst bei ähnlicher Dichte.',
103
+ '<strong>Primärdichte:</strong> Ein dichterer Primär erhöht die Gezeitenstärke bei einem gegebenen Vielfachen seines Radius.',
104
+ '<strong>Satellitendichte:</strong> Ein dichterer Satellit hat eine stärkere Eigengravitation, kann also näher am Planeten überleben.',
105
+ '<strong>Satellitenfestigkeit:</strong> Ein fluides, eisiges, zerklüftetes oder trümmerartiges Objekt zerfällt weiter entfernt als ein kompaktes starres Objekt.',
106
+ ],
107
+ },
108
+ {
109
+ type: 'table',
110
+ headers: ['Modell', 'Formelform', 'Verwendung', 'Bedeutung des Ergebnisses'],
111
+ rows: [
112
+ ['Fluide Roche Grenze', '2.44 R (rho_M / rho_m)^(1/3)', 'Eismonde, geschmolzene Körper, Trümmerhaufen, schwache Kometen', 'Die konservative Zerfallsentfernung für Objekte, die sich leicht verformen.'],
113
+ ['Starre Roche Grenze', '1.26 R (rho_M / rho_m)^(1/3)', 'Dichte Gesteins oder metallische Körper mit Materialfestigkeit', 'Eine nähere niedrigere Schätzung, bei der Materialfestigkeit die Zerstörung verzögert.'],
114
+ ['Kohäsionsangepasste Anzeige', 'Zwischen fluiden und starren Fällen', 'Schneller Szenarienvergleich in diesem Simulator', 'Eine praktische Risikolinie für den gewählten Satellitentyp, kein universeller Naturgesetzschalter.'],
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Beispiel: Warum ein Eismond nahe Saturn verwundbar ist',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Saturn ist viel weniger dicht als die Erde, aber er ist enorm. Ein eisiger Satellit niedriger Dichte hat eine schwache Eigengravitation im Vergleich zu einem kompakten Gesteinsmond, daher setzt das Dichteverhältnis die fluide Roche Grenze weit von Saturns Wolkenobergrenzen entfernt. Das ist ein Grund, warum die Roche Grenze Physik zentral dafür ist, zu verstehen, warum Saturn ein breites, helles Ringsystem aus meist eisigen Partikeln aufrechterhalten kann, anstatt eines einzigen großen neu zusammengesetzten Mondes.',
125
+ },
126
+ {
127
+ type: 'paragraph',
128
+ html: 'Wenn du Saturn und einen Eismond im Rechner wählst und dann den Orbit nach innen ziehst, beobachte das Sicherheitsverhältnis. Über <strong>1.00x</strong> liegt der gewählte Orbit außerhalb der aktiven Roche Grenze. Nahe <strong>1.00x</strong> befindet sich der Mond in einer Gezeitenstreifungsregion, in der Massenverlust oder Rissbildung plausibel wird. Unter <strong>1.00x</strong> wechselt die Visualisierung zu Fragmentbögen und Ringbildung, weil das gewählte Modell Zerstörung vorhersagt.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Wie man das Sicherheitsverhältnis interpretiert',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'Das <strong>Sicherheitsverhältnis</strong> ist die aktuelle orbitale Entfernung geteilt durch die gewählte Roche Grenze. Ein Verhältnis von <strong>1.25x</strong> bedeutet, dass der Orbit 25% weiter entfernt ist als die aktive Zerfallsschätzung. Ein Verhältnis von <strong>1.00x</strong> bedeutet, dass der Orbit genau auf der gewählten Roche Grenze liegt. Ein Verhältnis von <strong>0.80x</strong> bedeutet, dass der Satellit tief in der gewählten Zerstörungszone liegt.',
138
+ },
139
+ {
140
+ type: 'table',
141
+ headers: ['Sicherheitsverhältnis', 'Angezeigter Zustand', 'Praktische Bedeutung'],
142
+ rows: [
143
+ ['Über 1.12x', 'Stabiler Orbit', 'Der Satellit ist außerhalb der gewählten Roche Grenze für dieses vereinfachte Modell.'],
144
+ ['1.00x bis 1.12x', 'Gezeitenstreifung', 'Das Objekt ist nahe genug, dass Verformung, Rissbildung oder Oberflächenverlust relevant sein können.'],
145
+ ['0.78x bis 1.00x', 'Fragmentierung', 'Die Eigengravitation reicht im gewählten Modell nicht mehr aus; Trümmerströme sind plausibel.'],
146
+ ['Unter 0.78x', 'Ringsystem', 'Der ursprüngliche Körper wird als verteiltes Material dargestellt, das benachbarten Orbits folgt.'],
147
+ ],
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: 'Die Umlaufzeitanzeige ist enthalten, weil nahe Begegnungen nicht nur von der Entfernung abhängen. Material innerhalb der Zerstörungszone folgt schnellen, leicht unterschiedlichen Orbits. Sobald sich Fragmente trennen, verteilt orbitale Scherung sie um den Planeten, während Kollisionen den Trümmer in eine scheibenartige Ringstruktur platten und sortieren.',
152
+ },
153
+ {
154
+ type: 'title',
155
+ text: 'Warum die Roche Grenze Ringe erzeugen kann',
156
+ level: 3,
157
+ },
158
+ {
159
+ type: 'paragraph',
160
+ html: 'Wenn ein Satellit außerhalb der Roche Grenze auseinanderbricht, können die Fragmente schließlich kollidieren und sich zu einem kleineren Mond wieder ansammeln. Innerhalb der Roche Grenze können nahe Fragmente nicht leicht zu einem stabilen selbstgravitierenden Körper verschmelzen, weil Gezeitenkräfte das Material weiterhin auseinanderziehen. Das Ergebnis kann ein langlebiger Ring sein, besonders wenn der Trümmer eisig, kollisional und durch kleine Monde oder Resonanzen kontinuierlich durchmischt ist.',
161
+ },
162
+ {
163
+ type: 'paragraph',
164
+ html: 'Die Ringbildung ist allmählich. Ein zerstörter Mond verlängert sich zuerst, verliert dann Partikel und größere Fragmente. Diese Fragmente nehmen leicht unterschiedliche orbitale Radien ein, so dass sie vor oder hintereinander abdriften. Im Laufe der Zeit dämpfen Kollisionen die vertikale Bewegung und das Material setzt sich in einer dünnen Scheibe ab. Deshalb zeigt der Simulator einen Übergang von einem einzelnen Mond zu Bögen und dann zu einem volleren Ring, anstatt den Zerfall als sofortige Explosion zu behandeln.',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Wichtige Grenzen Dieses Roche Grenze Rechners',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'Der Rechner ist für schnelle wissenschaftliche Intuition konzipiert, nicht für hochpräzise Missionsplanung. Echte Satelliten werden von Rotation, Orbitalexzentrizität, innerer Schichtung, Zugfestigkeit, Porosität, Temperatur, Gezeitenaufheizung, früheren Brüchen, Einschlägen und Resonanzen mit anderen Monden beeinflusst. Ein rotierender Trümmerhaufen auf einer exzentrischen Umlaufbahn kann anders versagen als ein kalter monolithischer Fels auf einer Kreisbahn, selbst wenn ihre Durchschnittsdichten ähnlich aussehen.',
174
+ },
175
+ {
176
+ type: 'list',
177
+ items: [
178
+ '<strong>Verwende die fluide Grenze</strong>, wenn das Objekt schwach, eisig, geschmolzen, stark zerklüftet oder aus losem Aggregat besteht.',
179
+ '<strong>Verwende die starre Grenze</strong> als untere Schätzung für kompakte Körper mit bedeutender innerer Festigkeit.',
180
+ '<strong>Lies die aktive Grenze</strong> als die vom Simulator gewählte Arbeitsgrenze für den gewählten Satellitentyp.',
181
+ '<strong>Interpretiere das Ergebnis nicht</strong> als exakte Vorhersage für einen benannten realen Mond ohne detailliertes geophysikalisches Modell.',
182
+ ],
183
+ },
184
+ {
185
+ type: 'title',
186
+ text: 'Häufige Fragen, die Dieses Werkzeug Beantworten Hilft',
187
+ level: 3,
188
+ },
189
+ {
190
+ type: 'paragraph',
191
+ html: 'Verwende dieses Werkzeug, wenn du Fragen schätzen willst wie: Wie nah kann ein Mond der Erde kommen, bevor er auseinanderbricht? Warum befinden sich Saturns Ringe innerhalb einer Roche Grenzen Region? Würde ein Gesteinsmond näher überleben als ein Eismond? Wie verändert die Dichte die Roche Grenze? Was ist der Unterschied zwischen der fluiden und der starren Roche Grenze? Die Steuerungen sind um diese Vergleiche herum aufgebaut, so dass das Ändern einer Variable sofort zeigt, wie die Zerfallsentfernung, das Sicherheitsverhältnis und die Ringbildungsvisualisierung reagieren.',
192
+ },
193
+ ],
194
+ faq,
195
+ bibliography,
196
+ howTo,
197
+ schemas: [
198
+ {
199
+ '@context': 'https://schema.org',
200
+ '@type': 'SoftwareApplication',
201
+ name: title,
202
+ description,
203
+ applicationCategory: 'ScientificApplication',
204
+ operatingSystem: 'Any',
205
+ },
206
+ {
207
+ '@context': 'https://schema.org',
208
+ '@type': 'FAQPage',
209
+ mainEntity: faq.map((item) => ({
210
+ '@type': 'Question',
211
+ name: item.question,
212
+ acceptedAnswer: {
213
+ '@type': 'Answer',
214
+ text: item.answer,
215
+ },
216
+ })),
217
+ },
218
+ {
219
+ '@context': 'https://schema.org',
220
+ '@type': 'HowTo',
221
+ name: title,
222
+ step: howTo.map((step) => ({
223
+ '@type': 'HowToStep',
224
+ name: step.name,
225
+ text: step.text,
226
+ })),
227
+ },
228
+ ],
229
+ };