public Point <TAlgebraicNumber> Translate(Direction <TAlgebraicNumber> direction, TAlgebraicNumber length) { var normalizedDirection = direction.Normalize(); return(new Point <TAlgebraicNumber>( _calculator, _calculator.Add(X, _calculator.Multiply(normalizedDirection.X, length)), _calculator.Add(Y, _calculator.Multiply(normalizedDirection.Y, length)))); }
public Direction <TAlgebraicNumber> Normalize() { var length = _calculator.SquareRoot( _calculator.Add( _calculator.Multiply(X, X), _calculator.Multiply(Y, Y))); return(new Direction <TAlgebraicNumber>( _calculator, _calculator.Divide(X, length), _calculator.Divide(Y, length))); }