Konstruktoren, Vererbung, Polymorphie // Processing

H

Habib

Gast
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.

Nutzen Sie ein Objekt der Klasse PvectorEx, um ein kleines Beispielprogramm zu entwerfen, welches einen
solchen Vektor vom Mittelpunkt der Zeichenfläche zum Mauscursor zeichnet. In der draw( ) -Methode des Hauptprogramm finden sich also folgene Zeilen:

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

Hier mein Code:

Java:
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:
Code:
line(0,0,x,y);

Habe jetzt Probleme bei der Umstellung. Könnt ihr mir weiterhelfen?
 
Zuletzt bearbeitet von einem Moderator:

Marco13

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

Soweit sogut aber mein Prof lässt das nicht durchgehen und meint die Zeile 33 soll so aussehen:
Code:
line(0,0,x,y);

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

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...!?
 
H

Habib

Gast
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:

  • line(x,y, mouseX,mouseY);
  • line(x,y, _x,_y);
Dagegen kann diese Zeile, mit etwas geschickter Programmierung drumherum, durchaus die richtige sein:

  • line(0,0,x,y);
Ich muss Sie dazu auffordern, hier genau nachzudenken. Schließlich steht Ihnen auch eine Mathe-Klausur bevor, da kann ich das nicht durchgehen lassen!
 

Fant

Bekanntes Mitglied
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.
 

Neue Themen


Oben