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
Letzte ÜberarbeitungBeide Seiten, nächste Überarbeitung
pruefungen:bachelor:algoks:loesungws10 [07.02.2014 18:41] Dawodopruefungen:bachelor:algoks:loesungws10 [22.07.2015 12:42] 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 ====
Zeile 167: Zeile 254:
 **b)** **b)**
  
-7, 5, 19, 24, 6, 6+7, 5, 19, 24, 6, 6
  
 **c)** **c)**