臥槽一天就寫這個了, 好累啊。。。orz
以後還是寫的濃縮點吧。。
----------------------正文分割--------------------------
這篇文章, 主要討論之前提到的, 我對於約束條件的一些看法。
在我看來, 這種過程類似於自然選擇的過程。 而約束在我看來有2種, 一是對行星產生時的約束, 二是淘汰行星的約束。
產生行星的約束:
從太陽系的數據來看, 有幾個點可以發掘:
1. 軌道的傾斜角都不高
2. 速度與軌道半徑存在一定的關係。
- 行星的軌道離心率普遍較低。
Vector3 ProperArea(float min, float max) {
float x = (max - min) * Random.value + min;
float y = (max - min) * Random.value + min;
float z = (max - min) * Random.value + min;
return new Vector3 (x * PosiOrNega(), y * PosiOrNega() / 10, z * PosiOrNega() / 10);
}
int PosiOrNega() {
return Random.Range (1, 3) * 2 - 3;
}
Vector3 ProperDirect(Vector3 pos) {
float x = Random.value , y = Random.value / 10, z = Random.value;
//Debug.Log (x.ToString ()+y.ToString() +z.ToString());
float Norm = Mathf.Sqrt (y * y + z * z);
if (pos.y > 0)
y = -y;
if (pos.x > 0) return new Vector3 (0 , y / Norm, z / Norm);
else return new Vector3 (0 , y / Norm, -z / Norm);
}
void EclipseFliter(float k) {
if (Dist > max)
max = Dist;
if (Dist < min)
min = Dist;
if (LifeTime < 300f && (2 * (max - min) / (max + min) > k || (max - min) > k / 3 * GalaxyRange)) {
if (max == Dist)
ForceCoff*= 0.99f;
if (min == Dist)
ForceCoff*= 1.01f;
Destroy (this.gameObject);
}
}
這裏面的參數有很多。。 每個都代表一個想法。。。