mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-22 01:11:42 +00:00
[wpimath] Make Vector-Vector binary operators return Vector (#5772)
Fixes #5741.
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
package edu.wpi.first.math;
|
||||
|
||||
import edu.wpi.first.math.numbers.N1;
|
||||
import java.util.Objects;
|
||||
import org.ejml.simple.SimpleMatrix;
|
||||
|
||||
/**
|
||||
@@ -62,6 +63,26 @@ public class Vector<R extends Num> extends Matrix<R, N1> {
|
||||
return new Vector<>(this.m_storage.divide(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the given vector to this vector.
|
||||
*
|
||||
* @param value The vector to add.
|
||||
* @return The resultant vector.
|
||||
*/
|
||||
public final Vector<R> plus(Vector<R> value) {
|
||||
return new Vector<>(this.m_storage.plus(Objects.requireNonNull(value).m_storage));
|
||||
}
|
||||
|
||||
/**
|
||||
* Subtracts the given vector to this vector.
|
||||
*
|
||||
* @param value The vector to add.
|
||||
* @return The resultant vector.
|
||||
*/
|
||||
public final Vector<R> minus(Vector<R> value) {
|
||||
return new Vector<>(this.m_storage.minus(Objects.requireNonNull(value).m_storage));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the dot product of this vector with another.
|
||||
*
|
||||
|
||||
@@ -9,6 +9,44 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class VectorTest {
|
||||
@Test
|
||||
void testVectorPlus() {
|
||||
var vec1 = VecBuilder.fill(1.0, 2.0, 3.0);
|
||||
var vec2 = VecBuilder.fill(4.0, 5.0, 6.0);
|
||||
var result1 = vec1.plus(vec2);
|
||||
|
||||
assertEquals(5.0, result1.get(0, 0));
|
||||
assertEquals(7.0, result1.get(1, 0));
|
||||
assertEquals(9.0, result1.get(2, 0));
|
||||
|
||||
var vec3 = VecBuilder.fill(-1.0, 2.0, -3.0);
|
||||
var vec4 = VecBuilder.fill(4.0, -5.0, 6.0);
|
||||
var result2 = vec3.plus(vec4);
|
||||
|
||||
assertEquals(3.0, result2.get(0, 0));
|
||||
assertEquals(-3.0, result2.get(1, 0));
|
||||
assertEquals(3.0, result2.get(2, 0));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testVectorMinus() {
|
||||
var vec1 = VecBuilder.fill(1.0, 2.0, 3.0);
|
||||
var vec2 = VecBuilder.fill(4.0, 5.0, 6.0);
|
||||
var result1 = vec1.minus(vec2);
|
||||
|
||||
assertEquals(-3.0, result1.get(0, 0));
|
||||
assertEquals(-3.0, result1.get(1, 0));
|
||||
assertEquals(-3.0, result1.get(2, 0));
|
||||
|
||||
var vec3 = VecBuilder.fill(-1.0, 2.0, -3.0);
|
||||
var vec4 = VecBuilder.fill(4.0, -5.0, 6.0);
|
||||
var result2 = vec3.minus(vec4);
|
||||
|
||||
assertEquals(-5.0, result2.get(0, 0));
|
||||
assertEquals(7.0, result2.get(1, 0));
|
||||
assertEquals(-9.0, result2.get(2, 0));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testVectorDot() {
|
||||
var vec1 = VecBuilder.fill(1.0, 2.0, 3.0);
|
||||
|
||||
Reference in New Issue
Block a user