Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Nauč se s námi víc. Využij 50% zdarma na e-learningové kurzy.
C# week

Diskuze: Počítání směru pomocí Atan2

Aktivity
Avatar
Theodor Johnson
Redaktor
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
Luboš Běhounek Satik
Autoredaktor
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
Redaktor
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 Ѐλđ
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Kit
Redaktor
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
Autoredaktor
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
Redaktor
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.