Jump to content
  • 0

pomoc úhel mezi dvěma (2) body


KillBill61

Dotaz

Jak prosím Vás zjistím úhel mezi dvěma body když mám u obou souřadnice x, y, z

Potřebuji udělat, aby se otáčel(1.bod) předkem k 2. bodu

 

Vím, že je to matika, ale nemůžu na to nějak přijít, aby to nebylo tak šíleně složité a zdlouhavé a zátěžové :d

Link to comment
Share on other sites

7 odpovědí na tuto otázku

Recommended Posts

  • 0

Najskor sinus,kosinus, tangenss....nieco z toho urcite, viac ti neporadim lebo matika je u mna nepriatel cislo jedna :d mozno aj cez novinku VectorSize....ked tak prehladaj samp forko :)

Link to comment
Share on other sites

  • 0

Prečo je to hlúposť:

Raz som chcel spraviť autoaim do samp a nepodarilo sa mi to, pretože ako určite vieš samp mapa má sprosté koordináty - nula je v strede, takže by si musel pre každý prípad (x < 0, x > 0, y < 0, ...) vymyslieť rozličné funkcie a použiť rozličné vzorce.
Tam už potom nebude stačiť iba vypočítať uhol, ale v niektorých prípadoch zas odpočítať uhol od 360...
Pre každý prípad potom by to už pre každého hráča lagovalo jak prasa.


Ale ako píšu ostatní, na to stačia tieto funkcie (sin, cos, ...), len som ťa musel upozorniť, že je to horšie než to vyzerá ;).

Link to comment
Share on other sites

  • 0

řekněme, že mi stačí 2D protože jestli bude čumět dolu nebo nahoru mi je už jedno jelikož jde o rychlá auta, která maximálně padaj z MCH :d

 

a sinus a cosinus to mi taky napadlo ale mam plnou hlavu vektoru a vektorovych soucinu ze nwm jak mam vyresit tyto 2 body :d mozna z nich udelat vektor a vypocitat uhel s vektorem ktery lezi na ose X a pak dopocitat uhel - ale jestli vite lehci zpusob tak reknete :d

Link to comment
Share on other sites

  • 0
stock Float:GetPointToPointAngle(Float:fx, Float:fy, Float:tx, Float:ty)

{

new Float:angle = floatabs(atan(floatdiv((ty-fy), (tx-fx))));

if(tx <= fx && ty >= fy) angle = floatsub(180.0, angle);

else if(tx < fx && ty < fy) angle -= 180.0;

else if(tx >= fx && ty <= fy) angle = floatsub(360.0, angle);

angle -= 90.0;

while(angle >= 360.0) angle -= 360.0;

while(angle < 0.0) angle += 360.0;

return angle;

}

Link to comment
Share on other sites

  • 0

hrozně moc děkuju :) ale potřeboval bych jeste neco

 

2 problemy - jeden na logiku a druhy nema logiku :(

MoveObject(show_arrow[playerid], mokam_x, mokam_y, mokam_z+2.0, 100.0, 90.0, 90.0, (LookAtMe(okamz_x, okamz_y, mokam_x, mokam_y)+90.0));

toto normalne funguje a lita nad autem (hrozne to zrni - vite jak to myslim) - tak bych potreboval to attachnout na auto jenomze - tam se to nenataci podle svetove x, y, z ale podle x, y, z auta - (ted mi napadlo odecist proste angle auta ale nwm jestli to bude fungovat :d)

 

2. problem je horsi - LookAtMe mi normalne funguje (upraveny nez je tady akorat v tom ze misto return angle; je tam return floatround(angle, floatround_round); protoze mi to psalo chybu (asi neumi returnout Float)

nadherne mi to funguje viz vyse az na tu drobnost

 

ale kdyz chci udelat new angle_look = LookAtMe(x_s, y_s, rocket_x, rocket_y); tak se to nekolikrat opakuje bezduvodne a celej server je seklej protoze porad neco bezi - while? nwm co - kdyz dam new angle_look = 0; tak vsechno jde jak ma a zadny nekonecne opakovani

zajimavy je ze i kdyz jsou u 2. problemu souradnice stejne jako u 1. problemu kde to funguje tak u 2. problemu to proste blbne a nwm proc

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...