MATLAB: Random numbers inside a rectangle at an angle

rectangle

How to I generate random numbers inside a rectangle at an angle?

Best Answer

Let (x0,y0) be coordinates of one of the rectangle's corners, and let one of its sides stretching from this corner to another corner be of length a and making an angle of theta radians with respect to the x-axis. Let another side be of length b stretching from (x0,y0) at a counterclockwise right angle to the first side. Finally suppose you want n random points within that rectangle. Then do this:
X = a*rand(n,1);
Y = b*rand(n,1);
x = x0 + X*cos(theta) - Y*sin(theta);
y = y0 + X*sin(theta) + Y*cos(theta);
plot(x,y,'y.')
axis equal % <-- Keep the x and y axes scale factors equal