Matematik
Rumgeometri
Hej
Jeg har et privat projekt kørende med beregning af magnetfelters udseende omkring diverse solenoider, ledere, mv. Felternes udseende er der styr på, og jeg kan fremstille plottetabeller i 3D.
Jeg vil nu gerne se billeder af disse felter, og som eksempel har jeg vedhæftet billeder af en solenoide set fra to punkter ( beklager de lidt duggede ruder på linsen i min mobil ).
På billede 2 ses solenoiden set fra siden, perspektivet er ok. Kigges ud mod enderne af solenoiden, begynder man at kunne kigge ind gennem vidingerne.
På billede 1, hvor solenoiden er set skråt fra venstre side, kan man kigge lidt ind gennem tunnelen, men perspektivet er ikke korrekt, for går man ind gennem tunnelen i retning mod højre fornemmes tunnelen at sving mod venstre. ( Linien hen langs solenoidens ryg krummer ).
Jeg har så sat mig mig ind i perpektivbilleders betragtningsplan og -punkt, horisont og forsvindingspunkt, og det kommer der styr på, men hvis jeg nu får placeret et "udstyr" i et koordinatsystem, med faste placeringer af alle disse horisonter, forsvindingspunkter, planer, kamera, og jeg flytter hele udstyret rundt gennem solenoider og magnetfelter, så har jeg problemer med at få vist billeder af mine plottetabeller med korrekt perspektiv i 2D i betragtningsplanet. Altså hvad gør jeg ved denne forbandede z-koordinat, når planet tumler rundt i rummet?
Eksempel:
På billede 2 er
Betragtningspunkt = ( 0, 0, 1 )
Punkt i plan = ( 0, 0, 0.8 )
Normalvektor til plan = ( 0, 0, -1 )
På billede 1 er
Betragtningspunkt = ( 2, 0, 0.4 )
Punkt i plan = ( 0.8, 0, 0.32 )
Normalvektor til plan = ( -2, 0, -0.4 )
Givet et punkt på objektet = ( -0.5, 0.02, -0.9798 ), hvordan får jeg smækket dette punkt korrekt ind på mit plan i billede 1? Det har jo med skæringspunkt mellem en linie og planet at gøre, og det har jeg styr på, men bl.a. har dette skæringspunkt en z-koordinat ≠ 0.
På sigt vil jeg jo gerne programmere en bane og en retning mit udstyr skal følge/kigge i, for at få lavet en film af udsigten til disse magnetfelter under en rundfart, men det jeg mangler, er nogle transformationsmatricer, der skal beregnes og anvendes på mine plottetabeller under rundfarten. Disse vektorkalkulationer må meget gerne være uden cos- sin-beregninger, så at filmen kan fremstilles på under 24 timer. Så krydsprodukter, normalvektorer, skalarprodukter, osv. er velkomne. Så skal jeg supplere med lidt assemblerprogrammering, og få køleblæseren på PC'en sat op i omdrejninger.
Som kvittering for hjælp skal jeg nok vedhæfte en film, når/hvis skidtet virker, så der er noget at kigge på når OL slutter, og der kun er "Meierheims køkken" tilbage at kigge på.
Resume: Vektor kalkulationer efterlyses.
Svar #1
15. august 2016 af peter lind
Jeg har kun et vagt billede af hvad du ønsker men her er nogle forslag.
Du kan evt. se hvad man gør i spil. se https://en.wikipedia.org/wiki/3D_computer_graphics Du skal nok have fat i nogle af referencerne på siden
Jeg er for nogle år siden stødt på brug af kvaternioner - en udvidelse af de komplekse tal- i rumfarten. Kvaternionerne blev brugt fordi det gav hurtigere beregninger og behøvede mindre plads. Du kan læse om kvaternionerne på https://en.wikipedia.org/wiki/Quaternion
Der findes og en bog du kan hente gratis på nettet John Vince:Quaternions
for Computer Graphics
Svar #2
15. august 2016 af hesch (Slettet)
#1: Tak.
Specielt afsnittene om kvarternioner lød spændende, og vil se på det.
Svar #3
15. august 2016 af Eksperimentalfysikeren
Det er et spændende projekt, du er i gang med. For nogle år siden eksperimenterede jeg med 3D grafik, men blev desværre forhindret i at gennemføre projektet.
Jeg fik konstrueret et kamera, der kunne vise et 3D-objekt perspektivisk i 2D. Det eneste objekt, jeg fik lavet var en tekande. Kameraet skulle have oplysning om dets øjepunkt (positionen af "linsen"), et sigtepunkt, der afbildes i midten af "filmen", et oppunkt, der angav den retning, som kameraet afbildede som op. Derudover skulle det have en brændvidde og dimensionerne af 2D-billedet.
Kameraet beregnede så en transformation fra scenens koordinatsystem (x,y,z) til kameraets eget koordinatsystem (u,v,w). Derefter foretog det perspektivberegningen ved at dividere u og v med w og gange dem med f, hvilket gav billedkoordinaterne (s,t)= (u'f/w,v*f/w).
En mangel ved mit program var, at jeg ikke havde indført beskæring, så hvis jeg kom for tæt på tekanden, blev w negativ for nogle af punkterne, hvilket kom til at se mege mærkeligt ud. Scenen bør beskæres, så w er positiv, helst større end f, og det er en god idé også at beskære i siderne, så man undgår at regne på punkter, der ikke afbildes indenfor billedformatet.
På et senere tidspunkt erfarede jeg, at DirectX og OpenGL kan benyttes til at flytte noget af regnearbejdet over i computerens GPU, der til en del af arbejdet er mere effektiv end CPU'en. Jeg har ikke nået at sætte mig ind i det, men har dog bemærket, at GPU'en benytter kvaternioner.
Jeg håber, du kan benytte disse bemærkninger til noget, og er spændt på, hvordan det går.
Svar #4
16. august 2016 af hesch (Slettet)
#3: Tak for dine bemærkninger.
Det mest spændende ( og egentlig grunden til ) projektet er at man kan google hundredevis af figurer, der viser magnetfelter i og omkring bl.a. solenoider. Alle har dog dette tilfælles at ingen af dem er rigtige.
Jeg ved såmænd ikke om dette skyldes at evt. computerberegninger har erstattet en spiraliseret vikling med ringe sat op ved siden af hinanden ( for nemheds skyld ). Forskellen mellem den korrekte spiraliserede vikling og en "ringvikling" er, at når strømmen løber "skråt" gennem spiralviklingen vil magnetfeltet inde i toroiden ikke løbe lige igennem, men vil spiralisere.
På samme måde vil feltet udenom solenoiden spiralisere voldsomt fordi en spiraliseret vikling jo er en sammensætning af ringformede ledere, der laver cirkulationsstrømme omkring kernen, og en lige leder der leder strømmen fra den ene ende af solenoiden til den anden. Så ringene danner et felt, der løber lige udenom solenoiden ( forstå mig ret ), og den lige leder danner cirkulationsfelter omkring solenoidens akse. Det samlede magnetfelt bliver derfor en spiral.
Nu er det så at jeg har diskuteret disse felters natur med en herre fra USA, der så "kom til" at antyde at magnetfelter ikke altid syntes at være cirkulationsfelter, hvilket dybest set er et brud på Amperes lov. Jeg blev dybt rystet og tænkte at det skulle (fandme) være løgn. Derfor satte jeg mig for at lave et program, der beregne magnetfeltliniers forløb med stor præcision ( bl.a. ved et talformat med 20 betydende cifre ). Jeg anvender Biot-Savarts lov.
Foreløbige undersøgelser tyder på at den amerikanske herre har ret ( en magnetfeltlinie bider ikke altid sig selv i halen ), men Ampere taler jo ikke om, hvor mange gange feltlinien må rotere gennem solenoiden førend den finder sin hale. Der er et vist mønster i hvordan afvigelsen fra egen hale ændres omgang for omgang, og at den måske finder sin hale efter N omgange gennem solenoiden. Min tanke har så gået på, at hvis disse spiraliserede vindinger er medvirkende til denne asymmetri, og lad os sige at der er 19 vindinger i solenoiden, så vil feltlinien finde sin egen hale efter 19 omgange gennem solenoiden, alene af den grund at det højeste antal nogetsomhelst, som konstruktionen indbefatter. Den kender simpelthen ikke større tal end 19, den kan ikke tælle længere, så enkelt er det.
Desværre tager det noget tid at eftervise, for een rundtur gennem solenoiden andrager en times regnearbejde grundet minimale integrationsstep. Så et projektforsøg skal nærmest planlægges og bevilges.
Under arbejdet med disse magnetfeltberegninger er det så at lysten til at se "katten i sækken" er dukket op. Derfor billeder af solenoider med tilhørende magnetfeltlinier set i korrekt perspektiv. Hvis jeg så kan lave et korrekt billede, kan jeg også lave flere billeder optaget med programholdt kamera, og det er her tanken om en filmet rundtur gennem magnetfelter og solenoider dukker op: Projektet er på vej til at løbe løbsk, fuldstændigt som når staten er bygherre ved større projekter.
Svar #5
16. august 2016 af Eksperimentalfysikeren
Jeg har prøvet at rekonstruere den metode, jeg brugte til mine eksperimenter. Det er beskrevet i den vedhæftede pdf-fil.
Svar #6
17. august 2016 af hesch (Slettet)
#5: Det var sådan noget jeg var ude efter. Jeg kigger på det, når jeg har afprøvet en anden ide:
Kamera, billedplan og forsvindingspunkt anbringes bekvemt ( langs z-aksen, vinkelret på xy-planen ) i et andet koordinatsystem, xyz. I stedet for at flytte rundt på mit "udstyr" i uvw, flytter jeg objektpunktet i uvw over i xyz, vha. relative afstande og retninger.
Den forbandede z-koordinat ignoreres, men medvirker dog til en afstand fra billedplan til objektpunktet. Der laves nu en sigtelinie ( retningsvektor ) fra xy-koordinaten i billedplanet til forsvindingspunktet, og langs denne sigtelinie udmåles bemeldte afstand, hvilket indebærer en anden x'y'-koordinat på sigtelinien, der er den perspektivmæssige korrekte. Det må virke, og giver nogle meget bekvemme beregninger, grundet meget bekvemme faste placeringer af "udstyret" i xyz.
Der er jo så nogle forudsætninger om at intet objektpunkt i xyz må ligge bag forsvindingspunktet, osv., men det håndteres nemt: Objektpunktet er så forsvundet i et "sort hul". Når nabopunkter til objektpunktet nærmer sig denne "kritiske" afstand, vil de jo blive suget ind i forsvindingspunktet.
Men tak, jeg kigger på dit input.
Svar #7
19. august 2016 af Eksperimentalfysikeren
Jeg kom lige i tanker om, at min datter har benyttet et system, der kan benytte GPUen i et program. Softwaren hedder CUDA og skulle kun arbejde sammen med C, C++ og FORTRAN. Det er et gratisprogram udviklet af NVIDIA.
Svar #8
16. september 2016 af hesch (Slettet)
Jeg har nu brugt en del tid på at repetere "gamle" discipliner som 3D-vektorregning, perspektivering af 2D-billeder ud fra 3D-tabeller, osv. Og så er der jo lige programeringsarbejdet.
Der går lidt tid endnu førend jeg kan præsentere en film ( en rundvisning i det magnetiske univers ).
Jeg har lavet et skriv, der er dedikeret nogle familiemedlemmer, men interessenter ved SP må gerne kigge med ( vedhæftet ).
Tak for inputs.
Skriv et svar til: Rumgeometri
Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk?
Klik her for at oprette en bruger.
