I understand the concept better now thanks to the link provided

the function xfm1 rotates a point on the locus of the hyperbola about 60 degrees from P(x',y') to P(x",y") around (xo,yo).

but I am stuck on how xfm1 below is incorporated into create_hyperbola as in the code box below;

Can someone please help

% 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 variablesfigure(1), hold off % start a new figureset(gca,'FontSize',14) % adjust fontsizexmax = 30; ymax = 20;x = linspace(-xmax,xmax,1001); % array of x values for plot : This function generates vector with 1001 points equally distributed between -xmax and xmax. %1001 is probably to have 500 points on one side (>0), 500 on another side (<0) and to include 0 itself. So you will have %more natural numbers. a = 5; b = 3;y=sqrt(((x.^2)./(b^2)+1).*a^2); % corresponding y valuesplot(x,y)hold on % add to current plotplot(x,-y) % Plot other half of hyperbola% plot the elipse% y^2/a^2 - x^2/b^2 = 1y=sqrt(((-x.^2)./(b^2)+1).*a^2); % corresponding y valuesplot(x,y)plot(x,-y) % Plot other half of elipseaxis([-xmax xmax -ymax ymax]) % specify axis limitsxlabel('x')ylabel('y')title(['Hyperbola and elipse $y^2/a^2 - x^2/b^2 = 1$;$y^2/a^2 + x^2/b^2 = 1$; $a$ = ', num2str(a), ...', $b$ = ', num2str(b),';'],'Interpreter','latex')% Add axesplot([0 0],[-ymax ymax],'k') % y axis (black line - k)plot([-xmax xmax],[0 0],'k') % x axisf1=sqrt(a.^2+b.^2);f2=-(sqrt(a.^2+b.^2));plot([0 0],[f1 f2],'.')text(0,f1,'\leftarrow +d','VerticalAlignment','middle','HorizontalAlignment','left')text(0,f2,'\leftarrow -d','VerticalAlignment','middle','HorizontalAlignment','left')f3=sqrt(a.^2-b.^2);f4=-(sqrt(a.^2-b.^2));plot([0 0],[f3 f4],'.')text(0,f3,'\leftarrow +c','VerticalAlignment','middle','HorizontalAlignment','left')text(0,f4,'\leftarrow -c','VerticalAlignment','middle','HorizontalAlignment','left')text(0,a, '\leftarrow +a')text(0,-a, '\leftarrow -a')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 matrixxfm = [cos(theta) sin(theta); ... -sin(theta) cos(theta)];% make x,y values into a column vectorr_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;

You cannot put function and script into one m-file. Function should be in a separate m-file with the same name as function name. So create xfm1.m file and paste your function code there. Keep this file in the same directory with your script.
You can read more about m-files, scripts and functions here: http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f7-38085.html

Add something like this to your code. x and y are coordinates for original hyperbola, you need to apply the function to every part of your figure.
When you call function in Matlab, input and output parameters names do not have to match those in function implementation.

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)];

Ok, I added this at the end of code but the plot does not seem to be correct as per page 4 of the tutorial... am I doing this wrong?

% 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 variablesfigure(1), hold off % start a new figureset(gca,'FontSize',14) % adjust fontsizexmax = 30; ymax = 20;x = linspace(-xmax,xmax,1001); % array of x values for plot : This function generates vector with 1001 points equally distributed between -xmax and xmax. %1001 is probably to have 500 points on one side (>0), 500 on another side (<0) and to include 0 itself. So you will have %more natural numbers. a = 5; b = 3;y=sqrt(((x.^2)./(b^2)+1).*a^2); % corresponding y valuesplot(x,y)hold on % add to current plotplot(x,-y) % Plot other half of hyperbola% plot the elipse% y^2/a^2 - x^2/b^2 = 1y=sqrt(((-x.^2)./(b^2)+1).*a^2); % corresponding y valuesplot(x,y)plot(x,-y) % Plot other half of elipseaxis([-xmax xmax -ymax ymax]) % specify axis limitsxlabel('x')ylabel('y')title(['Hyperbola and elipse $y^2/a^2 - x^2/b^2 = 1$;$y^2/a^2 + x^2/b^2 = 1$; $a$ = ', num2str(a), ...', $b$ = ', num2str(b),';'],'Interpreter','latex')% Add axesplot([0 0],[-ymax ymax],'k') % y axis (black line - k)plot([-xmax xmax],[0 0],'k') % x axisf1=sqrt(a.^2+b.^2);f2=-(sqrt(a.^2+b.^2));plot([0 0],[f1 f2],'.')text(0,f1,'\leftarrow +d','VerticalAlignment','middle','HorizontalAlignment','left')text(0,f2,'\leftarrow -d','VerticalAlignment','middle','HorizontalAlignment','left')x1=10;y1=sqrt(((x1.^2)./(b^2)+1).*a^2);line([0 x1], [f1 y1],'color','r')line([0 x1], [f2 y1],'color','r')f3=sqrt(a.^2-b.^2);f4=-(sqrt(a.^2-b.^2));plot([0 0],[f3 f4],'.')text(0,f3,'\leftarrow +c','VerticalAlignment','middle','HorizontalAlignment','left')text(0,f4,'\leftarrow -c','VerticalAlignment','middle','HorizontalAlignment','left')text(0,a, '\leftarrow +a')text(0,-a, '\leftarrow -a')theta=1; % in radians, 1 radian = 180/pi degreesxoff=0;yoff=0;[xout,yout] = xfm1(x,y,theta,xoff,yoff);plot(xout,yout)

Of course, you didn't put the parameters you need.
Theta=60 deg, Xo=10, Yo=5.
Basically now before drawing anything you need to transform x and y coordinates with your function. Then plot new coordinates.
I didn't put focus points on the figure. Hope you can do it.

clear % all variablesfigure(1), hold off % start a new figureset(gca,'FontSize',14) % adjust fontsizexmax = 30; ymax = 20;x = linspace(-xmax,xmax,1001);a = 5; b = 3;theta=60*pi/180; % in radians, 1 radian = 180/pi degreesxoff=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 shiftplot(xout,yout)hold on % add to current plot[xout,yout] = xfm1(x,-y,theta,xoff,yoff); % rotation and shift of negative partplot(xout,yout) % Plot other half of hyperbolaaxis([-xmax xmax -ymax ymax]) % specify axis limitsxlabel('x')ylabel('y')% Add axesplot([0 0],[-ymax ymax],'k') % y axisplot([-xmax xmax],[0 0],'k') % x axis

Brilliant... yes I understand you invoke it through the plot function after defining the variables above...
I know how to get the focus points as well
thanks a million :)

0

Featured Post

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space.
w60 means Windows Vista or Windows Server 2008.
w61 means Windows 7 or Windows Server 2008 R2.
There are various â€¦

The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor anâ€¦

The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relatâ€¦