| Visa föregående ämne :: Visa nästa ämne |
| Författare |
Meddelande |
Daniel Lindén
Blev medlem: 28 December 2007 Inlägg: 87 Från: Göteborg
|
Skrivet: Ons 3 Feb 2010, 17:40 Rubrik: Lite notation |
|
|
Jag har läst en artikel om en rätt ball effekt som jag sitter och försöker implementera, vilket har resulterat i att jag har fastnat i en liten fundering om notation;
(Från http://graphics.cs.williams.edu/papers/AOVTR09/)
Min fråga är; vad betyder denna smått underliga notation? Hur räknar man ut e0, e1 osv? Det jag tolkat det som är att man helt enkelt kör en transpose på den första matrisen och multiplicerar precis som en vanlig matrismultiplikation. Fast nu står det inte transpose - det står invers vilket inte går att göra med non-square-matrices), och om man gör som jag gjort hittills blir resultatet väldigt, väldigt fel. Jag har halv-löst det genom att räkna ut denna volym på ett annat sätt (fast det blir inte riktigt rätt det heller) så jag undrar om någon vet hur dessa formler ska se ut? Den jag testat med hittills är helt enkelt:
e0 = (m0 + m1) * d
Men som sagt så blir det fel. Eller ja, det ser i alla fall fel ut.
En annan mindre fundering jag har är över;
Jag har antagit att klamrarna har samma funktionalitet som parenteser då vissa sidor påstår detta, är detta korrekt?
Tacksam för svar!
Daniel _________________ Blogg |
|
| Till överst på sidan |
|
 |
eczkchtl Admin

Blev medlem: 17 Maj 2004 Inlägg: 218 Från: Umeå
|
Skrivet: Ons 3 Feb 2010, 18:10 Rubrik: |
|
|
(1) Vektorerna m antas vara liggande så det du vill lösa är en ekvation Ax = b (den fula ascii-bilden gör att det set mycket krångligare ut än vad det är):
| Kod: | [ -mi.x -mi.y -mi.z ] [ ei.x ] [ d ]
[ -m(i+1)%k.x -m(i+1)%k.y -m(i+1)%k.z ] [ ei.y ] = [ d ]
[ mk.x mk.y mk.z ] [ ei.z ] [ 0 ]
|
Så du kan göra det genom att räkna inversen av A och multiplicera med b. Eller lösa det på något annat sätt (t.ex. gausselimination).
(2) Ja det är bara parenteser.
(3) Det du försöker göra är ganska klurigt och speciellt på GPUn. Det finns många steg där det kan bli fel. Om du kan kolla att resultatet från varje steg är korrekt slipper du undra varför allt bara blir svart eller vad som nu händer  _________________ "There are some things you just don't know you need to know until you know them." |
|
| Till överst på sidan |
|
 |
Daniel Lindén
Blev medlem: 28 December 2007 Inlägg: 87 Från: Göteborg
|
Skrivet: Ons 3 Feb 2010, 18:47 Rubrik: |
|
|
| eczkchtl skrev: | (1) Vektorerna m antas vara liggande så det du vill lösa är en ekvation Ax = b (den fula ascii-bilden gör att det set mycket krångligare ut än vad det är):
| Kod: | [ -mi.x -mi.y -mi.z ] [ ei.x ] [ d ]
[ -m(i+1)%k.x -m(i+1)%k.y -m(i+1)%k.z ] [ ei.y ] = [ d ]
[ mk.x mk.y mk.z ] [ ei.z ] [ 0 ]
|
Så du kan göra det genom att räkna inversen av A och multiplicera med b. Eller lösa det på något annat sätt (t.ex. gausselimination).
(2) Ja det är bara parenteser.
(3) Det du försöker göra är ganska klurigt och speciellt på GPUn. Det finns många steg där det kan bli fel. Om du kan kolla att resultatet från varje steg är korrekt slipper du undra varför allt bara blir svart eller vad som nu händer  |
Ah, jag inte tänkte på att m har 3 komponenter, vilken miss! Nu får jag sätta mig ner och försöka minnas hur man löser en sådan ekvation på lämpligt sätt, tack så mycket för hjälpen! _________________ Blogg |
|
| Till överst på sidan |
|
 |
|