berechnung des winkels von einer koordinate zur anderen
Delphi-Quellcode:
function cortowink(x,y,x2,y2:single):single ; // winkelfunktion umkehrung ( xy ---winkel?--> x2y2 )
//------------------------------------------------------------------------------
// x/y = anfangspunkt 0 // x2/y2 = endpunkt zu dem der winkel berechnet werden soll
function cortowink(x,y,x2,y2:single ):single ; // funktion zum berechnen des winkels für x y -> x2 y2
var
wurzel: single;
begin
result := 0.1; // falls garnix von dem da unten funzt
//rechts oben kreishälfte - winkel berechnen ( 360 - arcsin )
if ( (x2 > x) AND (y2 < y) ) then result := 360-radtodeg(arcsin((y-y2) / sqrt( ((x2-x)*(x2-x))+((y-y2)*(y-y2)) )));
// links unten kreishälfte
if ( (x2 < x) AND (y2 > y) ) then result := 180-radtodeg(arccos((x-x2) / sqrt( (x-x2)*(x-x2)+(y2-y)*(y2-y) ) ));
// links oben kreishälfte ( 180 + arccos )
if ( (x2 < x) AND (y2 < y) ) then result := 180+radtodeg(arccos((x-x2) / sqrt( (x-x2)*(x-x2)+(y-y2)*(y-y2) ) ));
// rechts unten kreishälfte
if ( (x2 > x) AND (y2 > y) ) then result := radtodeg(arcsin((y2-y) / sqrt( ((x2-x)*(x2-x))+((y2-y)*(y2-y)) )));
// gerade werte ( komma werte adden damit die flieger nicht haargenau geradeaus fliegen können )
// hoch
if ( (x2 = x) AND (y2 < y) ) then result := 270.1;
//runter
if ( (x2 = x) AND (y2 > y) ) then result := 90.1;
//links
if ( (x2 < x) AND (y2 = y) ) then result := 180.1;
//rechts
if ( (x2 > x) AND (y2 = y) ) then result := 0.1;
// punkt auf punkt
if ( (x2 = x) AND (y2 = y) ) then result := 0.1;
end;
//------------------------------------------------------------------------------
vielleicht hilfts ja bissi
zu deinem problem noch:
ball fliegt in einem winkel zum schläger
ball trifft schläger ( berechnen wieviel % am rand oder zur mitte hin )
winkel vom ball je nach flugrichtung nun verändern um 90° ( austrittswinkel )
und dazu noch x% - oder + damit der "ellypsenschläger" auch seine wirkung zeigt
-> ball mit neuem winkel weiterfliegen lassen bis er wieder irgendwo abprallt usw
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!