Skip to content

Commit 02db661

Browse files
author
Зелёный Андрей Сергеевич
committed
Добавлены методы для вычисления двумерного Гауссиана
1 parent 5d20415 commit 02db661

File tree

1 file changed

+36
-5
lines changed

1 file changed

+36
-5
lines changed

Surface.cs

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,44 @@
1-
namespace DijkstraAlgorithm
1+
using System;
2+
3+
namespace DijkstraAlgorithm
24
{
35
public static class Surface
46
{
5-
public static double Plane(double x, double y)
7+
public static double Plane(double x, double y) => 0.0;
8+
9+
/// <summary>
10+
/// Возвращает значение функции Гаусса (двумерный Гауссиан).
11+
/// Описание параметров (раздел "Многомерные обобщения"): https://ru.wikipedia.org/wiki/%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%BE%D0%B2%D0%B0_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F
12+
/// </summary>
13+
/// <param name="x">абсцисса точки, в которой необходимо вычислить двумерный Гауссиан</param>
14+
/// <param name="y">ордината точки, в которой необходимо вычислить двумерный Гауссиан</param>
15+
/// <param name="A">высота колокола</param>
16+
/// <param name="sigmaX">размах колокола по оси Ox</param>
17+
/// <param name="sigmaY">размах колокола по оси Oy</param>
18+
/// <param name="x0">сдвиг пика по оси Ox</param>
19+
/// <param name="y0">сдвиг пика по оси Oy</param>
20+
/// <returns></returns>
21+
public static double Gaussian(double x, double y, double A, double sigmaX, double sigmaY, double x0, double y0)
22+
{
23+
double xx = Math.Pow(x - x0, 2.0) / (2.0 * Math.Pow(sigmaX, 2.0));
24+
double yy = Math.Pow(y - y0, 2.0) / (2.0 * Math.Pow(sigmaY, 2.0));
25+
26+
return A * Math.Exp(-(xx + yy));
27+
}
28+
29+
/// <summary>
30+
/// Возвращает значение функции Гаусса (двумерный Гауссиан).
31+
/// </summary>
32+
/// <param name="x">абсцисса точки, в которой необходимо вычислить двумерный Гауссиан</param>
33+
/// <param name="y">ордината точки, в которой необходимо вычислить двумерный Гауссиан</param>
34+
/// <param name="gaussianParameters">набор параметров</param>
35+
/// <returns></returns>
36+
public static double Gaussian(double x, double y, GaussianParameter gaussianParameters)
637
{
7-
if (x == 0.0 && y == 1.0)
8-
return 1.0;
38+
double xx = Math.Pow(x - gaussianParameters.x0, 2.0) / (2.0 * Math.Pow(gaussianParameters.sigmaX, 2.0));
39+
double yy = Math.Pow(y - gaussianParameters.y0, 2.0) / (2.0 * Math.Pow(gaussianParameters.sigmaY, 2.0));
940

10-
return 0.0;
41+
return gaussianParameters.A * Math.Exp(-(xx + yy));
1142
}
1243
}
1344
}

0 commit comments

Comments
 (0)