Diskuze: Program v C#

C# .NET .NET (C# a Visual Basic) Program v C# American English version English version

Aktivity (1)
Avatar
parinho
Člen
Avatar
parinho:21.4.2015 16:17

Vedel by mi niekto poradiť. Mojou úlohou je v programe c#, naprogramovať win aplikáciu ktorá má pomocou transformačnej matice otočiť pravouhlý štvoruholník okolo zadaného vrcholu.
Ďakujem.

Editováno 21.4.2015 16:19
 
Odpovědět 21.4.2015 16:17
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na parinho
David Čápka:21.4.2015 16:28

Program v C# je poměrně nic neříkající název vlákna, který budou někteří i ignorovat. Na fóru je zvykem pokládat otázka. Jaká je tvá otázka, co konkrétně ti nejde? Jinak pravoúhlý čtyřúhelník je IMHO obdélník :D

Nahoru Odpovědět 21.4.2015 16:28
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
parinho
Člen
Avatar
parinho:21.4.2015 16:34

Viem že je to obdlžnik, respektíve štvorec. Program samotný ide, otáčanie okolo vrcholu som vyriešil takto :

Rectangle rectangle = new Rectangle(xmin, ymin, xmax - xmin, ymax - ymin);
g.DrawRectangle(pen, rectangle);

Region myRegion = new Region(rectangle);

Matrix transformMatrix = new Matrix();

if (radioButton1­.Checked)
{
transformMatrix­.RotateAt(alfa, new Point(xmin,ymin));

}
else
if (radioButton2­.Checked)
{
transformMatrix­.RotateAt(alfa, new Point(xmax, ymax));

}
else
if (radioButton3­.Checked)
{
transformMatrix­.RotateAt(alfa, new Point(xmin, ymax));
}
else
if (radioButton4­.Checked)
{
transformMatrix­.RotateAt(alfa, new Point(xmax, ymin));
}

myRegion.Tran­sform(transfor­mMatrix);

g.FillRegion(Brushes­.Blue, myRegion);

Čo ale nemá nič spoločne s transformačnou maticou.
Matice sú dané vzorcom.
Matrix otocenie = new Matrix(cos,sin,-sin,cos,0,0);
Matrix posunutia = new Matrix(1, 0, 0, 1, sx, sy);
Matrix posunutiaINV = new Matrix(1,0,0,1,-sx,-sy);
Majú sa vynásobiť, kde vznikne celková matica a potom tú násobiť z danými vrcholmi, no v tomto prípade si neviem rady.

 
Nahoru Odpovědět 21.4.2015 16:34
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na parinho
David Čápka:21.4.2015 16:48

A ta třída Matrix je tvoje nebo používáš tu z .NET? Ta má na sobě nějaké rotate...

Nahoru Odpovědět 21.4.2015 16:48
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
parinho
Člen
Avatar
parinho:21.4.2015 16:51

Používam tú z .NET . My to ale máme ale urobiť bez nich, cez vlastné riešienie. A neviem si stým rady, preto som to sem dal, či náhodou niekto nemá vyriešený tento problém, keďže 2D grafika je celkom rozšírená problematika.

 
Nahoru Odpovědět 21.4.2015 16:51
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na parinho
David Čápka:21.4.2015 17:06

Na matiku jsme nikdy extra nebyl, ale začal bych tím, že si vytvořím ty matice. To cos v matici má být Math.Cos(uhel), kde uhel je o kolik radiánů otáčíš a tak dále i pro ostatní hodnoty. K násobení má Matrix metodu Multiply(). To sx a sy je předpokládám posunutí kvůli středu rotace. Třeba mě tu někdo ještě doplní.

Nahoru Odpovědět 21.4.2015 17:06
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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.