Can someone please check my Matlab code to rotate a hyperbola and see what I am doing wrong

Posted on 2009-04-05
Last Modified: 2016-02-10
Please find the attached pdf tutorial for matlab and multilateration.

page 4. Please see code in the codebox below however when run it does not rotate the hyperbola as per the picture on page 4. It is in a different position?

Why is this?
% Program to plot the hyperbola
% y^2/a^2 - x^2/b^2 = 1
% The hyperbolae are open up/down, so that x is the independent variable
% for plotting. (Using the form x^2/a^2 - y^2/b^2 = 1 requires that y be
% the independent variable, which is awkward programming-wise.)
clear % all variables
figure(1), hold off % start a new figure
set(gca,'FontSize',14) % adjust fontsize
xmax = 30; ymax = 20;
x = linspace(-xmax,xmax,1001);
a = 5; b = 3;
theta=60*pi/180; % in radians, 1 radian = 180/pi degrees
y=sqrt(((x.^2)./(b^2)+1).*a^2); % corresponding y values
[xout,yout] = xfm1(x,y,theta,xoff,yoff); % rotation and shift
hold on % add to current plot
[xout,yout] = xfm1(x,-y,theta,xoff,yoff); % rotation and shift of negative part
plot(xout,yout) % Plot other half of hyperbola
axis([-xmax xmax -ymax ymax]) % specify axis limits
% Add axes
plot([0 0],[-ymax ymax],'k') % y axis
plot([-xmax xmax],[0 0],'k') % x axis
title(['Hyperbola $y^2/a^2 - x^2/b^2 = 1$; $a$ = ', num2str(a), ...
', $b$ = ', num2str(b),';'],'Interpreter','latex')
% Add axes
plot([0 0],[-ymax ymax],'k') % y axis (black line - k)
plot([-xmax xmax],[0 0],'k') % x axis

Open in new window

Question by:jtiernan2008
  • 4
  • 3
LVL 15

Expert Comment

ID: 24073370
I got almost the same figure as on your tutorial with this code without changing anything. I used the same xfm1 function file as we discussed before.
Do you get any figure with this code. If yes, how it's different from what you need? If no, do you get any errors?

Author Comment

ID: 24081290
thanks for your response

yes, I know I must be doing something wrong....
please see the attached with the code run and a screenshot from the tutorial.
It appears to not rotate the same.
LVL 15

Expert Comment

ID: 24081361
Change your rotation matrix in xfm1 function. I think we discussed this before. Change the sign for sines.
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

LVL 15

Expert Comment

ID: 24081392

Author Comment

ID: 24081503
"BTW I think you made a wrong rotation matrix. No, it's correct, but rotate in not usual direction. It should be
xfm = [cos(theta) -sin(theta); ...
      sin(theta) cos(theta"

=> But it is the same as you can see below;
function [xout,yout] = xfm1(xin,yin,theta,x_offset,y_offset)
% Program to rotate and translate x,y values from x",y" to x,y space.
% Written to plot hyperbolas for time of arrival code.
% theta value assumed to be in radians.
%  rotation matrix
xfm = [cos(theta) -sin(theta); ...
      sin(theta) cos(theta)];
% make x,y values into a column vector
r_in = [xin; yin];
% rotate 
r_out = xfm*r_in;
x = r_out(1,:); y = r_out(2,:);
xout = x + x_offset; 
yout = y + y_offset;

Open in new window

LVL 15

Accepted Solution

yuk99 earned 500 total points
ID: 24081599
Usually positive angles rotate counterwise, negative clockwise. If you want opposite direction, just change both sines signes in rotatino matrix, or use negative angle. Again line along y axis has 0 degree.

Author Closing Comment

ID: 31566782
thanks a million..
I understand now

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

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

There is an easy way, in .NET, to centralize the treatment of all unexpected errors. First of all, instead of launching the application directly in a Form, you need first to write a Sub called Main, in a module. Then, set the Startup Object to th…
This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
The goal of this video is to provide viewers with basic examples to understand and use switch statements in the C programming language.
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.

832 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