爱情岛论坛首页永久入口,欧美人与禽猛交乱配视频,yw.193.cnc爆乳尤物未满,亚洲精品国产综合麻豆久久99,很黄很色120秒试看

逗游網(wǎng):值得大家信賴的游戲下載站!

微信:doyo_game
關(guān)注逗游
單機(jī)首頁 游戲庫 排行榜 資訊 攻略 專題 合集 工具補(bǔ)丁 手機(jī)游戲 正版商城
所在位置:攻略中心 > 圖文攻略 > 正文

戴森球計劃恒星戴森球軌道半徑計算簡析

發(fā)布時間:2021-04-20 10:23 來源:bilibili  作者:FVortex

 

戴森球計劃中的恒星戴森球軌道半徑如何計算?相信大部分玩家都還不清楚,下面一起來看看恒星戴森球軌道半徑計算簡析吧。

戴森球計劃恒星戴森球軌道半徑計算簡析

簡介

在游戲里造戴森球的時候, 我們往往需要尋找一個合適的星系建造戴森球. 一般來講, 一個適合建造戴森球的星系需要:

高的光度, 以達(dá)到更大的生產(chǎn)功率

最大戴森球軌道半徑大于第一行星公轉(zhuǎn)軌道半徑的 1.35 倍, 以實現(xiàn)全行星全天候都可以接收到產(chǎn)生的電力.[1]

雖然, 我們能夠使用 Y 鍵查看戴森球的最大半徑, 但這個操作必須在伊卡洛斯在該恒星的星系內(nèi)部才能進(jìn)行, 而飛行過程則需要能量, 拋曲器, 和最重要的時間. 為了節(jié)約這些資源, 我們需要在不飛往目標(biāo)恒星的情況下, 對恒星做出篩選. 因此, 獲知恒星參數(shù)和戴森球軌道半徑的關(guān)系就十分重要了. 根據(jù)數(shù)據(jù)反推公式十分消耗時間, 所以這里利用了反編譯工具對游戲代碼進(jìn)行解析, 以直接獲取恒星戴森球軌道半徑的計算公式.

工具介紹

主要使用了 dotPeek 工具對戴森球計劃的程序 dll 文件進(jìn)行了反編譯. dotPeek 是 JetBrains 開發(fā)的一款反編譯 .Net 程序的軟件. 可以在其官網(wǎng)上免費(fèi)下載. 建議使用網(wǎng)絡(luò)安裝器, 離線安裝器里面大部分的內(nèi)容與本文所用的功能無關(guān).

解析過程

首先, 找到游戲文件夾中的 DSPGAME_DataManagedAssembly-CSharp.dll, 用 dotPeek 打開. 在 中找到 DysonSphere. 雙擊其中的 Init 函數(shù)打開, 可以看到如下代碼:


DysonSphere 類中的初始化代碼, 包含了戴森球半徑的范圍信息

可以看到, minOrbitRadius, 也就是半徑最小值, 是恒星半徑的 1.5 倍, 但不會小于 40000 m, 但如果恒星的類型是巨星, 則在此基礎(chǔ)上再乘以 0.6; 得到結(jié)果后, 向上取整到整百. 而半徑的最大值 maxOrbitRadius, 則是和恒星的 dysonRadius 屬性有關(guān): 是 dysonRadius (根據(jù) defOrbitRadius 的計算方式, 推斷單位為 au) 的 2 倍, 然后四舍五入到整百. 因此, 我們需要到恒星數(shù)據(jù) StarData 類里面尋找相關(guān)信息.

進(jìn)入 StarData 類, 搜索 dysonRadius 屬性, 發(fā)現(xiàn)除了一個默認(rèn)值為 10 au 以外, 沒有改動這個屬性的代碼. 因此, 我們可能需要到恒星生成相關(guān)的代碼里面去尋找答案.

在按字母序排序的類列表里, StarData 的正下方是 StarGen 類, 這里可能有我們需要的代碼段. 進(jìn)入 StarGen 類, 再次搜索 dysonRadius 字段. 發(fā)現(xiàn)答案就在這里.


StarGen 類的代碼片段, 包含了生成恒星的 dysonRadius 屬性值的代碼 (已選中部分)

從下往上讀, 發(fā)現(xiàn):

dysonRadius ≥ 1.5 倍恒星半徑, 過小取下限

dysonRadius = 0.28 * orbitScaler

當(dāng) orbitScaler < 1 時, orbitScaler 取 0.4 * orbitScaler + 0.6

orbitScaler = 1.35 ^ p2

p2 = num9 + 2

如果 num9 < 0, 則自乘 4, 然后限制 num9 在 -4 到 2 之間, 過大取最大值, 過小取最小值.

這里 T 是恒星表面溫度.

分類討論并歸納可得:


可得戴森球最大半徑計算公式:


因此, 可以得到恒星溫度與戴森球最大半徑的關(guān)系圖:


溫度與戴森球最大半徑的對應(yīng)關(guān)系圖. 圖中顏色代表了光譜類型. 從上面讀到的代碼中可以找到恒星的光譜類型: 將 num9 + 4 之后四舍五入到整數(shù). 0~7 分別對應(yīng): M, K, G, F, A, B, O, X. 圖中忽略了 X 型光譜. 為閱讀方便, 圖中溫度軸從黑實線處分為比例不同的兩段.

特殊情況

對于主序星, 上面的討論是合適的. 但對于部分特殊恒星, 上述討論并不適用. 因為在計算完戴森球半徑之后, 程序會調(diào)用 StarGen::setStarAge 函數(shù), 對恒星的溫度做出修正:

對于黑洞, 溫度設(shè)為 0 K;

對于中子星, 溫度設(shè)為原來的 倍;

對于白矮星, 溫度設(shè)為原本的 150000 倍;

對于巨星, , 這里 age 的取值范圍為 0.959999978542328 ~ 1.0, 猜測為恒星的生命周期. 后面將闡述如何從面板數(shù)據(jù)中獲取 age 參數(shù).

Age 參數(shù)的獲得

可以看到, 在計算 num9 的代碼上方, 是決定恒星溫度的代碼. 這里用到了 age 參數(shù)和恒星質(zhì)量. 因此, 可以根據(jù)恒星的溫度和質(zhì)量反解出恒星的 age 參數(shù). 這里不再細(xì)究.


用 age 和 mass 決定溫度的代碼


計算程序

上述算法可以寫成 Python 程序以供使用:

from numpy import log, clip, round

def getMaxDysonSphereRadius(T, starRadius=0):

num9 = log((T-1300)/4500)/log(2.6)-0.5

num9 = num9 * 4 if num9 < 0 else num9

p2 = clip(num9, -4, 2) + 2

orbitScaler = 1.35 ** p2

if orbitScaler < 1:

orbitScaler = 0.4 * orbitScaler + 0.6

result = 0.56 * orbitScaler

if result < 3 * starRadius:

查看更多游戲攻略>>
標(biāo)簽: 
http://www.thav.cn/article/439410復(fù)制本文地址
閱讀本文后,您的心情是:(選擇后可查看結(jié)果)
 
惡心
憤怒
強(qiáng)贊
感動
路過
無聊
雷囧
關(guān)注
今日關(guān)注游戲
游戲?qū)n}
IGN 9分以上作品 愿者上鉤釣魚的那點趣事 深冬之寒,來一起看看游戲中精美的雪景吧