# Aufgabe gps_17: Skyplot

grad(bogen):=bogen/%pi*180;

## Aufgabe 1: Ausgangswerte

### Daten

r:matrix(
        [4151529],
        [744103],
        [4769225]
    );

s:matrix(
        [-7209930],
        [14399010],
        [21785556]
    );

### Vektor vom Empfänger zum Satelliten

v:s-r;

## Aufgabe 2: Elevation

elevation(n,u):=block(
[elev],
elev:asin(abs(u.n)/(mat_norm(u,frobenius)*mat_norm(n,frobenius))),
if sign(n.u)=neg then -elev else elev
);

abs(r);

r.v;

mat_norm(r,frobenius);

elev:elevation(r,v),numer;

grad(elev),numer;

## Aufgabe 3: Richtung zum Satelliten in der Ebene

projektion(x,n,r0):=x-(((x-r0).n)/(n.n)).n;

### Projektion des Satelliten

#### Projektion

projektion_satvect:projektion(s,r,r),numer;

#### Richtung vom Empfänger zum projizierten Satelliten

satrichtung:projektion_satvect-r;

## Aufgabe 4: Nordrichtung

### Projektion der z-Achse

nord_v:matrix([0],[0],[1]);

#### Projektion

projektion_nordvect:projektion(nord_v,r,r),numer;

#### Nordrichtung

nordrichtung:projektion_nordvect-r;

## Aufgabe 5: Azimut

### Bestimmung des Azimuts

azimut(u,v):=block(
acos((u.v)/(mat_norm(u,frobenius)*mat_norm(v,frobenius)))
);

az:azimut(nordrichtung,satrichtung);

grad(az),numer;

## Aufgabe 6: Weitere Satelliten berechnen

### Satellit 1

s1:matrix(
        [16146937],
        [14754344],
        [14992035]
    );

v1:s1-r;

elev1:elevation(r,v1),numer;

grad(elev1),numer;

projektion_satvect1:projektion(s1,r,r),numer;

satrichtung1:projektion_satvect1-r;

az1:azimut(nordrichtung,satrichtung1);

grad(az1),numer;

### Satellit 2

s2:matrix(
        [26124344],
        [4803272],
        [-1301059]
    );

v2:s2-r;

elev2:elevation(r,v2),numer;

grad(elev2),numer;

projektion_satvect2:projektion(s2,r,r),numer;

satrichtung2:projektion_satvect2-r;

az2:azimut(nordrichtung,satrichtung2);

grad(az2),numer;

### Satellit 3 (Azimut bei 270°!)

s3:matrix(
		[17719707],
		[-8916564],
		[17798680]
	);

v3:s3-r;

elev3:elevation(r,v3),numer;

grad(elev3),numer;

projektion_satvect3:projektion(s3,r,r),numer;

satrichtung3:projektion_satvect3-r;

az3:azimut(nordrichtung,satrichtung3);

grad(az3),numer;