#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Nov 29 12:21:59 2017

@author: troll
"""

"""Dies ist eine Lösung für Aufgabe 24.
Sie dürfen den Code studieren, kopieren und verändern um Aufgabe 29 zu lösen.
"""

import numpy as np
import matplotlib.pylab as plt

#Parametrisierte Funktion für den Einheitskreis
theta=lambda x:np.vstack((np.cos(x),np.sin(x)))


x=np.linspace(0,2*np.pi,200)
kreis=theta(x)


A1=np.array([1,0,0,0.7]).reshape((2,2))
A2=np.array([0,0,0,-1.3]).reshape((2,2))
A3=np.array([1.4,-0.7,0,-2]).reshape((2,2))

#Matrizen anwenden
ellipse1=A1@kreis
ellipse2=A2@kreis
ellipse3=A3@kreis

#(wegen der 1.1 "kleben" die Ellipsen nicht am Rand des Plots)
xminmax=1.1*np.max((kreis[0,:],ellipse1[0,:],ellipse2[0,:],ellipse3[0,:]))
yminmax=1.1*np.max((kreis[1,:],ellipse1[1,:],ellipse2[1,:],ellipse3[1,:]))

#Zeichnen (geht auch schöner in einer Schleife)
# scaled' sorgt dafür, dass die Seitenverhältnisse richtig sind
# DANACH kann man die Limits für dei Achsen setzen

plt.figure()

plt.subplot(1,4,1)
plt.plot(kreis[0,:],kreis[1,:])
plt.axis('scaled')
plt.xlim(-xminmax,xminmax)
plt.ylim(-yminmax,yminmax)

plt.subplot(1,4,2)
plt.plot(ellipse1[0,:],ellipse1[1,:])
plt.axis('scaled')
plt.xlim(-xminmax,xminmax)
plt.ylim(-yminmax,yminmax)

plt.subplot(1,4,3)
plt.plot(ellipse2[0,:],ellipse2[1,:])
plt.axis('scaled')
plt.xlim(-xminmax,xminmax)
plt.ylim(-yminmax,yminmax)

plt.subplot(1,4,4)
plt.plot(ellipse3[0,:],ellipse3[1,:])
plt.axis('scaled')
plt.xlim(-xminmax,xminmax)
plt.ylim(-yminmax,yminmax)
