View previous topic :: View next topic |
Author |
Message |
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Wed Dec 27, 2006 4:23 pm Post subject: |
|
Tik un tā nesaprotu kurā momentā četrstūris tiek pagrizts, man sanāk tikai, ka četrstura koordinātes mainās, bet pats vinš negriežas... :(
Atradu vienu funkciju kura griež visu kā vajag ( Visual Basic 2005, http://msdn2.microsoft.com/en-us/library/s0s56wcf.aspx ), bet man nepātīk tas "matrix" tapēc es labāk gribētu to visu izprast matemātiski. |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Wed Dec 27, 2006 5:19 pm Post subject: |
|
Nu shajaa gadiijumaa matrica dara tieshi to pashu,ko tu gribi. Arii reekjina koordinaatas ar sin un cos. Tikai atshkjiriiba taada,ka to tavaa vietaa izdara Rotate funkcija. _________________ long time; /* know C */ |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Dec 27, 2006 5:23 pm Post subject: |
|
Code: | x' = x*cos f - y*sin f
y' = y*cos f + x*sin f |
matricu formā pierakstās kā
Code: |
| x' | = | cos f -sin f | * | x |
| y' | | sin f cos f | | y | |
Kā pats redzi - nekādu lielo atšķirību nav. |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Wed Dec 27, 2006 7:34 pm Post subject: |
|
Es laikam esmu stulbs, bet man nepielec - iegūtie x' un y' ir kas ? Jaunās koordinātes ? o_O
Labi sākšu no sākuma.
Ir forma, uz formas tiek zīmēts taisnstūris ar platumu X un augstumu Y.
Taisnstūris atrodas 128 pixeļus no augšas un no sāna.
Es gribi, lai tas nospiežot pogu ( vai vienalga ) pagriztos par 45 ( vai vienalga ) grādiem (radiāniem) - nevis pabīdītos uz sānu pa kautkādu trajektoriju, bet tiešī pagrieztos. Būtu ideāli ja koordinātu sākumpunkts (punkts ap kuru griežas taisnstūris) nebūtu formas x=0 un y=0, jeb nebūtu stūrī.
Kāds nevarētu uzmest paris rindiņas (vienalga kadaa valodā ) augšūpminētā murga...
Paldies! |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Wed Dec 27, 2006 7:38 pm Post subject: |
|
Nu tev tas jaadara taa:
Code: |
tempx = x*cos f - y*sin f
tempy = y*cos f + x*sin f
x=tempx;
y=tempy; |
Un visa maaksla _________________ long time; /* know C */ |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Wed Dec 27, 2006 7:40 pm Post subject: |
|
Ar ko tad mans kods atšķiras?:
Code: | x = x * Math.Cos(30) - y * Math.Sin(30)
y = y * Math.Cos(30) + x * Math.Sin(30) |
Tā temp daļa ir obligāta? |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Wed Dec 27, 2006 7:42 pm Post subject: |
|
Code: | x = x * Math.Cos(30) - y * Math.Sin(30) //tikko tu izmainiji x veertiibu uz jaunu
y = y * Math.Cos(30) + x * Math.Sin(30)//tagad tu apreekjiniem izmanto sho jauno x veertiibu,nevis veco |
Nu veel ir neskaidri? _________________ long time; /* know C */ |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Wed Dec 27, 2006 7:52 pm Post subject: |
|
AH! Esmu daunis! Kā es to nepamanīju!
p.s.
Pēc izmaiņām kodaa mana figūra turpina rotēt pa savu riņķa līnijas traektoriju, vai kkā tā...
Code: |
xO = x * Math.Cos(angle) - y * Math.Sin(angle)
yO = x * Math.COs(angle) + y * Math.Sin(angle)
x = xO
y = yO |
|
|
Back to top |
|
|
GiGa Indago Uzvarētājs
Joined: 25 Sep 2003 Posts: 887
|
Posted: Wed Dec 27, 2006 8:47 pm Post subject: |
|
Ja gribi, lai figuura rotee ap kaadu noteiktu punktu, paarbiidi to no saakuma, lai 0,0 punkts, ap kuru roteet jau maaki, atrastos relatiivi pret figuuru tur, kur atrodas punkts, ap kuru gribi roteet. Izdari rotaaciju, un peec tam atbiidi figuuru atpakalj.
Sheit jau saakas vairaaku transformaaciju apvienoshana vienaa - labaak iemaacies nedaudz par vajadziigo transformaaciju matricu izveidoshanu, to apvienoshanu un peec tam pielietoshanu. Pirmais guugles dotais links, http://home10.inet.tele.dk/moelhave/tutors/3d/transformations/transformations.html
izskataas pietiekami labs ievads. |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Dec 28, 2006 7:40 am Post subject: |
|
Izskatās nežēlīgi sarežģīti, vajadzēs apskatīties.... |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Dec 28, 2006 10:37 am Post subject: |
|
Tici man, rotēt figūru ap vienku punktu plaknē ir vienkāršības kalngals. Ir vēl daudz daudz sarežģītākas lietas. |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Dec 28, 2006 11:00 am Post subject: |
|
Man tikko ienāca prātā tāda doma - manai figūrai ir tikai 2 parametri x un y, bet lai viņu pagrieztu ir jāzina 4 koordinātes - x,x1,y,y1. Tā ? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Dec 28, 2006 12:15 pm Post subject: |
|
Kas ir tava figūra?
Kas ir tie divi parametri?
Un kas ir tās 4 koordinātes? Tur jau īstenībā ir tikai divas - (x,y) un (x1, y1). Jo atsevišķi x nenozīmēpilnīgi neko. |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Dec 28, 2006 12:21 pm Post subject: |
|
Mana figūra ir četrstūris.
Tie divi parametri ir joordinātes plaknē - figūras sākumpunkts.
Es tos 4 punktus iztēlojos apmēram šādi:
x1 ____________ x2
....|.......................|
....|.......................|
x3|____________|x4
Tātad lai pagriztu visu figūru vajag mainīt visu 4 punktu koordinātes, manai figūrai ir tikai sākuma koordinātes , nevis katra punkta koordinātes. Es pats jau sajuku |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Dec 28, 2006 1:04 pm Post subject: |
|
Tev ir četrstūris vai taisnstūris?
Ja četrstūris tad tev ir 3 raksturlielumi - vienas virsotnes koordināte (x1,y1), un divi vektori - malas x1->x2 un x1->x3. Ar mazāk lielumiem tu savu figūru aprakstīt nevarēsi.
Bet ja tev ir taisnstūris, tad pietiktos ar divām koordinātēm - (x1,y1) un (x4,y4).
Vai arī es tevi galīgi nesaprotu?
Bet es tev iesaku - glabā visas četras koordinātes un rotē tās tā kā GiGa teica. Būs vienkāršāk. |
|
Back to top |
|
|
|