• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Vector2 magnitude

Tobero

Tobero

Mitglied
Ich benötige in meinem Programm eine Magnitude und setMagnitude Funktion. Ich habe mich umgeschaut, aber habe nur etwas für lua gefunden, was ich nicht ganz verstanden habe. Kann mir jemand sagen, wie ich soetwas machen soll? Meine Vector Klasse enthält nur zwei floats, für die x und y position.
 
Tobero

Tobero

Mitglied
magnitude und setMagnitude:
public float magnitude()
    {
        return (float)Math.sqrt(x*x + y*y);
    }
    
    public Vector2 setMagnitude() {
        float mag = magnitude();
        
        Vector2 newMag = new Vector2();
        newMag.mul(mag);
        
        return newMag;
    }

Ich weiß nicht ob du das so gemeint hast, aber ich habe es jetzt so gemacht. Hab ich da was falsch verstanden?
 
kneitzel

kneitzel

Top Contributor
Ja, Du willst ja eine Magnitude setzen. Also muss die Methode einen entsprechenden Parameter haben ...

Daher ist erst einmal wichtig, da zu verstehen, um was es geht:
Du hast einen Vektor und dieser hat eine bestimmte Länge.
Nun willst Du aber, dass er eine bestimmte Länge haben soll - wie bekommst Du das hin?
 
Tobero

Tobero

Mitglied
Java:
public Vector2 setMagnitude(float m) {       
        float mag = magnitude();
    
        float newX = x * m / mag;
        float newY = y * m / mag;
        
        return new Vector2(newX, newY);
    }
Habe jetzt etwas nachgedacht, könnte es vielleicht so sein? Wenn ja, dann war das andere komplett daneben.
 
kneitzel

kneitzel

Top Contributor
Also generell wäre der einfachste Test natürlich, es einfach einmal auszuprobieren:
Nach einem setMagnitude kannst Du magnitude aufrufen und prüfen, ob das Ergebnis korrekt ist.

Und ja - dein Code ist korrekt und so setzt Du die Länge des Vektors korrekt.
 
Anzeige

Neue Themen


Oben