Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

Chtěl jsem se zeptat jestli někdo nevíte jak mam převést sinus úhlu do stupňů? Předem díky za případnou odpověď :)

Odpovědět 18.2.2013 16:20
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Theodor Johnson
Luboš Běhounek (Satik):

pseudokód by byl asi takovejhle:

radtodeg(arcsin(x));

přičemž převod z radiánů na stupně je jen násobení konstantou :)

Editováno 18.2.2013 16:24
Nahoru Odpovědět 18.2.2013 16:23
:)
Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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();
  1. bod - label2.Location
  2. bod - MousePosition
Editováno 18.2.2013 16:56
Nahoru Odpovědět 18.2.2013 16:53
Přecházím na "Cross-Platform Development"
Avatar
Kit
Redaktor
Avatar
Odpovídá na Theodor Johnson
Kit:

Proč tam počítáš tu absolutní hodnotu?

Možná jsi zapomněl sideB odmocnit.

Nahoru Odpovědět 18.2.2013 17:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Kit
Theodor Johnson:

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

Nahoru Odpovědět 18.2.2013 17:15
Přecházím na "Cross-Platform Development"
Avatar
Kit
Redaktor
Avatar
Odpovídá na Theodor Johnson
Kit:

A proč to nenacpeš do nějaké metody třeba k té myši? Takhle v tom nasekáš hromadu chyb.

Nahoru Odpovědět 18.2.2013 17:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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
Nahoru Odpovědět 18.2.2013 17:28
Přecházím na "Cross-Platform Development"
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Kit
Theodor Johnson:

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

Nahoru Odpovědět 18.2.2013 17:29
Přecházím na "Cross-Platform Development"
Avatar
Kit
Redaktor
Avatar
Odpovídá na Theodor Johnson
Kit:

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.

Nahoru Odpovědět 18.2.2013 17:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Kit
Theodor Johnson:

Na to MousePosition nemam metodu to je součást Control.Mouse­Position

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 { }
        }
    }
}
Nahoru Odpovědět 18.2.2013 18:26
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Theodor Johnson
Luboš Běhounek (Satik):

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?

Nahoru Odpovědět 18.2.2013 18:42
:)
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Theodor Johnson:

Právě že ta poslední nefunguje dobře, meří od 0 - cca180, ale neměří úhel, ale vzdálenost myši k label2

Nahoru Odpovědět 18.2.2013 18:54
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Theodor Johnson
Luboš Běhounek (Satik):

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

Editováno 18.2.2013 19:08
Nahoru Odpovědět 18.2.2013 19:07
:)
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Theodor Johnson:

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

Nahoru Odpovědět 18.2.2013 19:18
Přecházím na "Cross-Platform Development"
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 14 zpráv z 14.