Vizualizacija prostora Lobacevskog - Alas

Vizualizacija prostora Lobacevskog - Alas Vizualizacija prostora Lobacevskog - Alas

alas.matf.bg.ac.rs
from alas.matf.bg.ac.rs More from this publisher
13.07.2015 Views

hs = Append[b, k];Graphics3D[Line[{ahs, ahs + maxx (bhs - ahs)}]]](* Funkcija za crtanje kruznog luka AB koji sadrzi srediste S u projekciji *)ProjekcijaLukaHS[\[Omega]_, k_][a_, b_, s_] :=Module[{c, v1, v2, vs, r, v1u, v2u, vsu, u1, u2} ,(*Prvo proverimo ako je neko od temena (ili oba) beskonacno daleka tacka*)(*1*)If[a == {\[Infinity], \[Infinity]},If[b == {\[Infinity], \[Infinity]},(*Ako su oba temena besk dal. tacka, ne crta se nista*){},(*Ako je a beskonacna , b konacna tacka,crta se zrak od b u pravcu sredista duzi*)RayHS[b, s, k]] (* If *),(*2*)If[b == {\[Infinity], \[Infinity]},(*Ako je sada a konacna, b beskonacna tacka,crta se zrak od a u pravcu sredista duzi*)RayHS[a, s, k],(* Ako su oba temena konacne tacke*)(*3*)If[ Abs[a[[1]] b[[2]] - a[[2]] b[[1]] ] < 0.001, (* proveravamo da li O,A,B pripadaju ravni normalnoj na apsolutu *)(*Ako pripadaju, ako je projekcija sredista izmedju a i b, onda crta duz.Ako nije izmedju, crta dve poluprave*)If[Norm[s - a] < Norm[b - a] \[And] (s - a)[[1]] (b - a)[[1]] > 0,Graphics3D[Line[{Append[a, k], Append[b, k]}]],{RayHS[a, 2 a - b, k], RayHS[b, 2 b - a, k]}],(* Kada ne pripadaju ravni normalnoj na apsloutu,projekcija duzi je kruzni luk koji racunamo: *)c = centarLukaAB[\[Omega], k][a, b];v1 = a - c; (* vektori od centra luka do tacaka A i B *)v2 = b - c;vs = s - c; (*vektor sredista h-duzi ab*)v1u = ugao[N[Arg[{1, I}.v1]]]; (*uglovi tih vektora u odnosu na x osu u rasponu [-Pi, Pi], tj.[0, 2 Pi] *)73

v2u = ugao[N[Arg[{1, I}.v2]]];vsu = ugao[N[Arg[{1, I}.vs]]];{v1u, v2u} = Sort[{v1u, v2u}];r = N[Sqrt[v1.v1]];{u1, u2} = If[ vsu < v1u \[Or] v2u < vsu, {v2u - 2 Pi, v1u}, {v1u, v2u}];ParametricPlot3D[{c[[1]] + r Cos[u], c[[2]] + r Sin[u], k}, {u, u1, u2}]] (* If 3*)] (* If 2*)](* If 1 *)] (* Module *)IviceTetraedra = {{1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4}};TemenaTetraedraPS = (1/5 PolyhedronData["Tetrahedron","VertexCoordinates"]) // N;TemenaTetraedraK = PSphere2Klein[#] & /@ TemenaTetraedraPS;IviceKocke = {{1, 2}, {1, 3}, {1, 5}, {2, 4}, {2, 6}, {3, 4}, {3, 7}, {4,8}, {5, 6}, {5, 7}, {6, 8}, {7, 8}};TemenaKockePS = (1/5 PolyhedronData["Cube", "VertexCoordinates"]) // N;TemenaKockeK = PSphere2Klein[#] & /@ TemenaKockePS;IviceOktaedra = {{1, 2}, {1, 3}, {1, 4}, {1, 5}, {2, 3}, {2, 4}, {2, 6}, {3,5}, {3, 6}, {4, 5}, {4, 6}, {5, 6}};TemenaOktaedraPS = (1/5 PolyhedronData["Octahedron", "VertexCoordinates"]) //N;TemenaOktaedraK = PSphere2Klein[#] & /@ TemenaOktaedraPS;IviceIkosaedra = {{1, 3}, {1, 5}, {1, 6}, {1, 9}, {1, 10}, {2, 4}, {2, 7}, {2,8}, {2, 11}, {2, 12}, {3, 7}, {3, 8}, {3, 9}, {3, 10}, {4, 5}, {4,6}, {4, 11}, {4, 12}, {5, 6}, {5, 9}, {5, 11}, {6, 10}, {6, 12}, {7,8}, {7, 9}, {7, 11}, {8, 10}, {8, 12}, {9, 11}, {10, 12}};TemenaIkosaedraPS =1/5 PolyhedronData["Icosahedron", "VertexCoordinates"] // N;TemenaIkosaedraK = PSphere2Klein[#] & /@ TemenaIkosaedraPS;IviceDodekaedra = {{1, 14}, {1, 15}, {1, 16}, {2, 5}, {2, 6}, {2, 13}, {3,7}, {3, 14}, {3, 19}, {4, 8}, {4, 15}, {4, 20}, {5, 11}, {5, 19}, {6,12}, {6, 20}, {7, 11}, {7, 16}, {8, 12}, {8, 16}, {9, 10}, {9, 14}, {9,17}, {10, 15}, {10, 18}, {11, 12}, {13, 17}, {13, 18}, {17, 19}, {18, 20}};TemenaDodekaedraPS = (1/5 PolyhedronData["Dodecahedron","VertexCoordinates"]) // N;TemenaDodekaedraK = PSphere2Klein[#] & /@ TemenaDodekaedraPS;TransTemDodekaedraK =74

hs = Append[b, k];Graphics3D[Line[{ahs, ahs + maxx (bhs - ahs)}]]](* Funkcija za crtanje kruznog luka AB koji sadrzi srediste S u projekciji *)ProjekcijaLukaHS[\[Omega]_, k_][a_, b_, s_] :=Module[{c, v1, v2, vs, r, v1u, v2u, vsu, u1, u2} ,(*Prvo proverimo ako je neko od temena (ili oba) beskonacno daleka tacka*)(*1*)If[a == {\[Infinity], \[Infinity]},If[b == {\[Infinity], \[Infinity]},(*Ako su oba temena besk dal. tacka, ne crta se nista*){},(*Ako je a beskonacna , b konacna tacka,crta se zrak od b u pravcu sredista duzi*)RayHS[b, s, k]] (* If *),(*2*)If[b == {\[Infinity], \[Infinity]},(*Ako je sada a konacna, b beskonacna tacka,crta se zrak od a u pravcu sredista duzi*)RayHS[a, s, k],(* Ako su oba temena konacne tacke*)(*3*)If[ Abs[a[[1]] b[[2]] - a[[2]] b[[1]] ] < 0.001, (* proveravamo da li O,A,B pripadaju ravni normalnoj na apsolutu *)(*Ako pripadaju, ako je projekcija sredista izmedju a i b, onda crta duz.Ako nije izmedju, crta dve poluprave*)If[Norm[s - a] < Norm[b - a] \[And] (s - a)[[1]] (b - a)[[1]] > 0,Graphics3D[Line[{Append[a, k], Append[b, k]}]],{RayHS[a, 2 a - b, k], RayHS[b, 2 b - a, k]}],(* Kada ne pripadaju ravni normalnoj na apsloutu,projekcija duzi je kruzni luk koji racunamo: *)c = centarLukaAB[\[Omega], k][a, b];v1 = a - c; (* vektori od centra luka do tacaka A i B *)v2 = b - c;vs = s - c; (*vektor sredista h-duzi ab*)v1u = ugao[N[Arg[{1, I}.v1]]]; (*uglovi tih vektora u odnosu na x osu u rasponu [-Pi, Pi], tj.[0, 2 Pi] *)73

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!