Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Compound matrix transformation [code attached]

Posted on 2008-10-09
3
Medium Priority
?
704 Views
Last Modified: 2013-11-25
Hello Experts,

I have the following code which shows the rotation of a 2D polygon and what i want is to modify it using a compound matrix transformation so that the square rotates about an arbitrary point.

Can anyone help me how can i do such a thing ??

Thanks in advance
close all;
clear all;
 
 
% a 2D pologyon 
p=[-1 1 1 -1 -1 ; -1 -1 1 1 -1];
 
% points p = in homogeneous coord
p(3,:)=1;
 
% axes for plotting the animation
figure; 
hold on;
axis([-6 6 -6 6]);
axis equal;
 
for theta=0:0.005:2*pi
 
    R=[cos(theta) -sin(theta) 0 ; sin(theta) cos(theta) 0 ; 0 0 1];
    
    pdash=R*p; 
    
    pdash(1,:)=pdash(1,:)./pdash(3,:);
    pdash(2,:)=pdash(2,:)./pdash(3,:);
    
    cla;
    plot(pdash(1,:),pdash(2,:),'b');   
    drawnow;
    
end

Open in new window

0
Comment
Question by:perdoname_
3 Comments
 
LVL 85

Expert Comment

by:ozo
ID: 22694376
0
 
LVL 4

Accepted Solution

by:
SyfAldeen earned 2000 total points
ID: 22895982
perdoname_,
Here you are the modified code:
You can learn more here:
Transforming Objects - MATLAB

function rotsquare
close all;
clear all;
 
% a 2D pologyon
p=[-1 1 1 -1 -1 ; -1 -1 1 1 -1];
 
% points p in XY plane
p(3,:)=0;
 
% points p = in homogeneous coord
p(4,:)=1;
 
% axes for plotting the animation
figure;
hold on;
axis([-6 6 -6 6]);
axis equal;
 
%Rotate about the upper right corner (1,1)
Tx1 = makehgtform('translate',[-1 -1 0]);
Tx2 = makehgtform('translate',[ 1  1 0]);
 
for theta=0:0.005:2*pi
    R=makehgtform('zrotate',theta);
    pdash=Tx2*R*Tx1*p;
    cla;
    plot(pdash(1,:),pdash(2,:),'b');
    drawnow;
end

Open in new window

0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article will show, step by step, how to integrate R code into a R Sweave document
Article by: Nicole
This is a research brief on the potential colonization of humans on Mars.
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
Suggested Courses

916 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question