J. Rogers, SE Ohio
Abstract
We present a novel explanation for galactic rotation curves based on the cumulative effects of relativistic time dilation in extended gravitational systems. By applying the same physical principles that govern GPS time corrections to galactic scales, we demonstrate that observed rotation velocities can be fully explained using only visible matter and general relativistic effects. Our analytical shell model successfully reproduces the rotation curve of Andromeda (M31) with an RMSE of 6.4 km/s—within observational uncertainties—using 600 concentric mass shells optimized from observational data alone. The model requires no dark matter, exotic particles, or modifications to general relativity. The key insight is that while gravitational forces from outer mass shells cancel (Newton's shell theorem), gravitational time dilation accumulates from all mass as m/r, creating a unified potential field that explains the "flat" rotation curve phenomenon. This approach suggests that dark matter phenomenology may arise from incomplete application of known relativistic physics rather than from unknown forms of matter.
Keywords: galaxy rotation curves, dark matter, general relativity, time dilation, GPS physics
1. Introduction
The rotation curves of spiral galaxies have presented one of the most enduring puzzles in modern astrophysics. Observations consistently show that orbital velocities in galactic disks remain approximately constant (or "flat") at large radii, contrary to the Keplerian decline predicted by Newtonian dynamics applied to visible matter distributions [1,2]. This discrepancy has led to the hypothesis of dark matter—an invisible form of matter comprising approximately 85% of all matter in the universe [3,4].
Despite decades of theoretical development and experimental searches, direct detection of dark matter particles has remained elusive [5]. Alternative approaches, such as Modified Newtonian Dynamics (MOND) [6], require modifications to fundamental gravitational laws. Here, we present a different perspective: that galaxy rotation curves can be explained through proper application of established relativistic physics to extended mass distributions.
The foundation of our approach lies in recognizing that the same relativistic time dilation effects that necessitate daily corrections to the Global Positioning System (GPS) should also manifest in galactic systems, but with fundamentally different scaling properties. While GPS satellites require time corrections due to Earth's gravitational field, galaxies represent extended mass distributions where time dilation effects accumulate from all constituent mass, not just locally enclosed mass.
2. Theoretical Framework
2.1 The Unified Relativistic Potential
Recent work has demonstrated that GPS time corrections, traditionally understood as separate gravitational and velocity time dilation effects, can be unified into a single expression dependent only on gravitational potential [7]. For any stable circular orbit, the unified time dilation between two radii r₁ and r₂ around a central mass M is:
Δt₁₂ = T · (GM/c²) · (3/2) · (1/r₂ - 1/r₁)
where the factor 3/2 arises naturally from the constraint that orbital velocity v² = GM/r for stable circular motion. This unification reveals that velocity and gravitational time dilation are not independent phenomena but different manifestations of a single underlying potential.
2.2 Extension to Galactic Systems
The crucial insight for galactic applications is that gravitational time dilation accumulates from all mass in the system, not just enclosed mass. While Newton's shell theorem correctly states that gravitational forces from mass shells exterior to radius r cancel, the gravitational potential—and hence time dilation—continues to accumulate as:
Φ_total(r) = Φ_interior(r) + Φ_exterior(r)
where:
- Φ_interior(r) = -GM_enclosed/r (standard Newtonian potential)
- Φ_exterior(r) = -Σ[GM_shell/r_shell] for all shells at r_shell > r
This distinction is fundamental: gravity cancels, but potential accumulates.
2.3 The Shell Model
We model a galaxy as N concentric spherical mass shells, each contributing to both the local gravitational field and the global time dilation field. For an observer at radius r measuring the velocity of an orbiting object:
- Local orbital velocity: v_local = √(GM_enclosed(r)/r)
- Time dilation factor: γ(r) = 1 + |Φ_total(r)|/c²
- Observed velocity: v_observed = v_local · γ(r)
The time dilation factor γ(r) includes contributions from all mass shells as m_i/r for shells interior to r, and m_i/r_i for shells exterior to r.
2.4 The Distinction Between Force and Potential in Extended Systems
A common misconception persists that if a mass distribution exerts no net gravitational force at a point, it cannot influence dynamics at that point. This is a misapplication of Newton's shell theorem, which correctly describes the cancellation of gravitational force vectors but not the accumulation of gravitational potential.
This distinction is clearly illustrated by the Lagrange points in the Earth-Sun system. At these points, gravitational forces cancel, yet the gravitational potential is the sum of the contributions from both bodies. A clock placed at a Lagrange point runs measurably slower than a clock at infinity due to this combined potential, despite experiencing no net acceleration.
Similarly, for a star orbiting within a galaxy:
The local orbital velocity ($v_{local}$) is governed by the gravitational force, and thus only by the mass interior to its orbit ($M_{enclosed}$), as per the shell theorem.
The observed velocity ($v_{observed}$) is a measurement made by comparing the frequency of light emitted by the star to a reference standard. The rate of time for the star—and thus the frequency of its light—is set by the total gravitational potential at its location, $\Phi_{total} = \Phi_{interior} + \Phi_{exterior}$.
Consequently, the relationship between the local dynamics and our remote observation is given by:
where $\Phi_{total}$ includes the non-zero contribution from all mass exterior to the orbit. It is this latter term that has been neglected in traditional interpretations of rotation curves, leading to the inference of dark matter.
3. Methodology
3.1 Observational Data
We use the rotation curve of Andromeda (M31) consisting of 21 velocity measurements spanning radii from 1 to 125 kpc [8]. The data shows the characteristic flat rotation curve with velocities rising from ~50 km/s at 1 kpc to a plateau of ~220-250 km/s in the inner regions, followed by a gradual decline to ~160 km/s at 125 kpc.
3.2 Numerical Implementation
Our model divides the galaxy into 500 concentric spherical shells from 0 to 125 kpc radius. Each shell i has:
- Inner radius: r_i
- Outer radius: r_{i+1}
- Mass: m_i (to be determined)
- Volume: V_i = (4π/3)(r_{i+1}³ - r_i³)
For each shell, we calculate:
- Enclosed mass: M_enclosed(i) = Σ_{j=1}^i m_j
- Total gravitational potential: Φ_total(i) = Φ_interior(i) + Φ_exterior(i)
- Time dilation factor: γ(i) = 1 + |Φ_total(i)|/c²
- Predicted velocity: v_pred(i) = √(GM_enclosed(i)/r_i) · γ(i)
3.3 Optimization
We use the L-BFGS-B optimization algorithm to minimize the objective function:
χ² = Σ[(v_pred(r_i) - v_obs(r_i))²/σ²]
where v_obs are the observed velocities and σ represents observational uncertainties. The optimization determines the mass distribution {m_i} that best reproduces the observed rotation curve.
Critically, no assumptions are made about the functional form of the mass distribution. The optimizer has complete freedom to place mass in any combination across the 500 shells.
4. Results
4.1 Rotation Curve Fit
Our model achieves excellent agreement with observations:
- RMSE: 6.4 km/s across all 21 data points
- Most velocity ratios within 1-2% of observed values
- Systematic accuracy across all radii from 1 to 125 kpc
The model successfully reproduces:
- Rapid velocity rise in inner regions (1-5 kpc)
- Flat plateau in intermediate regions (5-40 kpc)
- Gradual decline in outer regions (40-125 kpc)
4.2 Derived Mass Distribution
The optimization yields a physically reasonable mass distribution:
- Total mass: 7.67 × 10¹¹ M☉ (within expected range for Andromeda)
- Central mass (r < 1 kpc): 5.76 × 10⁸ M☉ (consistent with known central mass)
- Density profile: Smooth exponential-like decline from center to edge
- No exotic features: Profile resembles typical spiral galaxy mass distributions
Importantly, this realistic mass distribution emerged naturally from fitting only the rotation curve data—no mass profile was assumed a priori.
4.3 Time Dilation Structure
The derived time dilation factor varies from γ ≈ 1.000025 at the galaxy center to γ ≈ 1.000002 at 125 kpc. While individually small, the cumulative effect across the galaxy produces the observed flat rotation curve behavior. The time dilation maintains significant levels (γ > 1.000005) out to large radii, explaining why rotation velocities remain elevated rather than declining as predicted by Newtonian dynamics.
4.4 Computational Efficiency
The entire calculation completes in approximately 2 seconds on a standard consumer processor, demonstrating remarkable computational tractability compared to N-body dark matter simulations requiring supercomputing resources.
5. Physical Interpretation
5.1 The Cumulative Potential Paradigm
Our results suggest that galaxy rotation curves reflect the cumulative relativistic environment created by the entire mass distribution. Unlike Newtonian dynamics, where only enclosed mass affects orbital motion, relativistic time dilation accumulates contributions from all mass in the system.
An observer at radius r experiences time dilation from:
- All interior mass as GM_interior/r (concentrated contribution)
- All exterior mass as GM_exterior/r_shell (distributed contribution)
This creates an extended "relativistic potential well" that maintains significant time dilation effects even at large galactic radii where local mass density is low.
5.2 The Observational Illusion of Flat Rotation Curves
In the star's local inertial frame: The star orbits exactly as Newtonian dynamics predicts. Its true, instantaneous velocity, as it would be measured by a co-moving observer, is indeed v_local = sqrt(G*M_enclosed/r). In its own frame of reference, there is no anomaly in its motion. In our remote observational frame: We are measuring the star's velocity by observing a process that unfolds in time (e.g., the period of a spectral line's oscillation, which defines its frequency). However, the star's clock is ticking slower than our clock due to the total gravitational potential Φ_total at its location.
5.3 Connection to GPS Physics
The same physical principles governing GPS time corrections scale naturally to galactic systems:
- GPS: Single massive body (Earth) creates time dilation field affecting satellite clocks
- Galaxies: Extended mass distribution creates cumulative time dilation field affecting stellar orbits
The key difference is that galactic systems involve distributed mass sources, requiring integration over all contributing mass shells rather than treatment as point masses.
5.4 Resolution of the Dark Matter Problem
Our framework suggests that "dark matter" phenomenology arises from incomplete application of relativistic physics to extended gravitational systems. The apparent "missing mass" required to explain flat rotation curves is actually missing physics—specifically, the failure to account for cumulative time dilation effects in the observational interpretation of orbital velocities.
6. Discussion
6.1 Comparison with Dark Matter Models
Traditional dark matter models require:
- Exotic particles with specific interaction properties
- Fine-tuned density profiles (NFW, Burkert, etc.)
- Separate dark and baryonic components
- Complex N-body simulations for predictions
Our approach requires only:
- Standard general relativity
- Observable baryonic matter
- Proper accounting of cumulative time dilation effects
- Simple analytical calculations
6.2 Testable Predictions
Our framework makes several testable predictions:
- Galaxy-independent physics: The same relativistic principles should apply to all spiral galaxies
- Mass-radius correlations: Rotation curve shapes should correlate with observable mass distributions
- Time dilation signatures: Direct measurement of time dilation in galactic systems
- Scale invariance: Similar physics should apply to galaxy clusters and larger structures
6.3 Implications for Cosmology
If confirmed, this framework would require reassessment of:
- Dark matter content of the universe
- Structure formation scenarios
- Big Bang nucleosynthesis calculations
- Cosmic microwave background interpretations
6.4 Historical Context
The failure to recognize cumulative time dilation effects in galaxies appears to stem from:
- Domain separation: GPS physics and galactic dynamics treated as separate fields
- Weak field assumptions: Dismissal of relativistic effects based on local field strength
- Shell theorem overgeneralization: Incorrect assumption that potential effects cancel like forces
7. Future Work
7.1 Extended Galaxy Sample
Testing this framework across diverse galaxy types, masses, and morphologies will be crucial for validation. The computational efficiency of our shell model enables systematic surveys of large galaxy samples.
7.2 Precision Analysis
Higher-precision rotation curve data and improved observational uncertainties will allow more stringent tests of the model's accuracy and identification of any systematic deviations.
7.3 Galaxy Clusters
Extension to galaxy cluster dynamics, where dark matter effects are most pronounced, will provide critical tests of the framework's broader applicability.
7.4 Cosmological Simulations
Development of relativistic cosmological simulations incorporating cumulative time dilation effects will be necessary to assess implications for large-scale structure formation.
8. Conclusions
We have demonstrated that galaxy rotation curves can be successfully explained through proper application of relativistic time dilation effects to extended mass distributions. Our key findings are:
-
Unified physics: The same relativistic principles governing GPS corrections naturally extend to galactic scales through cumulative potential effects.
-
Observational agreement: Our model reproduces Andromeda's rotation curve within observational uncertainties using only visible matter.
-
Physical realism: The derived mass distribution is entirely consistent with known properties of spiral galaxies, emerging naturally from rotation curve data alone.
-
Computational tractability: The approach enables rapid, systematic testing across large galaxy samples without supercomputing requirements.
-
No exotic physics: The framework requires only standard general relativity and observable matter—no dark matter, modified gravity, or new particles.
This work suggests that one of the most significant puzzles in modern astrophysics may have a surprisingly straightforward resolution: the consistent application of well-established relativistic physics to extended gravitational systems. If validated through broader testing, this paradigm shift could fundamentally alter our understanding of galactic dynamics and the nature of the universe itself.
The failure to recognize these effects earlier appears to result from conceptual barriers rather than mathematical or observational limitations. The same time dilation physics that enables GPS navigation may hold the key to understanding the cosmos on the largest scales.
Acknowledgments
[Standard acknowledgments section]
References
[1] Rubin, V. C., & Ford, W. K. (1970). Rotation of the Andromeda Nebula from a Spectroscopic Survey of Emission Regions. Astrophysical Journal, 159, 379.
[2] Sofue, Y., & Rubin, V. (2001). Rotation curves of spiral galaxies. Annual Review of Astronomy and Astrophysics, 39(1), 137-174.
[3] Planck Collaboration. (2020). Planck 2018 results. VI. Cosmological parameters. Astronomy & Astrophysics, 641, A6.
[4] Bertone, G., & Hooper, D. (2018). History of dark matter. Reviews of Modern Physics, 90(4), 045002.
[5] Schumann, M. (2019). Direct detection of WIMP dark matter: concepts and status. Journal of Physics G: Nuclear and Particle Physics, 46(10), 103003.
[6] Milgrom, M. (1983). A modification of the Newtonian dynamics as a possible alternative to the hidden mass hypothesis. Astrophysical Journal, 270, 365-370.
[7] Rogers, J. (2025). The Unified Relativistic Potential: A Re-examination of the GPS Time Dilation Problem, https://mystry-geek.blogspot.com/2025/08/the-unified-relativistic-potential-re.html
[8] Rotation Data: Zhang et al. 2024 (MNRAS) and Corbelli et al. 2006
Appendix A: Computational Implementation
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
# --- 1. Constants and Unit Conversions ---
G = 6.67430e-11
c = 299792458
kpc_to_m = 3.086e19
kms_to_ms = 1000
SOLAR_MASS = 1.989e30
# --- 2. Galaxy Data ---
galaxy_data = {
"Andromeda_M31": {
"data": [
(1.0, 50), (2.0, 150), (3.0, 200), (4.0, 220), (5.0, 235),
(6.0, 245), (8.0, 250), (10.0, 248), (12.0, 245), (15.0, 240),
(18.0, 235), (20.0, 230), (25.0, 226), (30.0, 225), (35.0, 224),
(40.0, 223), (50.0, 220), (6.0, 215), (80.0, 200), (100.0, 180),
(125.0, 160),
]
}
}
obs_data = galaxy_data["Andromeda_M31"]["data"]
obs_radii_m = np.array([d[0] for d in obs_data]) * kpc_to_m
obs_velocities_ms = np.array([d[1] for d in obs_data]) * kms_to_ms
# --- 3. Shell Model Setup ---
NUM_SHELLS = 600
MAX_RADIUS_KPC = 125.0
MAX_RADIUS_M = MAX_RADIUS_KPC * kpc_to_m
shell_edges_m = np.linspace(0, MAX_RADIUS_M, NUM_SHELLS + 1)
radii_m = (shell_edges_m[:-1] + shell_edges_m[1:]) / 2.0
target_velocities_ms = np.interp(radii_m, obs_radii_m, obs_velocities_ms)
# --- 4. The Core Analytical Physics Model ---
MASS_SCALE_FACTOR = 1e11 * SOLAR_MASS
def calculate_predicted_velocity(scaled_mass_in_shells, radii):
"""Calculates the observed velocity curve based on the analytical shell model."""
mass_in_shells = np.maximum(0, scaled_mass_in_shells) * MASS_SCALE_FACTOR
M_enclosed = np.cumsum(mass_in_shells)
v_predicted = np.zeros_like(radii)
non_zero_r = radii > 0
r_nz = radii[non_zero_r]
M_enclosed_nz = M_enclosed[non_zero_r]
mass_in_shells_nz = mass_in_shells[non_zero_r]
v_local = np.sqrt(G * M_enclosed_nz / r_nz)
potential_from_inner_mass = -G * M_enclosed_nz / r_nz
potential_per_shell = -G * mass_in_shells_nz / r_nz
potential_from_outer_mass = np.cumsum(potential_per_shell[::-1])[::-1] - potential_per_shell
total_potential = potential_from_inner_mass + potential_from_outer_mass
time_distortion = 1.0 + abs(total_potential) / (c**2)
v_predicted[non_zero_r] = v_local * time_distortion
return v_predicted
def objective_function(scaled_mass_in_shells, target_velocities, radii):
"""The function to be minimized."""
v_predicted = calculate_predicted_velocity(scaled_mass_in_shells, radii)
error = np.sum(((v_predicted - target_velocities) / kms_to_ms)**2)
return error
# --- 5. Run the Optimization ---
print("Setting up analytical shell model...")
print(f"Solving for the mass of {NUM_SHELLS} concentric shells.")
print("-" * 30)
scale_radius_m = 8.0 * kpc_to_m
mass_profile = np.exp(-radii_m / scale_radius_m)
mass_profile_normalized = mass_profile / np.sum(mass_profile)
total_initial_mass_guess_kg = 5e11 * SOLAR_MASS
total_initial_mass_scaled = total_initial_mass_guess_kg / MASS_SCALE_FACTOR
initial_guess_scaled = mass_profile_normalized * total_initial_mass_scaled
bounds = [(0, None) for _ in range(NUM_SHELLS)]
print("Starting optimizer to find mass distribution...")
result = minimize(
fun=objective_function,
x0=initial_guess_scaled,
args=(target_velocities_ms, radii_m),
method='L-BFGS-B',
bounds=bounds,
# --- KEY FIX 1: Give the optimizer more evaluations to prevent premature stopping ---
options={'disp': True, 'maxiter': 500, 'ftol': 1e-15, 'gtol': 1e-9, 'maxfun': 20000}
)
print("-" * 30)
# --- 6. Process and Display Results ---
print("Optimization has finished. Displaying final results...")
if not result.success:
print(f"NOTE: Optimizer may not have reached full mathematical convergence. Message: {result.message}")
optimal_scaled_mass = result.x
final_predicted_velocities_ms = calculate_predicted_velocity(optimal_scaled_mass, radii_m)
predicted_velocities_at_obs_points_ms = np.interp(obs_radii_m, radii_m, final_predicted_velocities_ms)
print("\n" + "="*85)
print(" Comparison of Observed vs. Predicted Velocities (Analytical Model)")
print("="*85)
print(f"{'Radius (kpc)':<15} {'Observed Vel (km/s)':<25} {'Predicted Vel (km/s)':<25} {'Ratio (Pred/Obs)':<20}")
print("-" * 85)
for i in range(len(obs_radii_m)):
radius_kpc = obs_radii_m[i] / kpc_to_m
observed_kms = obs_velocities_ms[i] / kms_to_ms
predicted_kms = predicted_velocities_at_obs_points_ms[i] / kms_to_ms
ratio = predicted_kms / observed_kms if observed_kms != 0 else float('inf')
print(f"{radius_kpc:<15.2f} {observed_kms:<25.2f} {predicted_kms:<25.2f} {ratio:<20.4f}")
print("="*85 + "\n")
rmse = np.sqrt(np.mean(((predicted_velocities_at_obs_points_ms - obs_velocities_ms)/kms_to_ms)**2))
print(f"\nOverall Root Mean Square Error (RMSE): {rmse:.4f} km/s")
optimal_mass_per_bin_kg = optimal_scaled_mass * MASS_SCALE_FACTOR
total_mass_solar = np.sum(optimal_mass_per_bin_kg) / SOLAR_MASS
# --- KEY FIX 2: Calculate and print the central mass ---
central_radius_m = 1.0 * kpc_to_m
central_mask = radii_m <= central_radius_m
central_mass_kg = np.sum(optimal_mass_per_bin_kg[central_mask])
central_mass_solar = central_mass_kg / SOLAR_MASS
print(f"Central mass (within 1.0 kpc): {central_mass_solar:.2e} Solar Masses")
print(f"Total mass required by this model: {total_mass_solar:.2e} Solar Masses")
# Plotting
plot_title = 'Analytical Shell Model for Andromeda (M31)'
if not result.success:
plot_title += ' - (NOTE: Convergence not fully proven)'
# Calculate data for the plots
shell_volumes = 4/3 * np.pi * (shell_edges_m[1:]**3 - shell_edges_m[:-1]**3)
shell_volumes[shell_volumes == 0] = 1e-99
mass_density = optimal_mass_per_bin_kg / shell_volumes
cumulative_mass_kg = np.cumsum(optimal_mass_per_bin_kg)
cumulative_mass_solar = cumulative_mass_kg / SOLAR_MASS
# --- NEW: Re-calculate the Time Dilation Factor for the new plot ---
# This duplicates the logic from the physics model using the final mass distribution
time_dilation = np.ones_like(radii_m) # Default to 1.0 (no dilation)
non_zero_r = radii_m > 0
r_nz = radii_m[non_zero_r]
mass_in_shells_nz = optimal_mass_per_bin_kg[non_zero_r]
M_enclosed_nz = cumulative_mass_kg[non_zero_r]
potential_from_inner_mass = -G * M_enclosed_nz / r_nz
potential_per_shell = -G * mass_in_shells_nz / r_nz
potential_from_outer_mass = np.cumsum(potential_per_shell[::-1])[::-1] - potential_per_shell
total_potential = potential_from_inner_mass + potential_from_outer_mass
time_dilation[non_zero_r] = 1.0 + abs(total_potential) / (c**2)
# --- End NEW ---
# --- MODIFIED: Change subplots from (3, 1) to (4, 1), figsize, and add ax4 ---
fig, (ax1, ax2, ax3, ax4) = plt.subplots(4, 1, figsize=(12, 22))
# --- End MODIFIED ---
fig.suptitle(plot_title, fontsize=16)
# Plot 1: Rotation Curve (Unchanged)
ax1.set_title('Galaxy Rotation Curve')
ax1.plot(obs_radii_m / kpc_to_m, obs_velocities_ms / kms_to_ms, 'ko', label='Observed Data Points (M31)')
ax1.plot(radii_m / kpc_to_m, final_predicted_velocities_ms / kms_to_ms, 'r-', label='Fitted Model Velocity')
ax1.set_xlabel('Radius (kpc)')
ax1.set_ylabel('Observed Velocity (km/s)')
ax1.legend()
ax1.grid(True, linestyle='--', alpha=0.6)
# Plot 2: Mass Density Profile (Unchanged)
ax2.set_title('Resulting Mass Density Profile')
ax2.semilogy(radii_m / kpc_to_m, mass_density, 'b-', label='Fitted Mass Density')
ax2.set_xlabel('Radius (kpc)')
ax2.set_ylabel('Mass Density (kg / m$^3$)')
ax2.legend()
ax2.grid(True, linestyle='--', alpha=0.6)
# Plot 3: Cumulative Mass (Unchanged)
ax3.set_title('Cumulative Enclosed Mass')
ax3.plot(radii_m / kpc_to_m, cumulative_mass_solar, 'g-', label='Enclosed Mass')
ax3.set_xlabel('Radius (kpc)')
ax3.set_ylabel('Enclosed Mass (Solar Masses)')
ax3.legend()
ax3.grid(True, linestyle='--', alpha=0.6)
# --- NEW: Add the Time Dilation Plot ---
ax4.set_title('Gravitational Time Dilation')
ax4.plot(radii_m / kpc_to_m, time_dilation, 'm-', label='Time Dilation Factor')
ax4.set_xlabel('Radius (kpc)')
ax4.set_ylabel('Time Rate (relative to ∞)')
ax4.get_yaxis().get_major_formatter().set_useOffset(False) # Prevents scientific notation offset
ax4.legend()
ax4.grid(True, linestyle='--', alpha=0.6)
# --- End NEW ---
plt.tight_layout(rect=[0, 0, 1, 0.96])
plt.savefig('galaxy_model_plot.png')
Appendix B: Error Analysis
[Detailed analysis of uncertainties and systematic effects]
Appendix C: Additional Galaxy Tests
[Results from preliminary tests on other galaxy systems]
| Had to limit the size of the galaxy to 25kpc to get this result. This may mean that it does not have an extended outer layer. |
No comments:
Post a Comment