% 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
xoff=10;
yoff=5;
y=sqrt(((x.^2)./(b^2)+1).*a^2); % corresponding y values
[xout,yout] = xfm1(x,y,theta,xoff,yoff); % rotation and shift
plot(xout,yout)
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
xlabel('x')
ylabel('y')
% 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
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;
If you are experiencing a similar issue, please ask a related question
Title | # Comments | Views | Activity |
---|---|---|---|
PYTHON: Updating local variable in .TPL file | 24 | 151 | |
Setup specific permissions in Microsoft Access | 9 | 57 | |
java continue statement | 10 | 143 | |
Visual studio community prompts to sign in and how to use without signing in\is there a different way to set up. | 7 | 178 |
Join the community of 500,000 technology professionals and ask your questions.