Это вопрос к математикам. Точную формулу не получить, из похожих с логарифмом или степенной функцией. Вот пример:
Код
    public static float Circle(int x, int y, int size)
    {
        float d = Vector2.Distance(new Vector2(size / 2, size / 2), new Vector2(x, y));
        float radius = size / 2f;
        d = radius * 0.8f - d;
        d = Mathf.Clamp(d, 0f, radius * 0.7f);
        d = Mathf.Pow(d * 6, 0.6f);
        return d;
    }
В Unity лучше использовать AnimationCurve, если объявить поле в скрипте этого типа, то через Инспектор можно будет задать кривую, а в коде использовать метод Evaluate, чтобы определять любое сечение купола.
Добавлено (01 июля 2016, 13:42)
---------------------------------------------
Если интересно, вот так использовал AnimationCurve:
Код
using UnityEngine;
public class Deformation : MonoBehaviour
{
    public AnimationCurve Curve;
    void Start()
    {
        Mesh mesh = GetComponent<MeshFilter>().mesh;
        Vector3[] vertices = mesh.vertices;
        for (int i = 0; i < vertices.Length; i++) {
            var v = vertices[i];
            float z = Circle((int)v.x, (int)v.y, 100);
            vertices[i] += new Vector3(0f, 0f, z);
        }
        mesh.vertices = vertices;
        mesh.RecalculateNormals();
    }
    public float Circle(int x, int y, int size)
    {
        float d = Vector2.Distance(new Vector2(size / 2, size / 2), new Vector2(x, y));
        float radius = size / 2f;
        float maxDistance = radius * 0.8f;
        d = maxDistance - d;
        d = Mathf.Max(0f, d);
        d = maxDistance * Curve.Evaluate(d / maxDistance);
        return d;
    }
}