I'm not 100% sure I follow you correctly, but... Assuming sp is a vector, and not just a distance, the general equation would be roughly <x1, y1> + M * sp where M is the 2D rotation matrix given by {{cos(angle), -sin(angle)},{sin(angle), cos(angle)}}. If sp is a "distance", rotation has no meaning. You can only rotate relative to some reference frame.

If instead of using an angle you were to use a vector (dx, dy) of length 1 to indicate the same information, the code would simply be

x2 = x1 + dx * sp;
y2 = y1 + dy * sp;

I recommend doing that and avoiding angles as much as possible.

This. Vectors carry a significant amount of information in a small package and have surprisingly simple functions for getting pretty much everything that's important once you understand them. It takes a while to wrap your head around vectors and matrices, but once you do you'll be much happier.