Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Serazeni vektoru podle uhlu

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Serazeni vektoru podle uhlu

Autor: Lojza123

13:44:02 31.03.2011

Dobry den potreboval bych pomoct jak seradit vektory podle uhlu.

tady je muj kod v matlabu. nefunguje to korektne pro vsechny pripady. nemam tam nekde chybu nebo na to mam jit jinak ?

v1=A-teziste; % referencni vektor
v2=B-teziste;
v3=C-teziste;
v4=D-teziste;

v2v1a=abs(dot(v1,v2))/(norm(v1)*norm(v2));
v3v1a=abs(dot(v1,v3))/(norm(v1)*norm(v3));
v4v1a=abs(dot(v1,v4))/(norm(v1)*norm(v4));

vva=[dot(v1,v2)/(norm(v1)*norm(v2)),dot(v1,v3)/(norm(v1)*norm(v3)),dot(v1,v4)/(norm(v1)*norm(v4))];

v2v1b=cross(v1,v2)/(norm(v1)*norm(v2));
v3v1b=cross(v1,v3)/(norm(v1)*norm(v3));
v4v1b=cross(v1,v4)/(norm(v1)*norm(v4));

vvb=[v2v1b(1),v3v1b(1),v4v1b(1)]; % sin slozka uhlu

cx=[acosd(v2v1a);acosd(v3v1a);acosd(v4v1a)];

for i=1:3
if vvb(i)>=0 && vva(i)>=0 % sin >= 0, cos >= 0 + +
uhly(i)=cx(i); % 1.kva alfa

elseif vvb(i)>0 && vva(i)<=0 % sin > 0, cos <= 0 + -
uhly(i)=180 - cx(i); % 2.kva 180 - alfa

elseif vvb(i)< 0 && vva(i)<=0 % sin < 0 cos <= 0 - -
uhly(i)=180 + cx(i); % 3.kva 180 + alfa

elseif vvb(i)< 0 && vva(i)>0 % sin < 0 , cos > 0 - +
uhly(i)=360 - cx(i); % 4.kva 360 - alfa
end

end

if uhly(1) s=[A,B,C,D,A]';
elseif uhly(1)uhly(3)
s=[A,B,D,C,A]';
elseif uhly(1)>uhly(2) && uhly(1) s=[A,C,B,D,A]';
elseif uhly(1)>uhly(2) && uhly(1)>uhly(3) && uhly(2) s=[A,C,D,B,A]';
elseif uhly(1)uhly(3) && uhly(2)>uhly(3)
s=[A,D,B,C,A]';
elseif uhly(1)>uhly(2) && uhly(1)>uhly(3) && uhly(2)>uhly(3)
s=[A,D,C,B,A]';
end

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: