Rescudo Skrevet 4. november 2004 Del Skrevet 4. november 2004 (endret) Tanks I ferien har jeg jo selfølgelig tatt med laptopen og småpusla litt når jeg ikke har noe å gjøre Men jeg kunne ikke klart det uten jajajalla og aadnk. Takk skal dere ha Edit: Du styrer med piltastene og skyter med Space Kunne jeg få sett kildekoden til den der? Endret 4. november 2004 av opix Lenke til kommentar
Jonas Skrevet 4. november 2004 Forfatter Del Skrevet 4. november 2004 Selfølgelig Tanks.zip Lenke til kommentar
Rescudo Skrevet 4. november 2004 Del Skrevet 4. november 2004 Tøft. Skal se på den når jeg får meg VB her. Lenke til kommentar
Jonas Skrevet 5. november 2004 Forfatter Del Skrevet 5. november 2004 Prøver å lage en "3d-motor" her nå, men det stopper når det kommer til paint-funksjonen. Hvordan skal jeg få ut X-Y utifra Z-X-Y og Player-Z-X-Y-Vinkel ? Hva er den ultimate formelen? Lenke til kommentar
Vain Skrevet 5. november 2004 Del Skrevet 5. november 2004 Prøver å lage en "3d-motor" her nå, men det stopper når det kommer til paint-funksjonen. Hvordan skal jeg få ut X-Y utifra Z-X-Y og Player-Z-X-Y-Vinkel ? Hva er den ultimate formelen? Lag en tegning eller noe som viser hvordan du vil ha det. Kanskje jeg kan hjelpe Lenke til kommentar
Jonas Skrevet 5. november 2004 Forfatter Del Skrevet 5. november 2004 (endret) Jo, se her! Spillerens posisjon er slik: Vinkel brukes slik at spilleren kan snu seg rundt osv Jeg tenkte jeg skulle begynne med å bare tegne prikker. Alle prikkene har 3 verdier: Dette skal regnes sammen, masse vannskelig matte, og ut skal to verdier komme (altså skjerm kordinater): Endret 5. november 2004 av Jonas Lenke til kommentar
Jonas Skrevet 5. november 2004 Forfatter Del Skrevet 5. november 2004 (endret) Slik som det er utformet nå bruker programmet mye unødvendig RAM for kun å lagre et fåtall med elementer i tabellene. Eksempelvis tar hver element i tablellen "Unit" 42 byte, som ganget med 9999 elementer blir hele 419958 byte eller ca. en halv MB. Dette er ganske mye for å kun bruke en brøkdel av dette til å lagre litt informasjon. Dermed blir dynamisk allokering av elementer i en tabell SVÆRT mye bedre enn å sette en fast grense. Dessuten øker programmets tilpassningsdyktighet i stor grad ved konverteringen, ettersom den ikke lenger får noen grense på hvor mange elementer som kan lagres. Okey, jeg skal prøve å bruke det fra nå av, men jeg har et problem: Option Explicit Dim noe() As String Private Sub Form_Load() ReDim noe(0 To 4) noe(1) = "drgrgrg" ReDim noe(0 To 5) MsgBox noe(1) End Sub Noe() blir jo clear'a når man ReDim'er! Hvordan skal jeg beholde eksisterende verdier? Edit: redim preserve ja ... Det skrev jo aadnk Endret 5. november 2004 av Jonas Lenke til kommentar
kaffenils Skrevet 5. november 2004 Del Skrevet 5. november 2004 Noe() blir jo clear'a når man ReDim'er! Hvordan skal jeg beholde eksisterende verdier? Det skal være redim preserve noe(5) Lenke til kommentar
Vain Skrevet 5. november 2004 Del Skrevet 5. november 2004 (endret) Jo, se her! Spillerens posisjon er slik: Vinkel brukes slik at spilleren kan snu seg rundt osv Jeg tenkte jeg skulle begynne med å bare tegne prikker. Alle prikkene har 3 verdier: Dette skal regnes sammen, masse vannskelig matte, og ut skal to verdier komme (altså skjerm kordinater): Har fundert litt på hvordan det skal gjøres, men jeg kommer ikke på noen god løsning. Litt vanskelig å forestille seg nøyaktig hva du har i tankene. Selve den matematiske delen er ikke vanskelig, så lenge man vet hva man skal gjøre... EDIT: Har du hørt om vektorer? Vektorregning er kanskje løsningen her. Men hvordan? *tenke mer* Edit2:Du vil at det skal være et "kamera" som roterer på en måte. Der y-verdien er vinkelen på "kameraet" i forhold til x. Orker ikke å tenke mer i natt... Får se på det i morra Endret 5. november 2004 av 86Fredrik Lenke til kommentar
Jonas Skrevet 6. november 2004 Forfatter Del Skrevet 6. november 2004 Her har jeg satt sammen et eksempel på hva jeg mener. AngleX-Y er for å gjøre sånn at man kan sikte oppover og snu seg til siden. 3Dtest.zip Lenke til kommentar
iobas Skrevet 6. november 2004 Del Skrevet 6. november 2004 (endret) edit, oops. visste ikke at det var så sucky formatering. skal prøve å fikse. ooops. leste heller ikke at du skal gjøre om dette til 2d-koordinater igjen. da blir det veldig mye mer komplisert matrise matte med perspektiv osv. trodde du bare skulle rotere rundt en akse. jonas, les om matriser. det kan du gjøre her http://skal.planet-d.net/demo/matrixfaq.htm det gjør det utrolig lett å rotere objekter rundt en akse. her er matrisene for rotasjon rundt x, y og z-aksen. rotasjon rundt x: 1 0 0 0 cos(a) -sin(a) 0 sin(a) cos(a) rotasjon rundt y: cos(a) 0 -sin(a) 0 1 0 sin(a) 0 cos(a) rotasjon rundt z: cos(a) -sin(a) 0 sin(a) cos(a) 0 0 0 1 si at du vil rotere rundt 90 grader rundt z-aksen f.eks da er det bare å fylle inn 90 grader (pi/4 i radianer siden cos og sin tar radianer, ihvertfall i c++ som er det jeg bruker) cos(pi/4) -sin(pi/4) 0 sin(pi/4) cos(pi/4) 0 0 0 1 hvis du så vil rotere videre 45 grader rundt x-aksen tar du bare å setter opp en ny matrise på samme måte, og ganger de to matrisene sammen. da får du en ny matrise, og det punktet du vil rotere (et punkt kan du kalle en 3d-vektor fra origo til punktet) så ganger du bare den vektoren med matrisen. jeg har bare matrisemultiplikasjon i c++-kode men det er ganske lett å "porte" til vb. her er den iaf. mat4& mat4::operator*=(const mat4& rhs) { for(int i = 0; i < 4; ++i) { for(int j = 0; j < 4; ++j) { real[i][j] = real[i][0] * rhs.real[0][j] + real[i][1] * rhs.real[1][j] + real[i][2] * rhs.real[2][j] + real[i][3] * rhs.real[3][j]; } } return *this; } denne matrisen har 4 dimensjoner da, så du kan kutte bort den ene dimensjonen. finner ikke noe vektor*matrise kode, så det må du nesten lage selv, les på url'en jeg sa så er det ikke så pes. Endret 6. november 2004 av iobas Lenke til kommentar
Jonas Skrevet 6. november 2004 Forfatter Del Skrevet 6. november 2004 Jeg har tenkt til å tegne en prikk på skjermen. Hvor kommer matriser inn? Lenke til kommentar
iobas Skrevet 6. november 2004 Del Skrevet 6. november 2004 som sagt, jeg leste feil, trodde du bare skulle rotere et punkt og spurte etter den "ultimate formelen". hvis du skal drive med rotasjon i 3d er matriser den "ultimate formelen". uansett, hvis du skal få en 2d-posisjon fra et 3d punkt er også matriser den "ultimate formelen", det er bare veldig mye mer komplisert. Lenke til kommentar
Jonas Skrevet 9. november 2004 Forfatter Del Skrevet 9. november 2004 (endret) Sitter å tester ut ReDim Preserve på variabler, men jeg har støtt på et problem.. Vanlighvis gjør jeg slik: ReDim Preserve NowEffect(0 To UBound(NowEffect) + 1) Men jeg har en variabel med 2 dimensjoner! Hvordan kan jeg finne ubound til en og en? Edit: 1662 linjer Tror aldri jeg har skrevet noe så stort før. Endret 9. november 2004 av Jonas Lenke til kommentar
aadnk Skrevet 10. november 2004 Del Skrevet 10. november 2004 (endret) For å finne størrelsen til flerdimensjonerte variabler må man bruke en gjemt paramenter i kallet. Denne spesifiserer hvilken dimensjon det gjelder, telt fra 1. Følgelig må man bruke Ubound og LBound slik: Dim aVar(5, 6) As String MsgBox "aVar = " & LBound(aVar, 1) & " To " & UBound(aVar, 1) & ", " & LBound(aVar, 2) & " To " & UBound(aVar, 2) Endret 12. november 2004 av aadnk Lenke til kommentar
kaffenils Skrevet 13. november 2004 Del Skrevet 13. november 2004 (endret) Prøver å lage en "3d-motor" her nå, men det stopper når det kommer til paint-funksjonen. Hvordan skal jeg få ut X-Y utifra Z-X-Y og Player-Z-X-Y-Vinkel ? Hva er den ultimate formelen? Jeg kunne dette når jeg hadde vektor matematikk på høyskolen. Nå husker jeg selvfølgelig ingenting av det, så jeg må nok friske opp kunnskapene hvis jeg skal kunne hjelpe deg. Har heldigvis bøkene liggende på loftet. Uansett så kan jeg iallefall forklare deg såpass mye som dette: For å vise 3d koordinater på en skjerm (2d plan) så må du forestille deg at du står på et punkt i 3d rommet og ser på koordinatene gjennom et plan. Alle punktene du ser vil da ha et krysningpunkt med 2d planet, og det er disse koordinatene som gir deg xy koordinatene på skjermen. Det enkleste er å stille seg selv i origo (0,0,0) og plassere 2d planet (skjemen) et stykke nedover z-aksen med senter av skjermen på denne aksen. Formelen for å transformere 3d koordinater til 2d koordinater blir da: skjerm.x = distanse*(punkt.x / punkt.z) skjerm.y = distanse*(punkt.y / punkt.z) "distanse" i formelen er avstanden fra origo til skjemen (z verdien). Denne siden forklarer litt bedre. Jeg laget et eksempel for lenge siden i dhtml som viser dette i levende live. Her er et annet eksempel. Endret 13. november 2004 av kaffenils Lenke til kommentar
Jonas Skrevet 20. november 2004 Forfatter Del Skrevet 20. november 2004 (endret) Når har jeg fiksa noe simpelt her, men det funker. Problemet er hvordan jeg skal kunne "rotere" bildet. Sånn at spilleren kan "vri" og se seg rundt osv. Noen som har peiling på det? 3Dtest.zip Endret 20. november 2004 av Jonas Lenke til kommentar
Jarod_24 Skrevet 21. november 2004 Del Skrevet 21. november 2004 http://channel9.msdn.com/ Snakker de ofte om Visual Studio .Net legger også ut videoer om div de gjør på. ellers så har jeg ikke noe kildekode som jeg vil dele med andre Lenke til kommentar
iobas Skrevet 21. november 2004 Del Skrevet 21. november 2004 Når har jeg fiksa noe simpelt her, men det funker. Problemet er hvordan jeg skal kunne "rotere" bildet. Sånn at spilleren kan "vri" og se seg rundt osv. Noen som har peiling på det? les om matriser, som jeg har sagt før. Lenke til kommentar
Jonas Skrevet 21. november 2004 Forfatter Del Skrevet 21. november 2004 Hvordan skal jeg få XYZ-vektoren min inn i din matrise? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå