В этой статье блога мы углубимся в мир двумерных векторных операций в Rust. Векторы — это фундаментальные математические объекты, широко используемые в компьютерной графике, физическом моделировании и разработке игр. Мы рассмотрим различные методы работы с 2D-векторами в Rust, попутно предоставляя примеры кода. К концу этого руководства вы получите четкое представление о том, как выполнять распространенные векторные операции в Rust.
- Создание 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 };
- Сложение векторов.
Чтобы сложить два вектора, просто добавьте соответствующие им компоненты. Вот пример:
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)
- Вычитание векторов.
Вычитание двух векторов происходит по той же схеме, что и сложение. Вот пример:
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)
- Векторное масштабирование.
Чтобы масштабировать вектор по скалярному значению, умножьте каждый компонент вектора на это значение. Вот пример:
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)
- Скалярное произведение:
Скалярное произведение двух векторов измеряет сходство их направлений. Вот пример:
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
- Длина вектора:
Чтобы вычислить длину (величину) вектора, используйте теорему Пифагора. Вот пример:
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.