MATLAB Answers

0

I want to vary how much of a plane is filled with the angle of the plane with the horizontal, any help?

Asked by Daniel Gray on 4 Jul 2017
Latest activity Edited by Jan
on 6 Jul 2017
I am running an experiment and currently have a 300x300 zeros matrix and the lower half filled with ones to get a half-plane image. Now I want to 'tilt' this plane with different angles to see how this changes what I am testing. Is there a code I could use to do this?
Any more questions on this (cause I know this could be a bit confusing) please just drop a comment or send me a message.

  3 Comments

An angle is not enough for tilting, but you need a center of rotations also: Is it at [150.5, 150.5]?
Yes sorry, because of it being a matrix, we'll just make the centre of rotation [150 150]

Sign in to comment.

1 Answer

Answer by Jan
on 4 Jul 2017
Edited by Jan
on 4 Jul 2017

x = 1:300;
y = 1:300;
m = atan(30 * pi / 180); % 30 deg
k = bsxfun(@plus, m * (x - 150), y.' - 150) > 0; % Rotate around [150,150]
imagesc(k);
Since R2016b this is simpler:
k = (m * (x - 150)) + (y.' - 150) > 0;

  4 Comments

Show 1 older comment
Can the readers know, how the angles are defined in your case? The question was "I want to 'tilt' this plane with different angles".
Sorry yes I should have been more clear. I wanted the angle to be defined as between the horizontal across the centre and the new 'tilted plane' about the centre of rotation. If that doesn't make sense I can send you a diagram
Well, in the code I've posted I used 30 deg as angle. You can replace the angle by a variable:
YourAngle = 17.3; % deg
m = atan(YourAngle * pi / 180); % 30 deg
But if you ran the code with 45 deg, you have done this already. Therefore I do not understand, what the problem is now. What is the difference between the result my code creates and the wanted matrix?

Sign in to comment.