• Welcome to the new COTI server. We've moved the Citizens to a new server. Please let us know in the COTI Website issue forum if you find any problems.

Solar System Renderer/Viewer

TheEngineer

SOC-14 1K
Hi folks,

one week ago I started a new construction site dealing with a solar system renderer (callsign "SystemView). It does NOT generate solar systems. AFAIK there are a few other tools doing this.
At least it was motivated by the last jump/100D limit discussions.

Well, things went well and I have got a working prototype, who accepts solar system data in XML format and displays the stuff graphicaly in a pannable and zoomable map with a user definable grid.
You can save the selected view anytime you want....

Now a question to make thinks more complicate:
I would like to display planetary orbital positions fitting to a special time in MTU/YTU.
Referring to standard data sources we dont have this information.
I could extend the XML scheme in order to provide additional orbital information, but at least this might lead to another problems to keep different TUs compliant..

So, what would you think about using the actual data we have to generate desired information in a reproduceable way ?
This could be done e.g. by some normal hash functions..
E.g. we have offical basic system data (UWP etc...). Combined with hex coordinates and system name I could generate attributes like solar system ecliptic angle.
Doing the same on the level of orbital bodies in a system I could also use body name und UWP to generate orbital starting positions at a virtual time t0.

Then anyone could be able to specify the actual time in his TU and SystemView would be able to show nearly exact orbital positions at a given time.

Any comments,

Mert
 
This sounds like a program that (at least for me) would very useful. It would also be very useful for deteriming travel time between planets.

When will it be available?
 
Dear Engineer,

I think this is an excellent way of setting
orbital positions. A hash function based on
Hex, UWP, orbital radius maybe, and current
Imperial time is really cool, and best of all
it's 'dataless' in that only the equation
needs to be coded and only existing data is
used.

Would you like to share the hash function with us?
 
I've never thought about calculating the ecliptic, but I've always thought using a world's UWP + current Imperial date would be an excellent way to calculate an orbital position. In fact, the Hex location, the 'size' attribute, plus the orbital radius might give us all the data we need.

Period(days) = 365 * R^1.5 ? R in AUs?
Freq = 2 * PI / Period ?

t(0) offset = (int)(hex * size * R) % (2 * PI) ?

t(n) position = ((t(0) + today) * Freq) % (2 * PI) ? (radians)

where

today = ( (Base + Target_Year) * 365 + day ) ?

where

Base = something large, like 10,000,000,000 ?


While this graph would look absurd and contrived in year -10,000,000,000, it would look okay a 'while' later. I suspect even the passage of a few centuries is enough to effectively 'randomize' orbital positions, wouldn't it?
 
Hi Travellers,

if somebody wants to try the software just give
me a mail to traveller at vuraldi dot de.
I will reply with a tiny attachment.
Its really tiny (20 k or so..) because I dont use additional VB controls like a file common dialog so far.
Thats saves quite a bunch of bytes.

The only thing you need to run it is a VBrun60.dll.

I have already contacted Jeff Zeitlin to place it in his Software Library...

The hash code snippet will be provided as soon as accomplished, namely tomorrow

I am quite interested in the result of using the hash code myself...

Perhaps somebody is also willing to help me to improve the XML structure of the system files.
Guess I am mixing attributes and subitems quite creatively


Regards,

Mert
Rapid Engineer
 
Hi robject,

wanna have code ?
Here it comes.
Its a slightly modified version of CRC stuff I found in an abyss of my HD.

</font><blockquote>code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">
Public Sub InitPolyTable(Optional ByVal PolyBase As Long = &HEDB88320)
Dim CRC As Long
Dim lCounter As Integer
Dim lSubCounter As Integer
For lCounter = 0 To 255
CRC = lCounter
For lSubCounter = 0 To 7
If CRC And &H1 Then
CRC = ((CRC And &HFFFFFFFE) \ &H2 And &H7FFFFFFF) Xor PolyBase
Else
CRC = CRC \ &H2 And &H7FFFFFFF
End If
Next lSubCounter
lPolyTable(lCounter) = CRC
Next lCounter
End Sub
-----------------------------------------------
Public Function CalcCRC32(sData As String) As Long
Dim CRC As Long
Dim lCounter As Long
Dim Bytes() As Byte
InitPolyTable

ReDim Bytes(Len(sData) - 1)
For lCounter = 1 To Len(sData)
Bytes(lCounter - 1) = Asc(Mid(sData, lCounter, 1))
Next lCounter

CRC = &HFFFFFFFF
For lCounter = LBound(Bytes) To UBound(Bytes)
CRC = ((CRC And &HFFFFFF00) \ &H100) And &HFFFFFF _
Xor lPolyTable(Bytes(lCounter) Xor CRC And &HFF&)
Next lCounter
CalcCRC32 = Abs(Not CRC)
End Function</pre>[/QUOTE]Just pass a string to this function and you will receive a long value charcterizing the string.
Not really unique but best for purpose.
To get a value of a given range I use

AnglePosition = CalcCRC32(<Sring with name etc>) mod 360

Works well.

Regards,

Mert
 
Mert,

I'm direly interested in this. You have my e-mail. Sorry I haven't been more available, but a rather catastrophic real-life situation has tied me up and promises to continue to do so for the next quarter.

I'm very interested in this project (and making a portable or on-line variant) and in the underlying ideas.... I just can't contribute much right now. I just wanted you to know I support your work. Absence of my comments of support should not be infered to mean my support is absent


Tomb
 
Hi Tomb,

as You gave the major inspriration for creating this software I would be glad if You are willing to make it portable....

As I am playing around with e.g. JDeveloper or Eclipse we could cooperate


The non-portable version evil VB version is on its way.

Take care for Your real life !

Regards,

Mert
 
Back
Top