Diskuze: Sin => Degrees

Tvůrce

Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
pseudokód by byl asi takovejhle:
radtodeg(arcsin(x));
přičemž převod z radiánů na stupně je jen násobení konstantou
Tak mám trošku větší problém než jsem čekal, v podstatě jsem se snažil zjistit úhel určitého bodu od jiného bodu, ale furt tam mam asi něco špatně
double sideA = Math.Abs(label2.Location.Y - MousePosition.Y);
double sideB = ((label2.Location.X - MousePosition.X) * (label2.Location.X - MousePosition.X)) + ((label2.Location.Y - MousePosition.Y) * (label2.Location.Y - MousePosition.Y));
label1.Text = Math.Asin(sideA / sideB).ToString();
Proč tam počítáš tu absolutní hodnotu?
Možná jsi zapomněl sideB odmocnit.
Tu abs jsem tam měl aby délka strany nevyšla záporný číslo
Jo odmocnit jsem vážně zapoměl, ale nepomohlo mi to, teď mi to kolem dokola vypisuje hodnotu od 0.003 do 0.013
A proč to nenacpeš do nějaké metody třeba k té myši? Takhle v tom nasekáš hromadu chyb.
Zkusil jsem to znovu předělat, ale pořád to neni dobrý
double sideA = Math.Abs(label2.Location.Y - MousePosition.Y);
double sideB = Math.Abs(label2.Location.X - MousePosition.X);
label1.Text = (Math.Atan2(sideA, sideB) * 57.2957795).ToString(); // * 57.2957795 je pro převod z rad do deg
Teď tě trochu nechápu, já se snažim vytvořit stejnou funkci jako je v GML point_direction, a tam to nemam kam dát k myši
MousePosition je tam jako final? Pokud ne, tak to můžeš zdědit. Také to můžeš přidat k labelu nebo to udělat jako statickou metodu.
Ta absolutní hodnota se dělá až na výsledek. Ve výpočtu nemá co pohledávat.
Na to MousePosition nemam metodu to je součást Control.MousePosition
Já na tom nemam moc co upravovat, to je skoro prázdnej program, všechno co obsahuje je:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
double sideA = (label2.Location.Y - MousePosition.Y);
double sideB = (label2.Location.X - MousePosition.X);
label1.Text = Math.Abs(Math.Atan2(sideA, sideB) * 57.2957795).ToString(); // * 57.2957795 je pro převod z rad do deg
}
catch { }
}
}
}
Pokud bys tam chtěl ten úhel někde dál používat, tak to abs vyhoď úplně, dělalo by tam jen problémy.
Pokud chceš ten úhel mít v rozmezí 0°-360°, tak jen zjisti, jestli je úhel menší než nula - pak přičti k úhlu 360, jinak to nech být.
A ta poslední verze ti už funguje, ne?
Právě že ta poslední nefunguje dobře, meří od 0 - cca180, ale neměří úhel, ale vzdálenost myši k label2
Ale funguje dobře a měří úhel.
Problém je úplně jinde - MousePosition je pozice na obrazovce a label.location je pozice na formuláři .
EDIT: A vyhoď ten abs
Díky, vůbec jsem si to neuvědomil že ten label je vlastně vzhleme k myši někde uplně jinde, ale stejně mi přijde že tam někde malá chybka bude, když kolem label2 kroužim myší tak se chvilku mění třeba o 5, a pak najednou třeba o 30
Zobrazeno 14 zpráv z 14.