Plot is a straight line when it should be a curve.

6 vues (au cours des 30 derniers jours)
Azairis
Azairis le 26 Sep 2019
Commenté : Azairis le 26 Sep 2019
%Givens
DetectedAst = 20
Theta = DetectedAst
xnot = 125
xCenter = xnot
radiusCR = 20
AngleB = 42 %(is constant)
k1 = 5
tPath = 9*pi
%set up figure
%plot curve
plot(0,0,'kd', 'markerfacecolor', 'k');
hold on;
ts = linspace (0,tPath);
PathXcoords = 5 * (cosd(45 + AngleB) * (ts + k1 * sind(ts/2)) + ...
sind(45+AngleB) * (ts + 1/k1 * cosd(ts/2)));
PathYcoords = 5 * (sind(45 + AngleB) * (ts + k1 * sind(ts/2))...
- cosd(45+AngleB) * (ts + 1/k1 * cosd(ts/2)));
plot(PathXcoords,PathYcoords,'color',[105 105 105]/255);
hold on;
grid on;
axis equal;
%Change axis limits
PathXMax= 5* (cosd(45 + AngleB) * (tPath + k1 * sind(tPath/2))...
+ sind(45+AngleB) * (tPath + 1/k1 * cosd(tPath/2)));
PathYMax = 5* (sind(45 + AngleB) * (tPath + k1 * sind(tPath/2))...
- cosd(45+AngleB) * (tPath + 1/k1 * cosd(tPath/2)));
axis([0,PathXMax, 0, PathYMax]);
%Graph is supposed to look like:
  2 commentaires
Ankit
Ankit le 26 Sep 2019
are you sure that AngleB is a constant value?
KALYAN ACHARJYA
KALYAN ACHARJYA le 26 Sep 2019
It should be a curve
Why?

Connectez-vous pour commenter.

Réponse acceptée

darova
darova le 26 Sep 2019
Look
11Untitled.png
Also i suggest to write more readable code (even if it's longer)
c1 = cosd(45 + AngleB);
s1 = sind(45 + AngleB);
st = sin(ts/2);
ct = cos(ts/2);
x = 5*c1*(ts + k1*st) + 5*s1*(ts + 1/k1*ct);
y = 5*s1*(ts + k1*st) - 5*c1*(ts + 1/k1*ct);
  1 commentaire
Azairis
Azairis le 26 Sep 2019
Oh, I see now. Thank you for your help!

Connectez-vous pour commenter.

Plus de réponses (1)

John D'Errico
John D'Errico le 26 Sep 2019
Modifié(e) : John D'Errico le 26 Sep 2019
Is it really a straight line? Seriously? Did you look CAREFULLY at the curve? A PERFECTLY STRAIGHT LINE? (No.) I'll admit that the deviation is small, so you probably did not see it.
It is just not highly curved. For example, consider the term
(ts + 1/k1 * cosd(ts/2)))
ts varies as from 0 to 28.
What is the magnitude of cos(ts/2)? Clearly that cannot exceed +/-1.
Divide that by k1=5?
Now, how does it compare to ts? Essentially, the linear part of that term dominates the nonlinear part, by roughly 100-1.
Basically, your line DOES have curvature. Just not much of it.
If you wish to test my claim, try this:
diff(PathYcoords)./diff(PathXcoords)
Look very carefully at what you see. Is that vector PERFECTLY constant? They would be so if the curve were perfectly a straight line.
Are your parens wrong? That is something we cannot possibly know, because we are given no clue as to what it is that you really need to do. Something is wrong if you expect to see a strongly curved line. But what might be wrong is just your expectation.

Catégories

En savoir plus sur Networks dans Help Center et File Exchange

Tags

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by