国产成人精品2021,国产成人精品必看,大肉大捧一进一出好爽,国产成人av三级在线观看,国产成人精品久久综合

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

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

戴森球計(jì)劃恒星戴森球軌道半徑計(jì)算簡(jiǎn)析

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

 

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

戴森球計(jì)劃恒星戴森球軌道半徑計(jì)算簡(jiǎn)析

簡(jiǎn)介

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

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

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

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

工具介紹

主要使用了 dotPeek 工具對(duì)戴森球計(jì)劃的程序 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 倍, 但不會(huì)小于 40000 m, 但如果恒星的類型是巨星, 則在此基礎(chǔ)上再乘以 0.6; 得到結(jié)果后, 向上取整到整百. 而半徑的最大值 maxOrbitRadius, 則是和恒星的 dysonRadius 屬性有關(guān): 是 dysonRadius (根據(jù) defOrbitRadius 的計(jì)算方式, 推斷單位為 au) 的 2 倍, 然后四舍五入到整百. 因此, 我們需要到恒星數(shù)據(jù) StarData 類里面尋找相關(guān)信息.

進(jìn)入 StarData 類, 搜索 dysonRadius 屬性, 發(fā)現(xiàn)除了一個(gè)默認(rèn)值為 10 au 以外, 沒有改動(dòng)這個(gè)屬性的代碼. 因此, 我們可能需要到恒星生成相關(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 時(shí), orbitScaler 取 0.4 * orbitScaler + 0.6

orbitScaler = 1.35 ^ p2

p2 = num9 + 2

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

這里 T 是恒星表面溫度.

分類討論并歸納可得:


可得戴森球最大半徑計(jì)算公式:


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


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

特殊情況

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

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

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

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

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

Age 參數(shù)的獲得

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


用 age 和 mass 決定溫度的代碼


計(jì)算程序

上述算法可以寫成 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.hneea.com.cn/article/439410復(fù)制本文地址
閱讀本文后,您的心情是:(選擇后可查看結(jié)果)
 
惡心
憤怒
強(qiáng)贊
感動(dòng)
路過
無聊
雷囧
關(guān)注
今日關(guān)注游戲
游戲?qū)n}
IGN 9分以上作品 愿者上鉤釣魚的那點(diǎn)趣事 深冬之寒,來一起看看游戲中精美的雪景吧