Полезная ссылки по данной теме:
- [[Как измерить расстояние между двумя точками в пространстве]]
- [[В чем отличие между теоремой Пифагора и Евклидовой дистанцией]]
Евклидова дистанция (Euclidean Distance) — это [[Мера (Measure)|мера]] расстояния между двумя точками в [[Евклидово пространство (Euclidean space)|евклидовом пространстве]].
Эта [[Метрика (Metric)|метрика]] является наиболее простым и интуитивно понятным способом измерения расстояния и широко применяется в различных областях, таких как компьютерное зрение, машинное обучение, и, конечно, в математике и физике.
Евклидова дистанция названа в честь древнегреческого математика Евклида, который жил в III веке до н. э. Евклид считается "отцом геометрии" за его работу "Элементы", которая служит основой для классической евклидовой геометрии.
### Как считать в 2D-пространстве
Для двух точек в двумерном пространстве: $ A(x_1, y_1); B(x_2, y_2) $евклидова дистанция рассчитывается по формуле:
$
d(A, B) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}
$
Пример на C#:
```csharp
using System;
using System.Numerics;
public class Program {
public static void Main() {
Vector2 pointA = new Vector2(1.0f, 2.0f);
Vector2 pointB = new Vector2(4.0f, 6.0f);
float distance = EuclideanDistance2D(pointA, pointB);
Console.WriteLine(
quot;Distance: {distance}");
}
public static float EuclideanDistance2D(Vector2 a, Vector2 b) {
return MathF.Sqrt(MathF.Pow(b.X - a.X, 2) + MathF.Pow(b.Y - a.Y, 2));
}
}
```
### В 3D-пространстве
Для двух точек в трехмерном пространстве: $ A(x_1, y_1, z_1); B(x_2, y_2, z_2) $дистанция рассчитывается по формуле:
$
d(A, B) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2 + (z_2 - z_1)^2}
$
Пример на C#:
```csharp
using System;
using System.Numerics;
public class Program {
public static void Main() {
Vector3 pointA = new Vector3(1.0f, 2.0f, 3.0f);
Vector3 pointB = new Vector3(4.0f, 6.0f, 8.0f);
float distance = EuclideanDistance3D(pointA, pointB);
Console.WriteLine(quot;Distance: {distance}");
}
public static float EuclideanDistance3D(Vector3 a, Vector3 b) {
return MathF.Sqrt(MathF.Pow(b.X - a.X, 2) + MathF.Pow(b.Y - a.Y, 2) + MathF.Pow(b.Z - a.Z, 2));
}
}
```
С использованием Unity:
```csharp
using UnityEngine;
public class DistanceExample : MonoBehaviour {
void Start() {
Vector3 pointA = new Vector3(1.0f, 2.0f, 3.0f);
Vector3 pointB = new Vector3(4.0f, 6.0f, 8.0f);
float distance = Vector3.Distance(pointA, pointB);
Debug.Log(quot;Distance: {distance}");
}
}
```