Изучение двумерных векторных операций в Rust: подробное руководство

В этой статье блога мы углубимся в мир двумерных векторных операций в Rust. Векторы — это фундаментальные математические объекты, широко используемые в компьютерной графике, физическом моделировании и разработке игр. Мы рассмотрим различные методы работы с 2D-векторами в Rust, попутно предоставляя примеры кода. К концу этого руководства вы получите четкое представление о том, как выполнять распространенные векторные операции в Rust.

  1. Создание 2D-вектора:
    Давайте начнем с создания 2D-вектора в Rust с использованием кортежей или структур. Вот пример использования кортежей:
let vector_tuple = (2.0, 3.0); // x = 2.0, y = 3.0

А вот пример использования структуры:

struct Vector2D {
    x: f32,
    y: f32,
}
let vector_struct = Vector2D { x: 2.0, y: 3.0 };
  1. Сложение векторов.
    Чтобы сложить два вектора, просто добавьте соответствующие им компоненты. Вот пример:
fn add_vectors(a: (f32, f32), b: (f32, f32)) -> (f32, f32) {
    (a.0 + b.0, a.1 + b.1)
}
let vector_a = (2.0, 3.0);
let vector_b = (4.0, 1.0);
let result = add_vectors(vector_a, vector_b); // result = (6.0, 4.0)
  1. Вычитание векторов.
    Вычитание двух векторов происходит по той же схеме, что и сложение. Вот пример:
fn subtract_vectors(a: (f32, f32), b: (f32, f32)) -> (f32, f32) {
    (a.0 - b.0, a.1 - b.1)
}
let vector_a = (2.0, 3.0);
let vector_b = (4.0, 1.0);
let result = subtract_vectors(vector_a, vector_b); // result = (-2.0, 2.0)
  1. Векторное масштабирование.
    Чтобы масштабировать вектор по скалярному значению, умножьте каждый компонент вектора на это значение. Вот пример:
fn scale_vector(vector: (f32, f32), scalar: f32) -> (f32, f32) {
    (vector.0 * scalar, vector.1 * scalar)
}
let vector = (2.0, 3.0);
let scalar = 2.5;
let result = scale_vector(vector, scalar); // result = (5.0, 7.5)
  1. Скалярное произведение:
    Скалярное произведение двух векторов измеряет сходство их направлений. Вот пример:
fn dot_product(a: (f32, f32), b: (f32, f32)) -> f32 {
    a.0 * b.0 + a.1 * b.1
}
let vector_a = (2.0, 3.0);
let vector_b = (4.0, 1.0);
let result = dot_product(vector_a, vector_b); // result = 11.0
  1. Длина вектора:
    Чтобы вычислить длину (величину) вектора, используйте теорему Пифагора. Вот пример:
fn vector_length(vector: (f32, f32)) -> f32 {
    (vector.0.powf(2.0) + vector.1.powf(2.0)).sqrt()
}
let vector = (3.0, 4.0);
let result = vector_length(vector); // result = 5.0

В этой статье мы рассмотрели различные методы работы с 2D-векторами в Rust. Мы рассмотрели создание векторов, выполнение операций сложения и вычитания, масштабирование векторов, вычисление скалярных произведений и определение длин векторов. Вооружившись этими знаниями, вы теперь можете с уверенностью использовать возможности 2D-векторов в своих проектах на Rust.