總所周知,在現在的 Arcaea 版本中 Arc 的 Segments 都會隨著它們自身所處的高度的平均值[1]進行 Segment 漸變[2],但是截止到目前貌似是沒有做低於 0 的限制,導致了 Segment 自身高度在低於 0 時會出現一些奇奇怪怪的顏色。
以下是個人推測的公式,在這裡我使用 C# 作為演示:
// 關於 FromPos 和 ToPos 以及 ArcAlgorithm 類可以檢視 Arcade 中的 ArcSegmentComponetn.cs 和 ArcAlgorithm.cs // 不代表本體就是這麼寫的,僅僅是個人推測 public float SegmentHeight => ArcAlgorithm.WorldYToArc(FromPos.y + ToPos.y) / 2f; public Color GetLerpColor(Color low, Color high) { // 我知道有 Color.Lerp 這個方法,但這裡要做測試不能使用這個 float height = MathF.Min(SegmentHeight * 0.8f, 1f); // 這裡 * 0.8f 我也不知道為什麼這麼寫,不過寫上看起來確實和本體差不多了(資料為推測,不代表真實資料) float lerp(float x, float y) // 返回 x 和 y 之間的過渡值 => x + (y - x) * height; float checkNumber(float x) // 檢查數值是否為合理值並限制數值並返回 { x *= 255; // 因為 Color 中的值是用 0 ~ 1 的 float 存的,所以這裡 * 一個 255 return (x < 0 ? x % 256 + 256 : x % 256) / 255f; // 最後給它還原為 0 ~ 1 之間的範圍 } return new Color( checkNumber(lerp(low.r, high.r)), // 紅 checkNumber(lerp(low.g, high.g)), // 綠 checkNumber(lerp(low.b, high.b)) // 藍 ); }以下測試圖片的 Arc 頂部都為 3.00,底部都為 -10.00(實際上三條蛇僅顏色和 x 位置不同):
Arc 原始顏色
三原色(RGB)









