Diskuze: Program v C#

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

Avatar
parinho
Člen
Avatar
parinho:

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:

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:

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:

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:

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:

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.