Vektoraddition

Status
Nicht offen für weitere Antworten.
Hallo! Ich habe viele Objekte mit denselben Instanzvariablen (Vektoren)
und nun möchte ich die einzelnen Variablen dieser Vektoren addieren um eben
die Vektorsumme zu erhalten... wie mach ich das am besten... muss ich ein array machen?
bitte um hilfe.. Tobi
 

javimka

Top Contributor
in welcher Form liegen diese vielen Objekte den vor, wenn nicht als Array? Schlussendlich wirst du einfach alle durchgehen müssen und die Werte aufaddieren.
 
So, hab das Problem jetzt einigermaßen im Griff, nur dass ich bei der Addition auf die in der ersten Klasse initialisierten Objekte zugreifen soll, was im Array über {Vektor1.x, blabla} nicht funktioniert, ich weiß aber keine andere möglichkeit, bin wie gesagt noch ziemlich neu... hoffe mir kann jemand helfen... danke!

Java:
public class MyVector3D {
	int x;
	int y;
	int z;
	
	public MyVector3D(){
		x = 0;
		y = 0;
		z = 0;
	}
	
	public MyVector3D(int a,int b,int c){
		x = a;
		y = b;
		z = c;
	}
	
	
	public static void main(String [] args) {
	
		MyVector3D Vektor1 = new MyVector3D(5,7,9); 
		MyVector3D Vektor2 = new MyVector3D(5,7,9); 
		
	}

class MyVectorMath {
	
	
	public void main (String[] args) {
	
	int[] a = {Vektor1.x, Vektor1.y, Vektor1.z};
	int[] b = {Vektor2.x, Vektor2.y, Vektor2.z};
	int[] c = new int[3];

	for(int i=0;i<a.length;i++) {
	c[i] = a[i]+b[i];
	}
	
	System.out.println(c[0] + ", " + c[1] + ", " + c[2]);
	}}}
 

javimka

Top Contributor
Du könntest der Klasse MyVector3D die Methode add(MyVector3D v) hinzufügen.
Java:
public MyVector3D add(MyVector3D v) {
  return new MyVector3D(x+v.x, y+v.y, z+v.z);
}
 
am besten wäre, wenn ich in der ersten klasse zwei vektorobjekte initialisiere und in der zweiten klasse eine methode angebe mit der ich auf die beiden objekte zugreife und eine summe als neuen vektor ausgebe
 

javimka

Top Contributor
Objekt-Orientierter wäre es, wenn die Klasse Vektor selber fähig wäre, eine Vektoraddition durchzuführen.
 

javimka

Top Contributor
Dann könntest du eine solche Methode in irgendeiner Klasse implementieren. Möglicherweise müsstest du x,y,z noch public oder protected machen. Dazu würdest du in der Klasse MyVector3D dann schreiben: public int x;
Java:
public MyVector3D add(MyVector3D v1, MyVector3D v2) {
  return new MyVector3D(v1.x+v2.x, v1.y+v2.y, v1.z+v2.z);
}
 
Hey, irgendwie sagt er mir jetzt, dass die objekte v1 und v2 nicht gelesen werden, aber das tu ich doch in der 2. klasse, oder nicht?
Java:
public class MyVector3D {
	public int x;
	public int y;
	public int z;
	public int r;
	
	public MyVector3D(){
		x = 0;
		y = 0;
		z = 0;
	}
	
	public MyVector3D(int a,int b,int c){
		x = a;
		y = b;
		z = c;
	}
	
		public static void main(String [] args) {

		MyVector3D v1= new MyVector3D(5,3,6);	
		MyVector3D v2= new MyVector3D(1,1,2);
	}
	class MyVectorMath {
		
	public MyVector3D add(MyVector3D v1, MyVector3D v2){
		return new MyVector3D(v1.x+v2.x, v1.y+v2.y, v1.z+v2.z);
		}
	
	public MyVector3D skalar(MyVector3D v1,int r){
		r=5;
		return new MyVector3D(v1.x*r, v1.y*r, v1.z);
		}
			
	public MyVector3D vektor(MyVector3D v1, MyVector3D v2){
		return new MyVector3D(v1.y*v2.z-v1.z*v2.y,v1.z*v2.x-v2.z*v1.x,v1.x*v2.y-v1.x*v2.x);

		}
	}}
 

javimka

Top Contributor
Das Problem rührt daher, dass du v1 und v2 zwar instanzierst, aber dann nichts damit machst. Der Compiler ist so schlau und merkt, dass die dann relativ nutzlos sind ;)
Allerdings ist das nur eine Warnung, kein Fehler, es kompiliert also dennoch.

Etwas "sinnvolles" machen damit, könntest du, indem du folgendes hinter die Instanzierung von v1 und v2 schreibst:
Java:
        MyVectorMath math = v1.new MyVectorMath();
        MyVector3D result = math.add(v1, v2);
        System.out.println(result.x+" "+result.y+" "+result.z);
Falls du das v1.new MyVectorMath() komisch findest, liegst du richtig, das sieht nicht so toll aus ;)
Etwas seltsam ist bei der Konstruktion von MyVector3D halt, dass da noch eine Klasse drin ist, die die eigentlichen Operationen ausführen soll. Schöner wäre es, diese Operationen direkt in MyVector3d zu schreiben, aber naja, wenn das von deinem Arbeitsblatt verboten wird, muss man es halt auf diese Art machen :)
 
G

Gast

Gast
hey bipolar minds

hast du zufähli skype`?

grüße aus marburg ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Vektoraddition Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben