Vector2 magnitude

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

Mitglied
[CODE lang="java" title="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;
}[/CODE]

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

kneitzel

Gast
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

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

kneitzel

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

Neue Themen


Oben