Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 28.06.2009, 00:54   #1 (permalink)
Newbie
 
Registriert seit: 26.11.2008
Ort: Würzburg
Beiträge: 32
Standard Tangens

Hallo erstma,
wie muss ich in einem script die gleichung schreiben, wenn ich von einem wert den tangens ermitteln möchte?
weil mit "tan x" klappts nich, habs schon mit klammern und allen möglichen zeugs versucht aber funktioniert nicht...
Is des überhaupt möglich? Weil ich möchte den tangens von einem Vektor, welchen ich dann als direction von einem Fahrzeug festlegen will.
nooblike ist offline   Mit Zitat antworten
Alt 28.06.2009, 08:32   #2 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 78
Beiträge: 6.547
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 09:30 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 28.06.2009, 16:08   #3 (permalink)
Newbie
 
Registriert seit: 26.11.2008
Ort: Würzburg
Beiträge: 32
Standard

danke für die antwort, nur leider krieg ich die funktion hier

[player, getpos dude] call BIS_fnc_dirTo

net zum laufen, ich geb für player den namen von dem objekt ein das eine direction bekommen soll und für dude den namen von einem 2. objekt.


Aber hier das script damit du mal siehst was ich meine

Code:
_fhz = _this select 0
_fhz2 = _this select 1
_bomb = "smokeShell" createvehicle [(getpos_fhz select 0), (getpos_fhz select 1), (getpos_fhz select 2)]
_bomb setpos [(getpos_fhz select 0), (getpos_fhz select 1), (getpos_fhz select 2)+6]
_posx1 = (getpos_bomb select 0)
_posy1 = (getpos_bomb select 1)
_posz1 = (getpos_bomb select 2)
#schleife
_posx2 = (getpos_fhz2 select 0)
_posy2 = (getpos_fhz2 select 1)
_posz2 = (getpos_fhz2 select 2)
_posX3 = (_posx2-_posx1)
_posY3 = (_posy2-_posy1)
_posZ3 = (_posz2-_posz1)
_bug = (_posx3/_posy3)
_dir = tan(_bug)
playersideChatformat ["1% richtung, 2%",_dir, _bug]
_bomb setvelocity [_posx3, _posy3, _posZ3]
[_bomb ,getpos _fhz2] call BIS_fnc_dirTo
_bombpos = getpos _bomb
_fhzpos = getpos_fhz2
? (_bombpos distance _fhzpos < 1):goto "fertig"
goto "schleife"
#fertig
exit
nooblike ist offline   Mit Zitat antworten
Alt 29.06.2009, 08:30   #4 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

getpos_fhz select 0

hmm du bist ein bisschen zu sparsam mit den Leerzeichen.
so:

getPos _fhz select 0



playersideChatformat...
gibt es auch nicht
sondern:
player sideChat format...


So sehn diese Winkel und Vektorberechnungen normalerweise bei mir aus.
Glaub ich muss trotzdem auch ma die BIS-funktionen antesten.
Code:
_pos1 = getposasl _obj1;
_pos2 = getposasl _obj2;
_xdis = (_pos2 select 0) - (_pos1 select 0);
_ydis = (_pos2 select 1) - (_pos1 select 1);
_zdis = (_pos2 select 2) - (_pos1 select 2);
_dir = _xdis atan2 _ydis;
_xydis = sqrt((_xdis*_xdis)+(_ydis*_ydis));
_dirup = _xydis atan2 _zdis;
_xdir = sin _dir;
_ydir = cos _dir;
if ((sin _dirup) == 0) then {_dirup = _dirup +1};
_zdir = ((1 / sin _dirup) * cos _dirup);
Verwend für solche Berechnungen immer getPosASL nicht getPos
__________________
Tajin ist offline   Mit Zitat antworten
Alt 03.07.2009, 16:48   #5 (permalink)
Newbie
 
Registriert seit: 26.11.2008
Ort: Würzburg
Beiträge: 32
Standard

Zitat von Tajin

getpos_fhz select 0

hmm du bist ein bisschen zu sparsam mit den Leerzeichen.
so:

getPos _fhz select 0


playersideChatformat...
gibt es auch nicht
sondern:
player sideChat format...
So sehn diese Winkel und Vektorberechnungen normalerweise bei mir aus.
Glaub ich muss trotzdem auch ma die BIS-funktionen antesten.

Code:
_pos1 = getposasl _obj1;
_pos2 = getposasl _obj2;
_xdis = (_pos2 select 0) - (_pos1 select 0);
_ydis = (_pos2 select 1) - (_pos1 select 1);
_zdis = (_pos2 select 2) - (_pos1 select 2);
_dir = _xdis atan2 _ydis;
_xydis = sqrt((_xdis*_xdis)+(_ydis*_ydis));
_dirup = _xydis atan2 _zdis;
_xdir = sin _dir;
_ydir = cos _dir;
if ((sin _dirup) == 0) then {_dirup = _dirup +1};
_zdir = ((1 / sin _dirup) *cos _dirup);
Verwend für solche Berechnungen immer getPosASL nicht getPos
ah danke, sowas wie den atan2 hab ich gesucht. Funktionieren tun deine berechnungen, jedoch versteh ich nahezu nur bahnhof von dem was du da alles rumrechnest um _zdir zu bekommen. Außerdem versteh ich auch nicht wo man _zdir einsetzen soll. Könntest du mir bitte noch erklären was ich tun muss mit _zdir?

Ach ja, ich bin eig. nich sparsam mit den leerzeichen, jedoch waren alls ich das script kopiert hab, keine mehr drinnen und ich hab vergessen wieder alle reinzusetzen.

Geändert von nooblike (03.07.2009 um 19:03 Uhr).
nooblike ist offline   Mit Zitat antworten
Alt 03.07.2009, 17:11   #6 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Code:
_zdir = ((1 / sin _dirup) *(cos _dirup);
Warum hast du hier eine "(" vor cos gesetzt ? Die gehöhrt da nicht hin.

Und naja was du mit zdir tun musst, hängt davon ab was du vorhast. Zdir ist die Höhenachse des Richtungsvektors den ich hier berechne.


Ich persönlich benutz das Script für zielgelenkte Raketen, also reichen x und y koordinaten natürlich nicht aus.

Angewendet könnte z.B. so aussehen:
Code:
_fact = 100; //geschwindigkeit
_ob1vecup = vectorup _obj1;
_obj1 setvectorup [_ob1vecup select 0,_ob1vecup select 1,(_obj1vecup select 2)-_zdir];
_obj1 setvectordir [_xdir,_ydir,_zdir];
_obj1 setvelocity [_xdir*_fact,_ydir*_fact,_zdir*_fact];
Zdir berechne ich indem ich erst die 2dimensionale entfernung berechne, mit der üblichen "a² + b² = c²" formel. Damit kann man dann genau wie bei x und y, atan2 verwenden um zum gewünschten Ergebniss zu kommen. Hab aber auch n weilchen rumüberlegt bis ich das raushatte.
__________________
Tajin ist offline   Mit Zitat antworten
Alt 04.07.2009, 17:43   #7 (permalink)
Newbie
 
Registriert seit: 26.11.2008
Ort: Würzburg
Beiträge: 32
Standard

Zitat:

Code:
_zdir = ((1 / sin _dirup) *(cos _dirup);

Warum hast du hier eine "(" vor cos gesetzt ? Die gehöhrt da nicht hin.

Und naja was du mit zdir tun musst, hängt davon ab was du vorhast. Zdir ist die Höhenachse des Richtungsvektors den ich hier berechne.


Ich persönlich benutz das Script für zielgelenkte Raketen, also reichen x und y koordinaten natürlich nicht aus.

Angewendet könnte z.B. so aussehen:

Code:
_fact = 100; //geschwindigkeit
_ob1vecup = vectorup _obj1;
_obj1 setvectorup [_ob1vecup select 0,_ob1vecup select 1,(_obj1vecup select 2)-_zdir];
_obj1 setvectordir [_xdir,_ydir,_zdir];
_obj1 setvelocity [_xdir*_fact,_ydir*_fact,_zdir*_fact];

Zdir berechne ich indem ich erst die 2dimensionale entfernung berechne, mit der üblichen "a² + b² = c²" formel. Damit kann man dann genau wie bei x und y, atan2 verwenden um zum gewünschten Ergebniss zu kommen. Hab aber auch n weilchen rumüberlegt bis ich das raushatte.

Ops, kp wieso da ne klammer is die da nich hingehört.
Das mit ob1vecup und obj1vecup, da haste dich vertan oder muss man für die höhe doch noch extra was berechnen???

Also und was ich immernoch nich verstanden hab is, du machst den pytaguras und hast dann die länge der hypotenuse, den abstand von obj1 zu obj2. Jedoch was ich überhaupt nich versteh is wieso du die länge brauchst und diese dann quasie durch den höhenunterschied der beiden objekte teilst und daraus den tangens ziehst. Mir fällt keine formel dafür ein die das bräuchte? (hab grad erst meinen realschulabschluss hinter mir also bin kein mathestudent der da voll durchblickt) Also wenn du wenigstens die Formel mit hinschreiben könntest, damit ich den sinn verstehe wäre mir sehr geholfen. Auch weiß ich leider nicht wieso

(1/sin x) * cos x

diese formel kenn ich ebenso wenig, hab dazu auch im netz nix gefunden. Um ehrlich zu sein hab ich sogar den ganzen tag versucht dahinter zu kommen, was du eig. ausrechnest. weil das was da rauskommt is ja nichmal nen winkel sondern kryptisch^^

Also ich wäre dir wirklich sehr verbunden wenn du mir einfach die formel nach der du da gearbeitet hast hinschreibst.

Mfg Daniel
nooblike ist offline   Mit Zitat antworten
Alt 05.07.2009, 11:52   #8 (permalink)
Newbie
 
Registriert seit: 02.07.2009
Alter: 30
Beiträge: 18
Standard

Zitat von nooblike Beitrag anzeigen

Auch weiß ich leider nicht wieso

(1/sin x) * cos x

diese formel kenn ich ebenso wenig, hab dazu auch im netz nix gefunden. Um ehrlich zu sein hab ich sogar den ganzen tag versucht dahinter zu kommen, was du eig. ausrechnest. weil das was da rauskommt is ja nichmal nen winkel sondern kryptisch^^

Mathematisch gesehen:

sinx/cosx = tanx

--> cosx/sinx = 1/tanx = cot x

Tangens und Kotangens ? Wikipedia

Mehr kann ich dir auch nicht sagen da ich mich mit Skripting nicht auskenne
BulletsBreath ist offline   Mit Zitat antworten
Alt 06.07.2009, 08:19   #9 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

zu 100% weiß ich auch nichtmehr was ich da alles gemacht hab, ist schonwieder n weilchen her. Aufjedenfall funktioniert es wohl.

Vectorup und Vectordir sind etwas vertrackt manchmal, zumindest bei den Raketen. Notfalls einfach rumprobieren bis es klappt.
__________________
Tajin ist offline   Mit Zitat antworten
Alt 09.07.2009, 18:55   #10 (permalink)
Newbie
 
Registriert seit: 26.11.2008
Ort: Würzburg
Beiträge: 32
Standard

aahh, jetzt fällt es mir wie schuppen von den augen, jedoch auch nur zu 50%. Dank Bulletsbreath weiß ich jetzt wie die umwandlung von statten ging. Nur des Vectorup/dir is mir immernoch nen rätsel, anscheinend fliegt meine rakete bei dem script nämlich sogar nen paar mal um mein flieger herum oder neben dran vorbei bis es den entgültig erwischt.
Sowas darf ja damit eig. nich sein, aber gut was solls, war sowieso nur für testzwecke.
Nun denn, herzlichen dank an euch das ihr mir geholfen habt
nooblike ist offline   Mit Zitat antworten
Alt 10.07.2009, 21:15   #11 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Winkel.sqs
Code:
;//Testskript für atan2 Befehl   [Vienna, 14.03.2009]
;//===========================
;//Parameter: [Objekt1,Objekt2]
;//
;//Aufruf [Objekt1,Objekt2] exec "Winkel.sqs"


;//Funktion welche den Winkel des 2.Objekts zum 1.Objekt zurückgibt (ident zum Kompass des 1.Objekts).
;//Aufruf [Objekt1,Objekt2] call _winkel
_winkel={private"_w";_w=((getPos(_this select 1)select 0)-(getPos(_this select 0)select 0))atan2((getPos(_this select 1)select 1)-(getPos(_this select 0)select 1));if(_w<0)then{_w=_w+360};floor _w};

;//Ausgabe des Winkels
player groupchat format ["%1 Grad",_this call _winkel];
Vienna ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116