Effacer les filtres
Effacer les filtres

How can I plot a new vector that have a relative length of another?

2 vues (au cours des 30 derniers jours)
Marco Branco
Marco Branco le 12 Oct 2013
Commenté : Marco Branco le 12 Oct 2013
I have two points with coordinates in 3d space, and now I want to plot other vector with the same origin and with 30% of the length of the first one. For that I create a new ending point representing 30% of the coordinates of the 2nd point. This code work well if I have coordinates without decimal places, but in my data every coordinates have decimal places. Could you help me? Thanks. The code that I have is:
p1=[70.025, 0.574, 0.370];
p2=[140.590, -0.431, -0.226];
x1=[p1(1) p2(1)];
y1=[p1(2) p2(2)];
z1=[p1(3) p2(3)];
p3=[(p1(1)+p2(1)*0.3), (p1(2)+p2(2)*0.3), (p1(3)+p2(3)*0.3)];
x2=[p1(1) p3(1)];
y2=[p1(2) p3(2)];
z2=[p1(3) p3(3)];
hold on
plot3(x1, y1, z1)
plot3(x2, y2, z2, 'r')
hold off
  2 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 12 Oct 2013
Modifié(e) : Azzi Abdelmalek le 12 Oct 2013
Why decimals are a problem?
Marco Branco
Marco Branco le 12 Oct 2013
Modifié(e) : Marco Branco le 12 Oct 2013
Thanks for your fast response. Because from my experiments with the code, I change the coordinates of the points to p1=[0, 0, 0]; p2=[10, -10, 10], and the plot became OK. I assume that decimal places make the propotion (of x,y and z coordinates) slight different. But it's just an opinion.

Connectez-vous pour commenter.

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 12 Oct 2013
Modifié(e) : Azzi Abdelmalek le 12 Oct 2013
You can write
p3=p1+0.3*p2
  3 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 12 Oct 2013
Because
p3=p1+0.3*p2
%is not corresponding to your question, try
p3=p1+(p2-p1)*.3
Marco Branco
Marco Branco le 12 Oct 2013
Perfect. Thanks.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by