Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ett objekt som följer ett annat!

Postades av 2003-09-15 22:46:24 - Henrik Waara, i forum spel/grafik, Tråden har 8 Kommentarer och lästs av 1363 personer

DirectX 8.1b

Jag har stora problem med matte.. Det här är säkert ett jättelätt problem.. Men jag behöver hjälp med att räkna ut hur jag får ett objekt att hålla sig till ett annat oavset hur man roterar det första..

Man kan helt enkelt kan man säga att jag behöver en x fil som håller sig till en annan x fil.


Items3D(4).Mesh.Pos.X = Main3D.Mesh.Pos.X + (Sin(Main3D.Mesh.ConvAngle) * (Items3D(4).PosX * Cos(Main3D.Mesh.Rotation))) - (Cos(Main3D.Mesh.ConvAngle) * (Items3D(4).PosZ * Cos(Main3D.Mesh.Rotation)))

Items3D(4).Mesh.Pos.Z = Main3D.Mesh.Pos.Z + (Sin(Main3D.Mesh.ConvAngle) * (Items3D(4).PosZ * Cos(Main3D.Mesh.Rotation))) - (Cos(Main3D.Mesh.ConvAngle) * (Items3D(4).PosX * Cos(Main3D.Mesh.Rotation)))

Items3D(4).Mesh.Pos.Y = Main3D.Mesh.Pos.Y - (Sin(Main3D.Mesh.Rotation) * Items3D(4).PosX + Items3D(4).PosZ + Items3D(4).PosY)


Så ser kåden ut som jag har fått hittils att funka.. Men nu behöver jag klämma in Pitchen.


Hmm, finns inget forum för DirectX..


Svara

Sv: Ett objekt som följer ett annat!

Postades av 2003-09-15 23:04:43 - Niklas Jansson

Rysligt snurrig kod... man blir ju blind...

<code>
With Main3D.Mesh
Items3D(4).Mesh.Pos.X = .Pos.X + (Sin(.ConvAngle) * (Items3D(4).PosX * Cos(.Rotation))) - (Cos(.ConvAngle) * (Items3D(4).PosZ * Cos(.Rotation)))
Items3D(4).Mesh.Pos.Z = .Pos.Z + (Sin(.ConvAngle) * (Items3D(4).PosZ * Cos(.Rotation))) - (Cos(.ConvAngle) * (Items3D(4).PosX * Cos(.Rotation)))
Items3D(4).Mesh.Pos.Y = .Pos.Y - (Sin(.Rotation) * Items3D(4).PosX + Items3D(4).PosZ + Items3D(4).PosY)
End with
</code>

Är en förbättring...

Sen är jag inte helt säker på att jag förstår frågan... Vill du rotera ett objekt ("Items3D(4)"), och ha ett annat objekt som "sitter fast" i det första objektet?

Det du får göra är i så fall att rotera det andra objektet på precis samma sätt och runt samma axel som det första. Nu hajar jag inte riktigt koden där uppe, så du får berätta runt vilken axel du roterar. En axel parallell med y-axeln förstår jag, men inte riktigt hur.


Svara

Sv: Ett objekt som följer ett annat!

Postades av 2003-09-24 22:24:48 - Henrik Waara

Nä, det jag vill rotera är Main3d men items3d ska följa efter.. Det jag ska ha är en bil.. Och jag har en bottenplatta som är main3d och kordinationerna för mitten på den plattan har jag.. Och så kan vi säga att Items3d är ett hjul som ska hålla sig en bit ifrån mittenplattan så att det kommer i hjulhuset om man så säger.. Och om jag roterar main3d så ska hjulet vara på samma plats iaf..

Rotationen ska funka med alla axlar hur som helst.. Hur jag än roterar Main3d så måste Items3d vara på exakt samma position.. Helt enkelt så ska det sitta fast på ett speciellt ställe om man så säger..

Fan vad jag är värdelös på att förklara..


Svara

Sv: Ett objekt som följer ett annat!

Postades av 2003-09-26 15:10:47 - Niklas Jansson

Det är ju det jag skrev, fast åt andra hållet.

Det du får tänka ut är: Du har en godtycklig punkt i main, och du har tre vinklar. Sen vill du relatera en punkt i ett annat objekt till detta. Objektet skall vara roterat på samma sätt som main. Positionen hos objektet beror på rotationen och translationen hos "main"

Har tyvärr inte tid att kolla det nu... kan återkomma om du inte löser det.


Svara

Sv: Ett objekt som följer ett annat!

Postades av 2003-09-26 15:23:06 - Henrik Waara

Det vore toppen...
Jag har hållit på i över en vecka nu.. Fått till det med två av vinklarna men med den tredje kör det ihop sig... Att rotationen ska vara den samma det har jag förstått men positionen är det svårare med..

Vore mycket tacksam för lite hjälp!


Svara

Sv: Ett objekt som följer ett annat!

Postades av 2004-01-30 03:16:28 - Henrik Waara

Ingen som vet?


Svara

Sv: Ett objekt som följer ett annat!

Postades av 2004-02-01 00:02:14 - Niklas Jansson

Ojsan... lessen att jag glömde att svara. Jag gör lite antaganden här, så får du anpassa det efter ditt problem.

1. Mitten på bottenplattan har koordinaterna (0,0,0)
2. Du kan rotera på tre sätt, runt x-axeln, y-axeln och z-axeln. Rotationerna utförs i den ordningen. Vi kallar de tre rotationerna Alpha, Beta och Gamma.
3. Du har en punkt, P, som har kooridnaterna (x,y,z) när Alpha=Beta=Gamma=0.
4. Den punkten ska sitta på samma sätt i förhållande till bottenplattan när den är roterad.

Den nya punkten efter rotation kring x-axeln heter Px=(xx, yx, zx), och för rotationen kring x-axeln fås:
xx=x
yx=y*cos(alpha) - z*sin(alpha)
zx=y*sin(alpha) + z*cos(alpha)

motsvarande för de två andra axlarna är för Py
xy=z*sin(beta) + x*cos(beta)
yy=y
zy=z*cos(beta) - x*sin(beta)

resp. Pz
xz=x*cos(gamma) - y*sin(gamma)
yz=x*sin(gamma) + y*cos(gamma)
zz=z

Kör nu de här tre grejerna efter varandra så ska det bli rätt, Skapa först Px utifrån P, Py ifrån Px, Pz från Py, och sen är Pz din roterade punkt.


Svara

Sv: Ett objekt som följer ett annat!

Postades av 2004-02-02 00:56:53 - Henrik Waara

Jag får det ändå inte att funka... Fast det kan ju iof bero på att jag gett upp hoppet med detta och glömt bort allt jag gjort och hur det funka...

Om jag gör som du sa, så får jag ju 9 punkter för den nya placeringen. Px.x, Px.y, Px.z, Py.x, Py.y, Py.z, Pz.x, Pz.y, Pz.z eller?!

Jag har mixtrat lite och kommit fram till detta.. Men det funkar ändå inte..

Main3D.Mesh.Pos är bottenplattans position.
Items3D(4).Pos(x,y,z) är avstånden "axeln" ska vara från bottenplattan. I det här fallet är X=2.1, Y=0 och Z=0 fast så kommer det ju inte att vara i framtiden.

Items3D(4).Mesh.Pos är axelns placering


tmp_X_Pos = Main3D.Mesh.Pos.X + Items3D(4).PosX
tmp_Y_Pos = Main3D.Mesh.Pos.Y + Items3D(4).PosY
tmp_Z_Pos = Main3D.Mesh.Pos.Z + Items3D(4).PosZ

tmp_Y_Pos = tmp_Y_Pos * Cos(Main3D.Mesh.Rotation) - tmp_Z_Pos * Sin(Main3D.Mesh.Rotation)
tmp_Z_Pos = tmp_Y_Pos * Sin(Main3D.Mesh.Rotation) + tmp_Z_Pos * Cos(Main3D.Mesh.Rotation)

tmp_X_Pos = tmp_Z_Pos * Sin(Main3D.Mesh.ConvAngle) + tmp_X_Pos * Cos(Main3D.Mesh.ConvAngle)
tmp_Y_Pos = tmp_Y_Pos
tmp_Z_Pos = tmp_Z_Pos * Cos(Main3D.Mesh.ConvAngle) - tmp_X_Pos * Sin(Main3D.Mesh.ConvAngle)

tmp_X_Pos = tmp_X_Pos * Cos(Main3D.Mesh.Pitch) - tmp_Y_Pos * Sin(Main3D.Mesh.Pitch)
tmp_Y_Pos = tmp_X_Pos * Sin(Main3D.Mesh.Pitch) + tmp_Y_Pos * Cos(Main3D.Mesh.Pitch)

Items3D(4).Mesh.Pos.X = tmp_X_Pos
Items3D(4).Mesh.Pos.Y = tmp_Y_Pos
Items3D(4).Mesh.Pos.Z = tmp_Z_Pos


Svara

Sv: Ett objekt som följer ett annat!

Postades av 2004-02-02 16:45:14 - Niklas Jansson

Jag fick ett iMail med i stort sett samma innehåll som posten ovan, och det här är en del av det iMail jag skickade som svar:


För det första så har du lite fel terminologi; en punkt består av de tre koordinaterna, så det är omvandlingar mellan tre olika punkter.

Är alldeles för trött för att verkligen sätta mig in i koden just nu, men det finns två problem.
-Det första är att första beräkningen av tmp-variablerna nog är fel. Det borde vara ett minustecken på ett eller annat sätt.

-Det andra kan hänga på att du har missförstått "punkter". Varje punkt måste beräknas helt och hållet utifrån hela den förra punkten. Det räcker alltså inte med dina tre tmp-variabler.
Det står ju t.ex. så här:
tmp_Y_Pos = tmp_Y_Pos * Cos(Main3D.Mesh.Rotation) - tmp_Z_Pos * Sin(Main3D.Mesh.Rotation)
tmp_Z_Pos = tmp_Y_Pos * Sin(Main3D.Mesh.Rotation) + tmp_Z_Pos * Cos(Main3D.Mesh.Rotation)

På den andra raden kommer tmp_Y_Pos redan ha förändrats. Jag skulle rekommendera dig att ha nio stycken temporära variabler, XX, YX, ZX, osv, + 3 för start-positionen. På så sätt får du inga sådana "mix-effekter".


Svara

Nyligen

  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 878
27 965
271 772
482
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies