필터 지우기
필터 지우기

How to rotate a hyperbola drawn along with the reference line?

조회 수: 1 (최근 30일)
UH
UH 2024년 5월 23일
편집: UH 2024년 5월 24일
I have an equation of calculating the radius of hyperbola for drawing specific maps. However, I could only draw hyperbola at origin.
For instance. I want to draw the hyperbola between two points at some known distance. In the code below, I have used the equation to plot the hyperbola when the line is horizontal and starts at original. For finding the xy coordinates, I use the cosine and sine components and then plot.
However, in cases where I have the same distance between the points but not at origin (I tried xy coordinates with same magnitude but different location and rotation), I cannot construct the rotated hyperbola. Is there a way to draw the rotated parabola?
Additionally, my way is inspired from `excel` and is very unituitive. Is there a more convenient way to construct hyperbola in Matlab?
clc
clear all
close all
%% Input values
D = 250; % mm distance
c = 4; % mm/s velocity
del = 10; % a constant
theta = deg2rad(0:5:360); % a variable
for i = 1:length(theta)
angle = theta(i);
R(i) = 1/2*(D*D - del*del*c*c)/(del*c + D*cos(angle)); % Equation of radius of hyperbola
x1(i) = 0;
y1(i) = 0;
x2(i) = R(i)*cos(angle);
y2(i) = R(i)*sin(angle);
end
pta = [0 250];
ptb = [0 0];
figure
tiledlayout(2,1)
nexttile
hold on
plot(pta,ptb,'-o');
plot(x2,y2,'.r')
xlim([0 D])
nexttile
hold on
ptc = [50 250];
ptd = [40 190];
plot(ptc,ptd,'-o');
xlim([0 250])
ylim([0 250])
There may be a simple solution, forgive my trignomatry skills and I will appreciate your help in this regard.
All the best.
  댓글 수: 2
Catalytic
Catalytic 2024년 5월 23일
To me, it looks like a hyperbola. Not a parabola.
UH
UH 2024년 5월 24일
I am sorry, my mistake. Corrected

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2024년 5월 23일
편집: Matt J 2024년 5월 23일
%% Input values
D = 250; % mm distance
c = 4; % mm/s velocity
del = 10; % a constant
theta = deg2rad(0:5:360); % a variable
for i = 1:length(theta)
angle = theta(i);
R(i) = 1/2*(D*D - del*del*c*c)/(del*c + D*cos(angle)); % Equation of radius of parabola
x1(i) = 0;
y1(i) = 0;
x2(i) = R(i)*cos(angle);
y2(i) = R(i)*sin(angle);
end
pta = [0 250];
ptb = [0 0];
[cx,cy]=deal(100,200); %translation
pta=pta+cx; ptb=ptb+cy; x2=x2+cx; y2=y2+cy;
h=plot(pta,ptb,'-o',x2,y2,'.r'); axis equal
rotate(h,[0,0,1],30,[cx,cy,0])
axis([mean(pta),mean(ptb)]+[-D;D])

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

제품


릴리스

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by