Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » algoks » Forendiskussionen   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
pruefungen:bachelor:algoks:loesungws10 [07.02.2014 18:41] Dawodopruefungen:bachelor:algoks:loesungws10 [22.07.2015 12:44] (aktuell) ellyria
Zeile 138: Zeile 138:
 ==== Aufgabe 7 - Programmierung ==== ==== Aufgabe 7 - Programmierung ====
  
-...+**a)** 
 + 
 +<code cpp> 
 +BezierCurve::BezierCurve(const Point* CPs, int numCPs) { 
 + this-numCPs = numCPs; 
 + this->CPs = new Point[numCPs]; 
 +  
 + for(int i = 0; i < numCPs; i++) { 
 + this->CPs[i] = CPs[i]; 
 +
 +
 + 
 +BezierCurve::~BezierCurve() { 
 + delete[] CPs; 
 +
 +</code> 
 + 
 +**b)** 
 + 
 +<code cpp> 
 +void BezierCurve::removeControlPoint(int idx) { 
 + Points* newCPs = new Point[numCPs - 1]; 
 +  
 + for(int i = 0; i < numCPs; i++) { 
 + if(i < idx) 
 + newCPs[i] = CPs[i]; 
 +  
 + if(i > idx) { 
 + newCP[i - 1] = CPs[i]; 
 +
 +  
 + delete[] CPs; 
 + CPs = newCPs; 
 +  
 + this-numCPs = numCPs - 1; 
 +
 +</code> 
 + 
 +**c)** 
 + 
 +<code cpp> 
 +Point BezierCurve::desCastlejau(float t) const { 
 + Point tmpCPs[numCPs]; 
 +  
 + for(int i = 0; i < numCPs; i++) 
 + tmpCPs[i] = CPs[i]; 
 +  
 + for(int c = 1; c < numCPs; c++) { 
 + for(int r = 0; r < numCPs, numCPs - c; r++) { 
 + tmpCPs[r] = (1-t) * tmpCPs[r] + t * tmpCPs[r + 1]; 
 +
 +
 +  
 + return tmpCPs[0]; 
 +
 +</code> 
 + 
 +**d)** 
 + 
 +<code cpp> 
 +void BezierCurve::degreeElevation() { 
 + Point* newCPs = new Point[numCPs + 1]; 
 + newArr[0] = CPs[0]; 
 + newArr[numCPs] = CPs[numCPs - 1]; 
 +  
 + for(int i = 1; i < numCPs; i++) { 
 + float t = i / (numCPs + 1); 
 + float z = (numCPs + 1 - i) / (numCPs + 1); 
 + newArr[i] = t * CPs[i - 1] + z * CPs[i]; 
 +
 +  
 + delete[] CPs; 
 + CPs = newArr; 
 + numCPs++; 
 +
 +</code> 
 + 
 +**e)** 
 + 
 +<code cpp> 
 +void BezierCurve::reflectCurve(const Point& p) { 
 + for(int i = 0; i < numCPs; i++) 
 + CPs[i] = 2 * p - CPs[i]; 
 +
 +</code> 
 + 
 + 
 +**c)**
  
 ==== Aufgabe 8 - Numerische Integration ==== ==== Aufgabe 8 - Numerische Integration ====