# Konstruktoren, Vererbung, Polymorphie // Processing



## Habib (25. Mai 2012)

Hallo, habe bei der folgenden Aufgabe ein Problem.



> Processing implementiert die Klasse PVector, mit welcher sich zweidimensionale (und auch dreidimensionale) Vektoren speichern und mathematisch behandeln lassen.
> Erweitern Sie diese Klasse zu einer Klasse PVectorEx, welche sich auch darstellen kann. Implementieren Sie dazu in dieser Klasse eine Methode „void paint(float _x, float _y, int _color)“, welche den
> Vektor ausgehend von der Position (_x,_y) als Linie in der Farbe _color mit einem kleinen Kreis am Ende darstellt.
> 
> ...




```
v.paint(width/2,height/2,#ff0000);
```

Hier mein Code: 


```
class PVector {
  float x, y;

  PVector (float _x, float _y) {
    x = _x;
    y = _y;
  }
}

void setup() {
    background(#ffffff);

  size (300, 300);
  smooth();
}

void draw() {
  background(#ffffff);
  PVectorEx v = new PVectorEx(mouseX,mouseY);
  v.paint(width/2, height/2, #ff0000);
  
}

class PVectorEx extends PVector {


  PVectorEx (float _x, float _y) { 
    super(_x, _y);
  }

  void paint (float _x, float _y, int _color) {
    stroke(_color);
    line(_x, _y, x, y);
    ellipse(x, y, 10, 10);
  }
}
```

Soweit sogut aber mein Prof lässt das nicht durchgehen und meint die Zeile 33 soll so aussehen: 

```
line(0,0,x,y);
```

Habe jetzt Probleme bei der Umstellung. Könnt ihr mir weiterhelfen?


----------



## Marco13 (26. Mai 2012)

Habib hat gesagt.:


> > ... den
> > Vektor ausgehend von der Position (_x,_y) als Linie ...darstellt.
> 
> 
> ...



Das aus der Aufgabenstllung wird doch dort gemacht?! Klingt irgendwie widersprüchlich.... ???:L Man könnte glaube ich (!) sowas wie
translate(_x, _y,0);
line(0,0,x,y);
translate(-_x, -_y,0);
machen, aber das wäre ja auch Unfug...!?


----------



## Habib (26. Mai 2012)

Marco13 hat gesagt.:


> Das aus der Aufgabenstllung wird doch dort gemacht?! Klingt irgendwie widersprüchlich.... ???:L Man könnte glaube ich (!) sowas wie
> translate(_x, _y,0);
> line(0,0,x,y);
> translate(-_x, -_y,0);
> machen, aber das wäre ja auch Unfug...!?



Hi, danke für die Antwort, hat so leider nicht geklappt. 
Also ich zitiere mal meinen Prof: 



> Beachten Sie unbedingt die Definition des Vektors und dessen grafische Darstellung. Die Komponenten x und y beschreiben keine Position auf dem Canvas!
> 
> Die Aufgabe der paint-Methode ist es, den Vektor ausgehend von einem beliebigen Punkt _x,_y darzustellen. Folglich sind solche Zeilen darin mit großer Sicherheit Unsinn:
> 
> ...


----------



## Fant (26. Mai 2012)

Die Wahl deiner Bezeichner ist total verwirrend. Hier und da würde auch ein this helfen, auch wenn es nicht unbedingt erforderlich ist..

Du zeichnest eine Linie von (x,y) nach (x_,y_). Das ist aber nicht das, was gemacht werden soll. Vielmehr solltest du eine Linie von(x_,y_) nach (x+x_,y+y_) zeichnen.


----------

