Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu. Zároveň využij slevovou akci až 30 % zdarma při nákupu e-learningu - Více informací.
python week + discount 30
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:15.10.2013 22:28

Ahoj mám takový problém se směrem pohybu objektu, počítám ho pomocí kódu

// Count force power
double direction = Math.Atan2(value.direction.Y - value.position.Y, value.direction.X - value.position.X);
direction = direction / Math.PI * 180;

// Set force
force = new ForcePower();
force.HorizontalForce = Math.Cos(direction) * value.power;
force.VerticalForce = Math.Sin(direction) * value.power;

kde: value.direction je bod konečný bod, value.position je bod kde se objekt nachází. Problém je v tom že se objekty rozlétnou náhodným směrem, místo směrem ke konečnému bodu

Odpovědět
15.10.2013 22:28
Mo8ilε 15 Ѐλđ
Avatar
Odpovídá na Theodor Johnson
Luboš Běhounek Satik:15.10.2013 22:52

Tady se počítá úhel v radiánech a ne stupních, předpokládám, že ta 180 byla myšlena jako stupně :) .

Nahoru Odpovědět
15.10.2013 22:52
https://www.facebook.com/peasantsandcastles/
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Theodor Johnson:15.10.2013 23:16

Budu se muset podívat jestli jsem nenapsal špatně určení toho konečného bodu, tenhle kód mi fungoval dobře na otáčení obdelníku po směru myši, takže minimálně první 2 řádky fungují dobře

Nahoru Odpovědět
15.10.2013 23:16
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:15.10.2013 23:21

Do proměnné direction strkáš nejprve radiány, pak je přepočítáš na stupně a pak s ní pracuješ, jako kdyby v ní byly radiány.

Stačí smazat řádek

direction = direction / Math.PI * 180;

je tam úplně zbytečný a je v rozporu s dobrými praktikami.

Nahoru Odpovědět
15.10.2013 23:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Luboš Běhounek Satik:15.10.2013 23:24

Řádek

direction = direction / Math.PI * 180;

bych úplně vyhodil, podle mě je to nějaký zbytek po něčem předchozím, co na tomhle místě být nemá.

Nahoru Odpovědět
15.10.2013 23:24
https://www.facebook.com/peasantsandcastles/
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:15.10.2013 23:29

Kit, Luboš Běhounek Satik Díky,myslel jsem si že když tám mám ten sinus a cosinus tak že by tam měly být stupně a ne radiány. Teď už to funguje :)

Nahoru Odpovědět
15.10.2013 23:29
Mo8ilε 15 Ѐλđ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.