Гауссовский формат спада для манипулирования сеткой - PullRequest
0 голосов
/ 29 октября 2011

Это возвращение ниже определяется как гауссовский спад.Я не вижу e или степени 2, поэтому я не уверен, как это связано с затуханием по Гауссу, или это неправильный тип выпадения, который я могу использовать, чтобы получить хорошую плавную деформацию в моей сетке:

 Mathf.Clamp01 (Mathf.Pow (360.0, -Mathf.Pow (distance / inRadius, 2.5) - 0.01))

, где Mathf.Clamp01 возвращает значение от 0 до 1.

inRadius - размер искажения, а distance определяется:

        sqrMagnitude = (vertices[i] - position).sqrMagnitude;
        // Early out if too far away
        if (sqrMagnitude > sqrRadius)
            continue;
        distance = Mathf.Sqrt(sqrMagnitude);

vertices - это список вершин сетки, а position - точка манипуляции / деформации сетки.

Мой вопрос состоит из двух частей:

1) Является ли приведенное выше фактическим спадом по Гауссу?Это экспоненциально, но, кажется, нет решающего значения e или степени 2 ... (Обновлено - я вижу, как график, по-видимому, плавно убывает по-гауссовски. Возможно, эта функция не является причиной проблемы 2ниже)

2) Моя сетка не деформируется достаточно плавно - учитывая вышеприведенные параметры, вы бы порекомендовали другой спад по Гауссу?

1 Ответ

0 голосов
/ 30 октября 2011

Не знаю о сетках и т. Д., Но давайте посмотрим, что математика:

f = 360 ^ (- 0.1- ((d / r) ^ 2.5)) выглядит достаточно похоже на гауссовскую функцию, чтобы сделать"отвалиться".Я разберу показатель степени, чтобы показать точку: f = 360 ^ (- (d / r) ^ 2.5) * 360 ^ (- 0.1) = (0.5551) * 360 ^ (- (d / r) ^ 2.5)

если d -> + inf, то f -> 0, если d -> + 0, то f -> (0.5551), показатель 360 всегда отрицателен (при условии, что «distance» и «inRadius»)всегда являются положительными) и становятся большими (более отрицательными) почти кубически (степень 2,5) с расстоянием, таким образом, функция «падает» и делает это довольно быстро.

Вывод: функция не является гауссовой, потому что она ведет себяплохо за отрицательный вклад и, вероятно, по другим причинам.Это действительно демонстрирует искомое поведение, которое вы ищете.Изменение r изменит скорость падения.Когда d == r, f = (1/360) * 0,5551.Функция никогда не будет превышать 0,5551 и ниже нуля, поэтому «отсечение» в коде не имеет смысла.

Я не вижу какой-либо конкретной причины для постоянной 360 - изменение ее немного меняет наклон.

ура!

...