Jump to content

Help setting up a Satellite ComNetwork


Recommended Posts

Hello, I have a question regarding the setup of a Satellite ComNetwork with the Interstellar Adventure Revived mod, which adds additional stars to the game. The nearest is around 20Tm from Kerbol away. As I have antennas with ranges to short to comunicate the distance I need to setup a com network with multiple layers of satellites. How do I calculate the maximum distance between two nearest sattelites of the different orbits (a red and a orange point in the sketch). I already now how you would calculate the shortest distance between two satellites on the same orbit: The distance would be d = 2*sin(pi/n)*r with n being the number of satellites on each orbit and r being the radius of the orbit to the center of gravity of the orbit.0yT1k8s.png

Could anyone help me?

 

Sidenote: How can I create nice looking formulas in a post?

Link to comment
Share on other sites

If I understand correctly, the radii of your orbits are going to be enormous. Anything you put in those orbits will be effectively stationary for centuries, because the orbital periods will be extremely long. So I would say, ignore the fact that it's an orbit. Just put one straight string of commsats between the two destinations at almost their maximum separation. In 500 years, a couple of them may drift out of range. So you send up another one or two to replace them.

 

Edited by bewing
Link to comment
Share on other sites

2 hours ago, Schetefan said:

How do I calculate the maximum distance between two nearest sattelites of the different orbits (a red and a orange point in the sketch).

First calculate the distance between the orange satellites (you mentioned you already know how to do this). Then, some basic geometry:

The maximum distance between a red and an orange dot can occur when the red dot sits exactly in the middle between two orange dots. That means these three satellites (one red, two orange) form a triangle. The hypotenuse is the distance between the two orange ones, which is a known value, and the other two sides are exactly identical.

Solve via Pythagoras: A² + B² = C², where A = B, and C is a known value --->  2 A² = C² --->  A² = C² / 2 ---> A = SQRT(C² / 2)

Link to comment
Share on other sites

8 hours ago, Schetefan said:

20Tm from Kerbol

^ yeah, definitely don't bother with rings of satellites.  Do what @bewing suggested above:

8 hours ago, bewing said:

So I would say, ignore the fact that it's an orbit. Just put one straight string of commsats between the two destinations at almost their maximum separation.

 

It's worth noting that the most powerful stock antenna has a rating of only 100G, which means you'd need a chain of at least two hundred relay satellites in a straight line to connect to something 20T away.  Even if you boost their range somewhat by putting multiple antennas per relay, you're still going to need a lot of them to build a chain.  Many dozens.

So, if you're doing this and don't want it to be unspeakably tedious, you're going to need some longer-range antennas.  You may find this mod useful:

...but even that one is just 1T, which means you'd need a chain of twenty of 'em.  So you may also want to do some ModuleManager hacking to boost antenna power further, unless you don't mind setting up a chain of lots of communication relays.

Link to comment
Share on other sites

@Snark I already have your mod installed. And it seems like the idea with the continous chain of satellites seems like the best Idea. I'm still interested in the correct solution for my problem.

Link to comment
Share on other sites

Well, it's not that hard, really. In your initial solution, you were assuming that both orbits had the same number of satellites, so I'll do the same. Let's assume that the outer orbit has satellites (in polar coordinates) at (R2, 2*pi / n). The inner orbit is at (R1, 2*pi/n + pi/n) -- so they are exactly out of phase. So you pick satellite number 0 on both orbits, and do a vector subtraction. Then calculate the magnitude. So, unless I screwed up my math

= sqrt ((R2 - R1*cos(pi/n))^2 + R1*sin(pi/n)^2)

Link to comment
Share on other sites

Another question to keep in mind here is how the commsats are powered. If you're using solar panels... no dice, they will get no significant power terameters away. If you're using reactors... those run out of fuel. If you're using RTGs, be sure not to have RTG decay configs.

Anyways, I think I have a semi-answer based on a greedy algorithm: you will need 1610 satellites in 24 rings, assuming you let relays be a maximum of 990 Gm from each other (if you are using the root model with the JX2 antennae, that goes down to just 411 satellites in 12 rings with a maximum separation of 1980 Gm).

Increased range of the antenna drops the number of satellites needed enormously; as distance needed becomes large, the number of satellites is proportional to the square of (distance/antenna range), so by doubling antenna range, you reduce the needed number of satellites by a factor of about 1/4. You might kinda want a JX2000 for this one.

As usual for me: Java with the Apache FastMath package, which can be 1:1 substituted with just the regular Java Math class.

    public static void optNetworky(double target, double range) {
        List<Integer> circleSats = new ArrayList<>();
        circleSats.add(3);
        double currSep = range;
        double halfR = 0.5 * range;
        double currAlt = halfR / FastMath.sin(FastMath.toRadians(60));
        double r2 = range * range;
        double pi2 = 2.0 * Math.PI;
        /*
         * Algorithm: knowing the altitude of the current ring of satellites and the separation between them, figure
         * out the maximum altitude of a satellite that is exactly between and 1x range beyond them. Knowing that
         * altitude, figure out how many satellites must be in the next ring.
         */
        while (currAlt < target) {
            double extraAlt = currSep * 0.5;
            extraAlt *= extraAlt;
            extraAlt = r2 - extraAlt;
            extraAlt = FastMath.sqrt(extraAlt);
            currAlt += extraAlt;
            double maxTheta = FastMath.asin(halfR / currAlt) * 2.0;
            int nSats = (int) FastMath.ceil(pi2 / maxTheta);
            double theAngle = pi2 / nSats;
            currSep = currAlt * FastMath.sin(theAngle);
            circleSats.add(nSats);
            System.out.println(String.format(" New ring with %d sats, altitude of %9.4g, and separation of %9.4g", nSats, currAlt, currSep));
        }

        int totalSats = circleSats.stream().mapToInt(Integer::intValue).sum();
        int numRings = circleSats.size();
        System.out.println(String.format(" Total: %d rings with %d satellites", numRings, totalSats));
    }

EDIT: Short version, do what Bewing and Snark suggested.

Edited by Starman4308
Link to comment
Share on other sites

But then think how much time will be required to get those satellites in place.

 

The best, non-modding solution is;

1)  build a big, "fancy", DSN satellite, costing a LOT of money; make it look pretty, and tell yourself it has a range of 50Tm and all your communications needs are solved.

2)  disable Relay.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...