Azzera filtri
Azzera filtri

Find Angle Between Two Line

5 visualizzazioni (ultimi 30 giorni)
mnhafizuddin
mnhafizuddin il 18 Mag 2012
How i want to find the angle between two line.. Example my code:
%%%Angle Between Two Line%%%
% Line 1: point(0,3) to (4,3)
% Line 2: point(0,2) to (3,0)
v1=[4,3]-[0,3];
v2=[0,2]-[3,0];
angle = mod( atan2( det([v1,v2]) , dot(v1,v2) ) , 2*pi );
what i get was
Error using ==> det
Matrix must be square..
Why I cannot get the angle.???

Risposte (2)

Andrei Bobrov
Andrei Bobrov il 18 Mag 2012
v1=[4,3]-[0,3];
v2=[0,2]-[3,0];
angle = mod( atan2( det([v1;v2]) , dot(v1,v2) ) , 2*pi );
EDIT
a1 = mod(atan2( det([v1;v2;]) , dot(v1,v2) ), 2*pi );
angleout = abs((a1>pi/2)*pi-a1)
  3 Commenti
Jan
Jan il 18 Mag 2012
Modificato: Jan il 22 Dic 2012
@mnhafizuddin: I don't understand the question. The problem of your code is the comma in "[v1,v2]", bcause it creates a [1 x 4] vector, but DET needs a [2x2] matrix. See some of the most popular thread in CSSM: http://www.mathworks.com/matlabcentral/newsreader/view_thread/151925#870338
mnhafizuddin
mnhafizuddin il 19 Mag 2012
thanks for your suggestion website..
It's really helps me alot..
thanks!!!

Accedi per commentare.


Geoff
Geoff il 18 Mag 2012
When I want to find the angle between two vectors, I take the dot product of the unit vectors:
clamp = @(val, low, high) min(max(val,low), high);
angle = acos( clamp(dot(v1,v2) / norm(v1) / norm(v2), -1, 1);
If you want to know which direction that's in, you can do a trick with the cross-product. Since it's 2D, you do this:
vc = cross([v1,0], [v2,0]);
anticlock = vc(3) > 0;
  3 Commenti
Jan
Jan il 18 Mag 2012
ACOS(DOT(u,v)) is instable if u and v are near to (anti)-parallel. ASIN(CROSS()) is not sufficient near to perpendicular vectors. Therefore the ATAN2 approach is recommended.
Geoff
Geoff il 21 Mag 2012
Oh righto. I never had issues with stability. But that's what the clamp is for. It prevents the value from exceeding 1 (or -1) due to floating-point precision errors.

Accedi per commentare.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by