Also vorab, das hier habe ich:
function coords(x,y) {
this.x = x;
this.y = y;
}
function sphere(pos,spd) {
var self = this;
this.position = new coords(0,0);
if(typeOf(pos) !== "undefined") {
this.position = pos;
}
this.speed = new coords(0,0);
this.getWinkel = function() {
var distancey = (self.position.y + self.speed.y) - self.position.y;
var distancex = (self.position.x + self.speed.x) - self.position.x;
return(Math.atan2(distancey,distancex) * (180 / Math.PI));
}
this.getSpeed = function() {
var start = new coords(0,0);
var ziel = new coords(self.speed.x - self.position.x,self.speed.y - self.position.y);
var calced = new coords(Math.abs(start.x - ziel.x),Math.abs(start.y - ziel.y));
var distance = Math.sqrt(Math.pow(calced.x,2) + Math.pow(calced.y,2));
return(distance);
}
}
Verbesserungsvorschläge sind gern gesehen. PS: Kann man eine klasse in einer klasse definieren? Oder gibts ne grundvorlage, welche ähnlich zu meiner coords-klasse is? Hätte gern Alles in Einem.
Was ich jetzt möchte, dass "speed" quasi zurückberechnet werden kann aus winkel und geschwindigkeit.
Quasi:
var sph = new sphere();
var winkel = sph.getWinkel();
var speed = sph.getSpeed();
// und das hier will ich haben.
var targetCoord = sph.getTarget(winkel,speed);
Vorab, um das gleich in einem Beitrag zu packen: Ich will später auch eine funktion (auf basis dieser klasse) haben, welche bei kugeln die korrekte abprall-winkel zurückgibt. Dabei ist die zielkugel (also nicht die ausgangskugel) fix und absorbiert keine geschwindigkeit.
Was ich gaaaaanz genau vorhabe: Wer kennt das Android-Game "Orbital"? Dann dürfte es leicht zu erkennen sein.
→ Aber erstmal ←
Ich möchte aus Winkel und Geschwindigkeit (Wie zuvor bereits berechnet) eine zielkoordinate (ausgehend vom startpunkt 0/0) errechnen. Von 0/0 aus deswegen, um diese auch für die geschwindigkeit zu nutzen.
Wer kann mir da möglichst für laien erklären, wie man das berechnet? PS: Werde meine Lösung natürlich auch hier posten.
⇒ An alle, die mitlesen oder später googeln, sucht in den Antworten von mir. Da könnt ihr ggf. eine Lösung finden.