Rotationer, spinorer och spinn Hur man kan visualisera spinn Examensarbete för kandidatexamen i matematik vid Göteborgs universitet Kandidatarbete inom civilingenjörsutbildningen vid Chalmers Lars Wickström Liqin Xu Patrik Agné Simon Jonsson Institutionen för Matematiska vetenskaper CHALMERS TEKNISKA HÖGSKOLA GÖTEBORGS UNIVERSITET Göteborg, Sverige 2019 Rotationer, spinorer och spinn Hur man kan visualisera spinn Examensarbete för kandidatexamen i matematik vid Göteborgs universitet Liqin Xu Patrik Agné Kandidatarbete i matematik inom civilingenjörsprogrammet Teknisk fysik vid Chal- mers Lars Wickström Kandidatarbete i matematik inom civilingenjörsprogrammet Kemiteknik med fysik vid Chalmers Simon Jonsson Handledare: Andreas Rosén Examinator: Maria Roginskaya Ulla Dinger Institutionen för Matematiska vetenskaper CHALMERS TEKNISKA HÖGSKOLA GÖTEBORGS UNIVERSITET Göteborg, Sverige 2019 Populärvetenskaplig presentation I detta arbete ska vi diskutera begreppet spinn, vad som inom matematik kallas Z2-minnet hos rotationer. Det visar sig för en del system, bland annat inom kvantmekaniken, att när det har genomgått en full 360◦ rotation har det ännu inte återställts till sitt grundläge, utan är nu i motsatt konfiguration, och det är först när systemet fått rotera ytterligare 360◦, till sammanlagt 720◦, som systemet återställts. Spinn är inte bara ett fenomen som dyker upp inom matematiken, utan är ett naturligt fenomen och har en plats i världen vi befinner oss i. ”Bälttricket” kan hjälpa oss få insikt i detta fenomen. Det visar sig att om man fäster ena änden av ett bälte i ett bordsben och håller den andra änden i sin hand och roterar änden man håller i ett varv kommer man märka att detta vridna bälte inte går att få ”ovridet” genom att flytta runt bältet; det enda sätt det kan återgå till att bli ovridet är att rotera bältet ett helt varv till. Ett annat sätt att betrakta fenomenet är att utgå från att rotation alltid är kring en axel, och försöka göra en avbildning av rotationer som ett typ av rum där vardera punkt utgör en viss rota- tion. Låt vardera axel vara en linje där samtliga linjer har en punkt de alla går igenom och låt hur långt ut på varje linje man är i förhållande till denna punkt utgöra den vinkel man roterat, detta kommer utgöra ett klot med ”radie” 180◦. Men då sammanfaller systemen, dvs 180◦ rotation runt en axel, eller −180◦ runt samma axel motsvarar samma rotation. Detta fenomen uppkommer som sagt bland annat i kvantmekaniken. För att kunna modellera dem väl behöver man ett nytt sätt att föreställa sig vad som sker. Det behövs ett nytt typ av ob- jekt med egenskapen att de, precis som kvantmekaniska system, inte återställts efter 360◦ rotation utan istället 720◦. De matematiska objekt som har denna egenskap kallas ”spinorer” och upptäcktes av Elie Cartan 1913, ett bra tag innan behovet inom kvantmekaniken uppkom. Ett problem med spinn och spinorer är att det är svårt att faktiskt visualisera hur det ser ut. I detta arbete har vi därför skapat en datoranimation för att visualisera fenomenen. Vi har bland annat utvecklat datoranimationer där en användare kan rotera runt ett vanligt ko- ordinatsystem, och jämföra den med lägen inom ett visst klot. Dessa lägen i klotet relaterar vi till kvaternioner, vilka är en samling av skalärer och ”bivektorer”. Bivektorer är en speciell typ av vektorer men som istället för att motsvara linjer är de mer som plan. Det finns även ett program som istället låter dig manipulera en punkt i klotet, där nu koordinat- systemet istället kommer få rotera efter hur punkten befinner sig. Man kommer se att när man dragit runt koordinataxlarna ett helt varv kommer inte punkten i klotet ha återkommit, utan två varv krävs. Ett tredje program, kanske mer exotiskt än de tidigare, låter användaren se hur kva- ternionen roterar spinorer, där man kan se att det kommer krävas just två varv för att systemet skall återställas. Bland annat används kvaternionerna i mekatronik och stelkroppsmekanik just för att de beskriver roterande system så enkelt och så troget till verkligheten. I vårt projekt beskriver vi hur man bygger upp en Cliffordalgebra, en algebra som består av olika typer av ”multivektorer”, i vilka bivektorerna är en del i av. De används inte enbart i kvantmekaniken utan man kan bygga upp dem för att göra uträkningar i speciell relativitetsteori. Även en del klassisk mekanik blir förenklad med Cliffordalgebran. Sammanfattning Ett viktigt begrepp inom kvantmekaniken är spinn. Vissa kvantmekaniska system har egen- skapen att vid en full rotation har systemet inte återställts utan befinner sig istället i motsatt konfiguration relativt startläget. Detta är vad man menar med spinn. Spinn är dock känt för att vara svårt att visualisera. I detta arbete har vi skapat en datoranimation för att visa hur spinn uppkommer och beter sig. Vi har använt programspråket MATLAB för att göra detta. För att kunna förstå denna datoranimation måste man dock först ha grundläggande förståelse för spinn. I detta arbete har vi därför gjort en genomgång av den matematiska teorin bakom spinn. Vi börjar med att förklara begreppen yttre algebra och Cliffordalgebra. Sedan introdu- cerar vi kvaternioner och förklarar deras koppling till spinn. Vi går därefter igenom begreppen spinorer och spinorrum som är nödvändiga för att beskriva spinn i fysiken. Vi avslutar arbetet med att förklara hur koden är uppbyggd och hur den är kopplad till spinn. Abstract A central concept in quantum mechanics is spin. Certain quantum systems have the prop- erty that, at a full rotation, the system has not been reset, but is in the opposite configuration relative to the starting position. It is previously known that spin is hard to visualize. In this paper we have for this reason created a computer animation to show how spin arises and how it behaves. We have used the programming language MATLAB to do this. To be able to understand this animation it is necessary to have a basic understanding of spin. A central part of this paper will therefore consist of a review of the mathematical theory behind spin. We start by explaning the mathematical concepts of exterior algebra and Clifford algebra. Then we introduce quaternions and explain their connections to spin. Furthermore we explain the mathematical concepts of spinors and spinor space to describe spin. Finally we end the paper with explaining how the code is written and how it relates to spin. Innehåll 1 Vad vi kommer att göra 1 1.1 Vad handlar egentligen spinn om? . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Struktur och förkunskap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Metod och material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Yttre algebra och Cliffordalgebra 2 2.1 Cliffordprodukt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Geometrisk tolkning av multivektorer i Cliffordalgebran för R3 . . . . . . . . . . . 4 3 Rotationer i R3 5 3.1 Kvaternioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 Kontinuerliga rotationer och spinn . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2.1 Parametrisering av S3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2.2 S3 enkelt sammanhängande . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2.3 Fundamentalgruppen för SO(3) . . . . . . . . . . . . . . . . . . . . . . . . . 9 4 Spinorer 11 4.1 Grupprepresentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2 Dimensionsanalys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.3 Matrisrepresentationer av Cliffordalgebran . . . . . . . . . . . . . . . . . . . . . . . 12 4.4 Matriser för Cliffordalgebran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.4.1 Komplexa matriser som reella matriser . . . . . . . . . . . . . . . . . . . . . 12 4.4.2 Representation av kvaternioner som komplexa matriser . . . . . . . . . . . 13 4.4.3 Koppling mellan representationerna . . . . . . . . . . . . . . . . . . . . . . 14 5 Kodningen bakom VR, BR och SR 17 Litteraturförteckning 20 A Visualisering av yttre algebran 21 Figurer 21 B Kompletterande Teori 23 B.1 Basbyten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 B.2 Homomorfa matrisrepresentationer . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 B.3 Rotationsmatris för godtycklig axel och vinkel i VR . . . . . . . . . . . . . . . . . . 24 B.4 En rotation i R3 är alltid kring en axel . . . . . . . . . . . . . . . . . . . . . . . . . 25 C KOD 26 C.1 VR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 C.2 BR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 C.3 SR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Förord Bidragsrapport, Lars: Lars har till stor del skrivit all den kod som presenteras i rapporten, och skrev därför även texten som beskrev koden. Han har även skrivit den delen av introduktionen till Spinorer som beskrev kvantdynamiken hos partiklar med spinn, och även arbetat med den populärvetenskapliga rappor- ten. Vidare har Lars hjälpt till med bevisföring samt vart med i diskussioner om konceptuella frågor. Bidragsrapport, Simon: Simon har bidragit till teoridelen om yttre algebra och Cliifordalgebra. Han har även till stora delar själv skrivit teoridelen om kvaternioner och deras koppling till rotationer. Simon har även skrivit stora delar av spinoravsnitten, om dimensionerna, och även analysen utav de två represen- tationerna av H fram till beviset för kompletta matrisalgebror. Bidragsrapport, Patrik: Patrik har skrivit stora delar av sektionen om yttre algebra och Cliffordalgebra och bidragit till ritning av figurerna. Han har skrivit sammanfattning/abstract och delar av den populärvetenskap- liga presentationen. Han har också skrivit delarna om basbyten, homomorfa matrisrepresentationer och tagit fram rotationsmatrisen för godtycklig axel och vinkel i VR. Han har även bidragit till att planera arbetet och organiseringen av arbetet. Bidragsrapport, Liqin: Liqin har skrivit delar av teoridelen om yttre algebra och Cliffordalgebra och ritat de flesta figu- rerna. Hon har även bidragit till delarna om dimensionerna, komplexa matriser och kopplingen mellan våra representationer av Cliffordalgebran. Hon har även skött dagboken. En loggbok har förts över de enskilda medverkandes prestationer. 1 Vad vi kommer att göra Syftet med detta arbete är att skapa ett interaktivt datorprogram där man kan se relationer mellan rotationer av vektorer och spinorer, men även hur rotationer i sig påverkar vektorerna respektive spinorerna. Vidare är syftet också att kunna visualisera fenomenet spinn och att matematiskt kunna presentera varför rotationer har det interna minne vi kallar spinn. Detta projekt kommer att vara tvådelat. Första delen kommer handla om rotationer i 3 dimensio- ner. Vi kommer här undersöka de topologiska egenskaperna hos mängden av rotationer för R3 och även påvisa det så kallade Z2-minnet som finns hos rotationsgruppen SO(3). Detta minne är vad man menar med spinn. Vi kommer även skapa en datoranimation för att visualisera spinn. Andra delen av projektet kommer att behandla spinorer. Spinorer är objekt som samexisterar med ett tillhörande vektorrum. Spinorer tillämpas inom kvantmekaniken och är därför viktiga att lära sig mer om. Vi kommer även att göra en datoranimation för att visa hur vektorrummet roterar tillsammans med spinorrummet. 1.1 Vad handlar egentligen spinn om? Spinn som fenomen existerar för vektorrum med dimension högre än 2. Det roterar gradvis till två rotationer med två topologiskt urskiljbara homotopklasser, en till 2pi och en till 4pi. Dessa två olika klasser ger spinortransformationer av motsatt tecken. Som vi nämnde tidigare är bälttricket ett berömt exempel för att illustrera den övergripande spinnteorin. Ena änden av ett bälte är fastsatt och den andra änden roterar fritt. Bältet vrids när den fria änden roterar ett varv, för att återgå till att ej längre vara vridet måste den fria änden rotera två varv runt samma axel med moturs orientering. 1.2 Struktur och förkunskap Vi kommer att lära oss förstå spinn genom geometrisk algebra. Först går vi igenom yttre algebra och Cliffordalgebra. Genom Cliffordalgebran kommer vi sedan att definiera kvaternioner. Kvaternioner är objekt som används för att rotera i 3 dimensioner. Sedan kommer vi att hitta en homomorfi mellan de kvaternioner som ger upphov till rotationer och rotationsgruppen SO(3). Vi kommer sedan att undersöka spinorer genom matrisrepresentationer av Cliffordalgebran i R3. Vi kommer även att undersöka rotationer av spinorer och även visa att de är objekt som är oberoende av representationen från Cliffordalgebran. För att få en lättläst och (förhoppningsvis) njutbar läsning av detta arbete behöver man grund- läggande kunskaper i linjär algebra och abstrakt algebra. Att ha grundläggande förståelse för kvantmekanik är nyttigt men inte nödvändigt. 1.3 Metod och material Som vi sett är syftet med detta arbete dels att genomföra en teoretisk genomgång av begreppet spinn och spinorer, dels att göra en datoranimation där vi visar hur spinn uppkommer. För att kunna ge en teoretisk genomgång av begreppet spinn måste man ha en god förståelse för spinn. Vi har därför läst igenom och diskuterat litteraturen kring spinn och spinorer, och skapat en datorani- mation för att kunna visualisera spinn. Vidare har vi fått stor hjälp från handledare Andreas Rosén för att förstå teorin. För att skapa datoranimationerna har vi använt programspråket MATLAB. 1 2 Yttre algebra och Cliffordalgebra Vi inleder detta arbete med att diskutera yttre algebra. För att kunna göra detta börja vi med att definiera ett vektorrum, V, med någon kropp, K. I detta arbete kommer vi att utgå från att alla vektorrum är euklidiska. Yttre algebran (∧V,+,∧, 1) till V är det 2n dimensionella vektorrummet ∧V := ∧0V ⊕∧1V ⊕∧2V...⊕∧nV . Ett element i detta rum skrivs då: v = v0+v1+v2+...+vn ∈ ∧V och vi säger att v är en multivektor av grad n, där vi ∈ ∧iV . Speciellt är ∧0V rummet av skalärer, ∧1V rummet av vektorer, ∧2V rummet av bivektorer och ∧3V rummet av trivektorer. Nu definierar vi yttreprodukten. Definition Yttreprodukt (referens: Andreas Rosén (handledare), skriftlig kommunikation, 14/5 2019) Låt {e1, ..., en} utgöra en bas för vektorrummet V och låt vj ∈ V vara vektorer sådana att vj = ∑ ai,jei. Vi beräknar då yttreprodukten av dessa vektorer som v1 ∧ v2 ∧ ... ∧ vn = ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ e1 a1,1 ... a1,n e2 a2,1 . . . a2,n ... ... . . . ... en an,1 ... an,n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ := n∑ i=1 ∣ ∣ ∣ ∣ ∣ ∣ ∣ a1,1 . . . ai,n ... . . . ... ai,1 . . . an,n ∣ ∣ ∣ ∣ ∣ ∣ ∣ e1 ∧ ... ∧ en. (1) Vi har att följande regler för yttreprodukten: 1.v ∧ u = −u ∧ v (antikommutativitet); (2) 2.(v ∧ u) ∧ w = v ∧ (u ∧ w) (associativitet). (3) 2.1 Cliffordprodukt Följande sats lägger grunden till det som vi nedan kallar Cliffordprodukten. Sats: Lagranges identitet1 Låt V vara ett skalärproduktsrum. Vektorerna v1 och v2 uppfyller då att |〈v1, v2〉| 2 + |v1 ∧ v2| 2 = |v1| 2|v2| 2. (4) Där 〈a, b〉 är skalärprodukten mellan två vektorer a och b, och |vi| anger längden på vektorn vi. Intuitionen bakom denna sats hittas i Cauchy-Schwarz och Hadamards olikheter. Vi kommer ihåg att om V är ett skalärproduktsrum och vektorerna u, v ∈ V vet vi från Cauchy- Schwarz olikhet att |〈v1, v2〉| ≤ |v1||v2|. (5) Hadamards olikhet säger istället att |v1 ∧ v2| ≤ |v1||v2|. (6) Vi får likhet i Hadamards olikhet om och endast om 〈v1, v2〉 = 0, om vektorerna är ortogonala. 1För bevis av denna sats, se (1) 2 Vi får likhet i Cauchy-Schwarz olikhet om och endast om 〈v1, v2〉 = |v1||v2|, om vektorerna är parallella. Det finns alltså ett inverst förhållande mellan skalärprodukten och yttreprodukten. I euklidiska rum definierar vi skalärprodukten som det unika talet 0 ≤ θ ≤ pi sådant att 〈v1, v2〉 = |v1||v2| cos(θ), (7) ekv. (4) kan då skrivas |v1| 2|v2| 2 cos2(θ) + |v1 ∧ v2| 2 = |v1| 2|v2| 2. (8) Det följer då att |v1 ∧ v2| 2 = |v1| 2|v2| 2 sin2(θ), 0 ≤ θ ≤ pi. (9) Dessa produkter kan vi sätta ihop genom operationen v1 M v2 = 〈v1, v2〉+ v1 ∧ v2 ∈ ∧ 0V ⊕ ∧2V. (10) Detta är vad vi menar med Cliffordprodukten av vektorerna v1 och v2. I fortsättningen kommer vi, på de ställen där det inte finns risk att missförstånd uppstår, skriva v1 M v2 =: v1v2. Definition Cliffordprodukt (1) Cliffordprodukten är den unika bilinjära produkt på yttre alge- bran, ∧V . För en parvis ortogonal mängd {ai}n1 vektorer i V sammanfaller cliffordprodukten med yttre produkten. Vidare uppfyller även cliffordprodukten nedanstående punkter • a2 = |a|2,∀a ∈ V • aiaj = −ajai, för i 6= j • (a1 M a2) M a3 = a1 M (a2 M a3) (11) Nu följer definitionen av Cliffordalgebra. Definition Cliffordalgebra Med ∆V menar vi Cliffordalgebran (∧V,+,M) definierad av Clifford- produkten på rummet av multivektorer i V. Något som kan verka onödigt nu, men som kommer bli relevant senare i arbetet när vi kommer till kvaternioner, är uppdelningen i udda och jämna multivektorer. Vi definierar de jämna och udda multivektorerna som ∧ev V := ∧0V ⊕ ∧2V ⊕ ∧4V ⊕ ..., ∧odV := ∧1V ⊕ ∧3V ⊕ ∧5V ⊕ ..., (12) så ∧V = ∧evV ⊕ ∧odV . Låt ∆evV:=∧evV, ∆odV:=∧odV och ∆V = ∆odV ⊕∆evV. (13) Vi ser särskilt att om u, v ∈ ∆evV så följer det att u M v ∈ ∆evV , och alltså är sluten. Medan ∆odV inte är sluten under Cliffordprodukt. 3 2.2 Geometrisk tolkning av multivektorer i Cliffordalgebran för R3 Vi ska nu närmare studera strukturen hos Cliffordalgebran för R3.2 Låt{e1, e2, e3} utgöra en ON- bas för V = R3. Vi kan se basvektorerna som de traditionella {x, y, z} respektive. Vi kallar dessa vektorer för grad 1 objekt och i Cliffordalgebra uttrycker vi dem ∆1R3. En skalär representerar en punkt och kallas för grad 0 objekt. I Cliffordalgebra blir de ∆0R3. Från basvektorerna ska vi nu bilda de så kallade bivektorerna {e1e2, e2e3, e3e1} genom Clifford- produkten. Bivektorerna ligger i respektive plan i ett 3D rum. e1e2 i xy-planet, e2e3 i yz-planet och e3e1 i zx-planet. Vi ritar dem som parallellogram med moturs orientering (se 4, 5 och 6 i Appendix). Vi kallar dessa grad 2 objekt och beskriver dem som ∆2R3 på Cliffordalgebraiskt vis. Nu återstår bara att skapa det sista ”grundelementet” e1e2e3. Vi kallar detta objekt trivektorn. I Cliffordalgebra uttrycker vi den som e123 ∈ ∆3R3. Denna bildar vi genom att ta en av bivektorerna, säg e1e2, och ”förlänger” den i e3s riktning. På samma sätt tar vi bivektorn e2e3 och förlänger i e1 riktning, samt tar bivektorn e3e1 och förlänger den i e2 riktning. Vi bildar på så sätt en så kallad parallellepiped med positiv orientering. (se 7 i Appendix). Vi sammanfattar ovan 4 typer av objekt (en skalär med grad-0, tre vektorer med grad-1, tre bivektorer med grad-2 och en trivektor med grad-3) som 8 grundelement i ett vektorrum {1, e1, e2, e3, e1e2, e2e3, e3e1, e1e2e3}. Detta illustrerar vi i figur 1. Grad-3: e123 Grad-2: e12, e23, e31 Grad-1: e1, e2, e2 Grad-0: 1 Figur 1: Cliffordalgebrans struktur i R3 2Det här beskrivningen bygger på (4) 4 3 Rotationer i R3 I detta avsnitt begränsar vi oss till att V = R3. Vi kommer här titta på rotationer av vektorer i V med hjälp av både rotationsmatriser men även med hjälp av kvaternionerna, som kan definieras från den jämna Cliffordalgebran. Vi hittar en homomorfi mellan kvaternionerna och rotationsmatriser, sedan går vi vidare och visar Z2-minnet hos rotationer. Gruppen av rotationsmatriser skrivs som SO(3) := {T : V → V ;T>T = I, detT = 1}. Där > är transponatet till matrisen. 3.1 Kvaternioner Vi skall nu använda oss utav Cliffordalgebran för att definiera kvaternionerna. Kvaternionerna kan ses som en utvidgning av det komplexa talplanet C. I det komplexa talplanet kan man enkelt rotera komplexa tal, z ∈ C, geonom multiplikation av en fas, eiθ, sådan att z → z′ = eiθz = zeiθ = ei θ 2 zei θ 2 . Vi vill nu, på liknande sätt, använda kvaternioner för att rotera vektorer i R3. Kvaternionerna, som vi nedan hänvisar till som H, är fyrdimensionella additiva objekt med följande egenskaper för sin specifika produkt i2 = j2 = k2 = ijk = −1. (14) Vi kan konstruera samma egenskaper med hjälp av den jämna Cliffordalgebran, ∆evV , genom att låta −e2e3 = i, e1e3 = j, −e1e2 = k, så vi får, med Cliffordprodukt, samma egenskaper som kvaternionerna. Vi representarar H som H = (∆evV,+,M). Vi kan även se att H är en associativ divisionsalgebra, alltså att varje icke-noll kvaternion är inverterbar. För q = a+ bi+ cj + dk, där q¯ = a− bi− cj − dk betecknar konjugatet i H har vi att q¯q = a2 + b2 + c2 + d2 = |q|2. qs invers är då q−1 = q¯/|q|2. Vi vill hitta ett sätt att rotera vektorer i R3 i ett godtyckligt plan [j] med hjälp av H. Betrakta först en godtycklig rotation T ∈ SO(3) och en vinkel ϕ. Från B.4 följer att det alltid finns en egenvektor till T med egenvärde 1. Välj en ON-bas {ei}3i=1 sådan att T (ei) = ei. Vi får då att matrisen för T i basen {ei} är T =   1 0 0 0 cosϕ − sinϕ 0 sinϕ cosϕ   . (15) För en rotationsmatris gäller T = (T1 T2 T3) = (Te1 Te2 Te3). (16) Så varje kolumn i T svarar mot hur respektive basvektor har roterat. Vi hittar nu en kvaternion q så att vi får samma rotation för respektive basvektorer, qe1q −1 = e1, qe2q −1 = cosϕe2 + sinϕe3, qe3q −1 = − sinϕe2 + cosϕ. Låt q = exp(−ϕj/2) = cos(ϕ/2)− j sin(ϕ/2). Där j ∈ ∆2V och |j| = 1. För e1 får vi då e1 = qe1q −1 = [ cos(ϕ/2)− j sin(ϕ/2) ] e1 [ cos(ϕ/2) + j sin(ϕ/2) ] = cos2 ϕe1 − cos ϕ 2 sin ϕ 2 (je1 − e1j)− sin 2 ϕ 2 je1j = e1. 5 Detta gäller vid fallet att je1 = e1j, samt ekvivalent −je1j = e1, vilket enligt definitionen för Cliffordprodukten (11) ger att j = ±e23. Vi undersöker nu om detta även gäller för e2 och e3. Om detta gäller har vi hittat en kvaternion för den givna matrisen. qe2q −1 = cosϕe2 + sinϕe3 = [ cos ϕ 2 − j sin ϕ 2 ] e2 [ cos ϕ 2 + j sin ϕ 2 ] = cos2 ϕ 2 e2 + cos ϕ 2 sin ϕ 2 (e2j − je2)− sin 2 ϕ 2 je2j = [ cos2 ϕ 2 − sin2 ϕ 2 ] e2 + cos ϕ 2 sin ϕ 2 (2e2j) = cosϕe2 + sinϕe2j. Här har vi använt de trigonometriska identitetetrna cos2 ϕ− sin2 ϕ = cos 2ϕ, 2 cosϕ sinϕ = sin 2ϕ. Vidare får vi för e3, − sinϕe2 + cosϕe3 = qe3q −1 = [ cos ϕ 2 − j sin ϕ 2 ] e3 [ cos ϕ 2 + j sin ϕ 2 ] = cos2 ϕ 2 e3 + cos ϕ 2 sin ϕ 2 (e3j − je3)− sin 2 ϕ 2 je3j = [ cos2 ϕ 2 − sin2 ϕ 2 ] e3 + cos ϕ 2 sin ϕ 2 (2e3j) = cosϕe3 + sinϕe3j. Vi ser här nu att e3j = −e2 samt att e2j = e3, vilket ger att j = e23. Vi har alltså nu hittat en representation för matriser i SO(3) som kvaternioner. För att vi skall få en homomorfi krävs det på grund av konvention att q = exp(−ϕj/2) (1). Om vi valt det omvända, q = exp(ϕj/2) hade vi fått j = e32. Orienteringen på denna bivektor hade då varit motsatt riktningen av rotationen, därför väljer vi q = exp(−ϕj/2). Sats (Rotationer i R3). Låt V vara ett tredimensionellt högerorienterat euklidiskt rum med orien- tering J . En rotation av v ∈ V med en vinkel φ moturs i planet [j] beskrivs genom v → qvq−1. Där q = exp( b2 ) ∈ spin(V ) := {q ∈ ∆ evV ; |q|2 = 1} och b = −φj, j ∈ ∆2V ; |j|2 = 1. Vi kan observera här att den grupp av kvaternioner som ger upphov till rotationer, q ∈ spin(V ) är isomorf med enhetssfären i fyra dimensioner, S3. Detta ses tydligast genom att för q = a+ bi+ cj + dk ∈ spin(V ) gäller att |q|2 = q¯q = a2 + b2 + c2 + d2 = 1 Uttrycken spin(V ) och S3 kommer nedan användas synonymt. Vi kallar ett q ∈ spin(V ) för en rotor. Vi undersöker nu strukturen hos dessa rotationer. Antag att vi har två olika kvaternioner, q1 och q2, som båda ger samma rotation. q1vq −1 1 = q2vq −1 2 . (17) Genom att multiplicera från vänster med q−12 och från höger med q1 ges q−12 q1v = vq −1 2 q1. (18) Alltså kommuterar v med q−12 q1. 6 Vi vet att skalärer är kommutativa och att addition är en kommutativ operation. Det vi behöver undersöka nu är om rena kvaterioner, bivektorer, kommuterar med vektorer. Vi vet att Cliffordprodukten är antikommutativ för vektorer enligt ekv. (11). eiejk = { −ejkei om i = j eller i = k ejkei om i = j = k eller k 6= i 6= j (19) Vad vi kan se är att om vektorn ei är en del av bivektorn, t.ex e1e31, så gör den ett ojämnt antal ”hopp” och resulterar därför i antikommutativitet, och vice versa om ei inte ligger i bivektorn. Men vi kan hitta q−12 och q1 så att vi får en bivektordel som inte kommuterar måste bivektordelen vara 0. Det enda som återstår är då en skalär. Då spin(V ) är sluten under Cliffordprodukten så måste q−12 q1 ∈ spin(V ) och därmed q−12 q1 = ±1 −→ q1 = ±q2. (20) Vi har alltså för en given rotation T finns det exakt två kvaternioner ±q ∈ spin(V ) som sva- rar mot rotationen. Dessa två är antipodala kvaternioner på S3. Vi kan nu, med samma metod som ovan, få fram rotationsmatrisen T för ett godtckligt q = exp(−θj/2), där j = ae32 + be13 + ce21, a2 + b2 + c2 = 1 ges av [ cos2(θ/2)+sin2(θ/2)(a2−b2−c2) 2ab sin2(θ/2)−c sin(θ) 2ac sin2(θ/2)+b sin(θ) 2ab sin2(θ/2)+c sin(θ) cos2(θ/2)+sin2(θ/2)(−a2+b2−c2) 2b sin2(θ/2)−a sin(θ) 2ac sin2(θ/2)−b sin(θ) 2bc sin2(θ/2)+a sin(θ) cos2(θ/2)+sin2(θ/2)(−a2−b2+c2) ] . (21) Härledning för denna finns i appendix B.3. Vi vill nu hitta en invers så att vi, för en given rotationsmatris, kan få fram rotationsaxel och vinkel. Vi kan givietvis få fram den givna kvaternionen från rotationsmatrisen genom att jämföra med ekv. (21). Men detta kräver mycket arbete. Istället kan vi definiera Cliffordspåret TrC(R) (1) som TrC(R) := ∑ i ei M R(ei). (22) Vi får då TrC(R) = e1 M (R11e1 +R21e2 +R31e3)+ e2 M (R12e1 +R22e2 +R32e3)+ e3 M (R13e1 +R23e2 +R33e3) = Tr(R) + e12(R21 −R12) + e13(R31 −R13) + e23(R32 −R23). (23) Där Tr(R) representerar det vanliga spåret hos matrisen, Tr(A) := ∑ n ann. Alltså sumeringen av diagonalelementen. Anta att vi nu vet rotationsaxeln. Låt {e˜i} vara en ON-bas för V, där j = e˜2 ∧ e˜3 är bivektorn parallel med planet för rotationen. Rotationsmatrisen i basen {e′i} kommer då att bli R =   1 0 0 0 cosφ − sinφ 0 sinφ cosφ   . (24) Cliffordspåret kommer nu, med ekv. (23) att bli TrC(R) = 1 + 2(cosφ+ j sinφ). (25) Cliffordspåret är invariant till val av bas enligt följande lemma. 7 Lemma. För en linjär avbildning T har vi att Cliffordspåret är invariant till val av bas. Alltså för två baser {ei} och {e˜i} Har vi att TrC(Tei) = TrC(Te˜i). Där indexet då representerar avbildningen i de två baserna. Bevis. Låt {e˜i} vara en ON-bas till V där e˜i = ∑ i aj,iej där ej är basvektorer i standardbasen. Basbytesmatrisen A är ortogonal. Vidare gäller att 〈e˜i, e˜k〉 = 〈 ∑ j aj,iej , ∑ p ap,kep〉 = ∑ j aj,i ∑ p ap,k〈ej , ep〉 = ∑ j aj,iaj,k = δik. (26) Cliffordspåret i basen e˜j blir nu TrC(T ) = ∑ i ∑ j aj,iej M T ( ∑ k ak,iek) = ∑ i ∑ j aj,iej M ∑ k ak,iT (ek) = ∑ i ∑ j ∑ k aj,iak,iej M T (ek). (27) Då summation är kommutativ spelar det ingen roll vilken summa vi tar först. Vidare, då A är ortogonal, är även AT . Vi får då TrC(T ) = ∑ j ∑ k ∑ i aj,iak,iej M T (ek) = ∑ j ∑ k δjkej M T (ek) = ∑ j ej M T (ej) = TrC(T ). (28) Vi kan nu, genom att termjämföra ekv. (23) och (25), få fram φ och j som φ = arccos ( Tr(R)− 1 2 ) , j = 1 sin(φ) [ e12(R21 −R12) + e13(R31 −R13) + e23(R32 −R23) ] . (29) 8 3.2 Kontinuerliga rotationer och spinn Än så länge har vi att för varje rotation finns det exakt 2 punkter på S3 som motsvarar en rotation. Vi skall nu undersöka vad som händer med ett system när vi roterar det kontinuerligt. 3.2.1 Parametrisering av S3 Då S3 är en tredimensionell mångfald inbäddad i 4D är det är svårt att visualisera den på ett bra sätt. Det som vi gör här är att vi lyfter alla punkter på S3 till ett klot i M2 V . Betrakta funktionen p : ∆2V → S3, p : b→ q. (30) Där b ∈ ∆2V . Vi skriver det som b = φj, där φ = |b| mod 4pi och j = b|b| . Vidare så har p formen p(b) = exp(b/2) = cos(φ/2) + j sin(φ/2). Randen, där |b| = 2pi + 4pik, k = 0, 1, 2, .... Alla punkter är identifierade med samma kvaternion q = −1. Vi ser här att för |b| = 4pik är p(b) = 1. Vidare för |b| = pi+ 2pik så har vi att p(b) = b. Vi har att p en bijektiv avbildning för |b| < 2pi på grund av injektiviteten hos exponentialfunktionen. 3.2.2 S3 enkelt sammanhängande För en mångfald som är enkelt sammanhängande betyder det att alla slutna kurvor är homotopa, vidare nollhomotopa. Vi kommer här att bevisa att S3 är enkelt sammanhängande. Betrakta en sluten, kontinuerlig kurva på S3 som inte går genom −1, γ : [0, 1]→ S3, γ(0) = γ(1) = qˆ, (31) där qˆ är en fix punkt. Vi lyfter γ till bivektorklotet ∆2V genom ekv. (30). Vi har nu en kurva, p−1(γ(t)) i ∆2V . Vi vill hitta en homotopi mellan denna kurva och dess startpunkt, qˆ. Låt [0, 1]× [0, 1]→ ∆22piV : (s, t)→ Γ(s, t), Γ(s, t) = p−1(γ(t)) + s(p−1(qˆ)− p−1(γ(t))) (32) vara en yta genom ∆2V . Vi ser att Γ(0, t) = p−1(γ(t)), medan Γ(1, t) = p−1(qˆ). Alltså, Γ kan kontinuerligt deformeras från p−1(γ(t)) till p−1(qˆ). För fallet när kurvan går genom sydpolen, −1, kan vi låta den undvika sydpolen innan vi lyfter den med p genom att t.ex låta kurvan gå i en liten halvcirkel runt sydpolen. Alla slutna kurvor på S3 är därmed homotopa. Fundamentalgruppen är den grupp av skilda ekvivalensklasser för en given mängd. I detta fallet de slutna kurvor som ej är homotopa. Fun- damentalgruppen för S3 är då pi1(S3) = {1}. 3.2.3 Fundamentalgruppen för SO(3) Vi vill nu undersöka slutna rotationskurvor i SO(3) för att kunna påvisa Z2-minnet. Anta på samma sätt som i ekv. (31) en kontinuerlig kurva genom SO(3), T : t ∈ [0, 1]→ SO(3), T (0) = T (1) = I. (33) På samma sätt som vi lyfte en kurva på S3 till ∆2V vill vi nu lyfta T (t) till S3. Vi har en homomorfi från kvaternioner på S3 till matriser i SO(3) pˆ : S3 → SO(3), T → q. (34) 9 Formen för denna homomorfi kan t.ex ges från den allmäna rotationsmatrisen i ekv. (21). Skillnaden mellan lyftet i ekv. (34) och lyftet i ekv. (30) är att för varje T ∈ SO(3) finns ±q ∈ S3. Vi har alltså surjektivitet men inte injektivitet. Vi kan dock få en typ av lokal injektivitet genom att bara betrakta en av dessa kvaternioner. Då de två kvaternionerna, som motsvarar samma T ∈ SO(3), är antipodala kommer deras vägar aldrig korsas om vi gör en liten förflyttning av T . Vi får alltså en lokal isomorfi från S3 → SO(3) när vi betraktar kontinuerliga rotationer och bara betraktar ett q ∈ S3. Vi låter nu pˆ−1 vara inversen. Vi har då att pˆ−1 ◦ T (t) : SO(3)→ S3, pˆ ◦ T (0) = 1. (35) Så kurvan på S3 börjar på 1 och kommer nu att röra sig över sfären. När t närmar sig 1 finns det nu två olika punkter den kan sluta på. Då pˆ−1 ◦ T (I) = ±1 så kommer kurvan att sluta på antingen 1 eller -1. Det finns alltså två skilda vägar som inte tillhör samma ekvivalensklass. Den ena, som är sluten på S3 och därmed motsvarar nollhomotop, är samma system som vi började med. Den kurva som går från nordpol till sydpol motsvarar inte längre samma system, även om det ser likadant ut. Denna kurva är homotop med en kurva som motsvarar rotation av 2pi radianer runt en valfri axel, vilket vi kan se genom lyftet p i ekv. (30). Den kurva som är sluten är vidare homotop med en kurva som går ner till −1 och sedan upp på andra sidan av S3. Alltså en rotation av 4pi radianer runt en given axel. Det följer från dessa två skilda kurvor att fundamentalgruppen för rotationsgruppen i tre dimensioner är pi1(SO(3)) = {1, −1} := Z2. (36) Detta avslutar nu avsnittet om rotationer i R3. Vi har visat hur vi väldigt enkelt kan rotera vektorer med hjälp av kvaternioner. Men vi kan inte längre använda SO(3) för att beskriva rotationer av objekt som har detta Z2-minne. Vi kommer nu att flytta fokus från vektorer till spinorer. 10 4 Spinorer Z2-minnet återkommer, som vi nämnt, till exempel inom kvantmekaniken. En elektron vars spinn- tillstånd har roterat 2pi radianer är inte längre i sitt ursprungliga grundtillstånd utan har istället hamnat i motsatt tillstånd. Vad vi menar med tillstånd och rotation här är ett kvantmekaniskt tillstånd, och en rotation här är en rotation i tillståndsrummet (dock är denna relaterad till en ”fysikalisk rotation”, som beter sig mer normalt, med en period på 2pi): |ψ〉 = ψ+ |+〉+ ψ− |−〉, där ψ+, ψ− är komplexa tal, och |+〉 , |−〉 är tillstånden ”spinn upp” respektive ”spinn ned”, ett kvantmekaniskt tillstånd motsvarar en sannolikhet i den mening att exempelvis om man mäter ett system i tillstånd |ψ〉 i ”spinn upp/ned” riktningen är 〈+|ψ〉 sannolikheten att man får ett mätvärde i ”spinn upp”, där +ψ är en seskvilinjär skalärprodukt mellan det kvantmekaniska tillståndsrummet (beskrivs med |〉, en ”cket”) som är ett Hilbertrum, och dess duala rum (beskrivs med 〈|, en ”bra”, tillsammans utgör de ”bracket” notationen). I kvantmekaniken finns ”operatorer”, objekt som kan ändra ett tillstånd, och om en operator A är hermitesk är 〈a|A|a〉 ett väntevärde som motsvarar en observabel som man kan mäta. Tidsutveck- lingen hos ett kvantmekaniskt system är beroende av dess hamiltonian, H, som alltid är hermitesk och om hamiltonianen är tidsoberoende fås evolutionen som en operator exp(−iHt/~) (specifikt är tidsutvecklingen hos ett system dess tillstånd vid specifika tidspunkter, och blir exp(−iHt/~) |t0〉, där |t0〉 är tillståndet i tid |t0〉, för det tillstånd som intresserar oss). Det fall som intresserar oss är när en elektron befinner sig i ett externt statiskt (tidsoberoende) magnetfält, och hamiltonianen kan då skrivas som H = ωSz, där ω = |e|B/(mec). Tidsevolutionen ges då av exp(−iωSz/~) |ψ〉 = exp(−iωtSz/~)(ψ+ |+〉+ψ− |−〉) = ψ+e(−iω/~)Sz |+〉 +ψ−e(−iωt/~)Sz |−〉 = ψ+e−iωt/2 |+〉+ψ−eiωt/2 |−〉. Detta är eftersom |+〉 , |−〉 är spinntillstånd i z-led, och är därmed egentillstånd (motsvarar egenvektorer) till Sz operatorn. Den har egenvärden ±~/2 (exp(A) för operatorn A betraktas i stort på samma sätt som om A vore en matris, i detta fall kan operatorn Sz till och med beskrivas med en matris. Med andra ord eftersom |+〉 , |−〉 är egentillstånd till Sz med egenvärden ±~/2 är de även egentillstånd till exp(Sz) med egenvärden e±~/2). Om man betraktar tidsutvecklingen för |ψ〉 ser man i exponentialen ±iωt/2. Division med 2 innebär att vi får en period T = 4pi/ω, vilket är en annan precession än den som skulle vara om man mäter på egenvärdet 〈ψ|Sz|ψ〉, det vill säga om man mäter väntevärdet på spinn i z-led, som har period T = 2pi/ω. Det kommer senare i texten uppdagas för läsaren att tillståndet vi bemärkte med |ψ〉 i inledningen är en spinor, vars natur kommer gås igenom i texten. Så med ”motsatt tillstånd” här menas inte övergång i stil med ”spinn upp” → ”spinn ned” utan istället |ψ〉 → − |ψ〉, eller ”spinn upp” → ”minus spinn upp”. Denna övergång är dock mätbar, med exempelvis neutroninterferometri. Om läsaren vill fördjupa sig i ämnet rekommenderas varmt (3). Z2-minnet hos elektroner medför att SO(3) inte kan beskriva en elektrons spinn. Vad som krävs är en representation av spin(V ), ρ, sådan att ρ(−1) = −I. Vi kommer i detta avsnitt gå in på just detta. Vi definierar en representation ρ från den jämna Cliffordalgebran till algebran av matriser för ett tillhörande spinorrum. Spinorrummet är alltså ett rum som existerar med ett tillhörande vektorrum. Vi kommer senare visa att spinorrummet är oberoende av hur vi representerar Cliffor- dalgebran. De olika representationerna är relaterade via basbyte. 4.1 Grupprepresentation Vi kommer nu att börja titta på spinorummet. Vi definierar först en grupprepresentation av spin(V ) som en slät grupphomomorfi från spin(V ) till matriser för ett linjärt rum 11 ρ : spin(V )→ L(S), ρ(−q) = −ρ(q). (37) Vi får en injektiv representation så att för varje matris i bilden av ρ finns det exakt en rotor i spin(V). På samma sätt som bivektorer kan användas för att rotera vektorer kan de även användas för rotation av spinorer. För en representation med egenskapen att ρ(−q) = −ρ(q) kallar vi S för ett spinorrum. Spinorerna är då de objekt som matriserna i L(S) opererar på. Vi kommer att ta fram matrisrepresentationer av Cliffordalgebran då spin(V ) ⊂ H ⊂ ∆V och så kommer vi, genom våra representationer av ∆V , även att få en grupprepresentation för spin(V ). 4.2 Dimensionsanalys Vi kommer återigen att begränsa oss till att V = R3. Vi har då att dimR(∆V ) = 8. Vi kommer här att ta fram representationer till tvådimensionella komplexa matriser. Algebran för dessa matriser betecknas L(C2). Vi vill hitta en isomorfi mellan Cliffordalgebran och matriserna för spinorrumet. För att kunna täcka hela matrisalgebran behöver vi att dimensionerna är samma, i detta fallet är både definitionsmängd och värdemängd 8 dimensionellt. Skillnaden är dock att vi går från en reell algebra till en komplex. Genom att låta trivektorn e123 := J har vi att J2 = −1. Vidare kan vi skriva en multivektor i Cliffordalgebran som w = w0 + w1, där w0 ∈ ∆evV och w1 ∈ ∆odV . Vi låter nu w1 = Jw2, där w2 ∈ ∆evV . Det vi ser nu som att ∆V är isomorft med de komplexa kvaternionerna Hc. Vi skriver en komplex kvaternion som qc = q1 + Jq2, där q1 och q2 båda är reella kvaternioner enligt representationen vi gjorde i avsnitt 3.1. Vi har nu en komplex algebra Hc sådan att dimR(Hc) = 8 = dimR(L(C2)). Vi kan nu hitta en isomorfi mellan de komplexa kvaternionerna och matriser i L(C2). 4.3 Matrisrepresentationer av Cliffordalgebran Här kommer vi att ta fram matrisrepresentationer av Cliffordalgebran och visa att de olika re- presentationerna inte påverkar strukturen hos spinorrummet utan förser oss endast med ett annat perspektiv av det. 4.4 Matriser för Cliffordalgebran I detta avsnitt kommer vi att visa hur vi kan representera underalgebror hos Cliffordalgebran med matriser. En algebrahomomorfi är en homomorfi ρ : ∆V → L(S), sådan att för w ∈ ∆V , ρ(w)2 = ρ(w2) = ρ(〈w〉2) = 〈w〉2I. 4.4.1 Komplexa matriser som reella matriser Vi vill först hitta ett sätt att beskriva komplexa matriser som reella matriser. Vi tittar först på det endimensionella fallet för C ϕ1 : L(C) −→ L(R2) = ∆R2 =⇒ ϕ1(a+ bi) := [ a b −b a ] , a, b ∈ R2. (38) Det går lätt att visa att ϕ1 är en injektiv homomorfi, det är dock ingen isomorfi då den ej är surjektiv. Vi går nu vidare genom att utvidga ϕ1 till komplexa 2 x 2-matriser. Vi får för zi = ai + ibi, 12 ϕ2 : L(C2)→ L(R4), [ z1 z2 z3 z4 ] = [ a1 + ib1 a2 + ib2 a3 + ib3 a4 + ib4 ] → [ ϕ1(a1 + ib1) ϕ1(a2 + ib2) ϕ1(a3 + ib3) ϕ1(a4 + ib4) ] =     a1 b1 a2 b2 −b1 a1 −b2 a2 a3 b3 a4 b4 −b3 a3 −b4 a4     . (39) Funktionen ϕ2 : L(C2)→ L(R4) är en injektiv homomorfi. Vi kan även hitta en isomorfi för vektorerna som dessa matriser verkar på sådan att % : C2 → R4, [ z w ] = [ a1 + ib1 a2 + ib2 ] →     a1 b1 a2 b2     ∈ R 4. 4.4.2 Representation av kvaternioner som komplexa matriser Vi ska nu ta fram de två representationer för kvaternionerna vi kommer att använda i detta arbete. Vi vill hitta en isomorfi ρ : Hc → L(C2), där är Hc enligt ovan isomorft med ∆R3. Vi kommer först att betrakta representationer av reella kvaternioner H, så att för q = a+ bi+ cj+ dk ∈ H, där a, b, c, d ∈ R. q kan skrivas som q = a+ bi+ cj + dij = (a+ bi) + (c+ di)j = z+wj. Vi kan nu använda oss utav ϕ1 för att ta fram en liknande homomorfi för kvaternionerna. Från (2), får vi en representation ρ1 : H→ L(C2), ρ1(z + wj) := [ z w −w¯ z¯ ] . (40) Där är w¯, z¯ respektiv komplex konjugation av w och z. Från (1) får vi nu ytterligare en representation för H, ρ2 : H→ L(C2), ρ2(q = a+ bi+ cj + dk) = [ a− ci d− bi −d− bi a+ ci ] . (41) För att nu få en isomorfi behöver vi att dessa representationer kan utvidgas till de komplexa kvaternionerna q = a+ bi+ cj + dk, där a, b, c, d ∈ ∆0V ⊕∆3V alltså är tal med den komplexa struktur J som ansattes i 4.2. Låt nu ρ : H → L(C)2 vara en homomorfi. Vi komplexifierar avbildningen ρ till ρ˜ : Hc → L(C2) sådan att för den komplexa strukturen J har vi att ρ˜(J) = iI, där i ∈ C. En kvaternion Hc 3 q = q1 + Jq2 representeras nu genom ρ˜(q) = ρ(q1) + iρ(q2). Det följer av de homomorfa egenskaperna hos ρ att detta är en giltlig komplexifiering. Det följer från appendix B.2 att ρ1 och ρ2 är homomorfier. Vi utvidgar nu dessa till att även representera de komplexa kvaternionerna. Vi har nu två surjektiva homomorfier från ∆V till L(C2). Vad som är kvar att visa är injektivitet. Lemma (Injektivitet hos representationer). En representation ρ : H → L(C2) som är en homo- morfi är också injektiv. 13 Bevis. Låt ρ : Hc → L(C2) vara en homomorfi som ovan. För att ρ skall vara injektiv gäller att ρ(q) = 0 om och endast om q = 0. Då representationen q = a+ bi+ cj + dk är linjär följer att, ρ(q) = ρ(a+ bi+ cj + dk) = aρ(1) + bρ(i) + cρ(j) + dρ(k) = 0. Vi multiplicerar nu från vänster med konjugatet ρ(q¯), ρ(q¯)ρ(q) = ρ(q¯q) = ρ(a2 + b2 + c2 + d2) = (a2 + b2 + c2 + d2)ρ(1) = ρ(q¯)0 = 0. Detta gäller endast om a2 + b2 + c2 + d2 = 0 ⇔ a = b = c = d = 0. Vi ser nu att om ρ är en homomorfi gäller för ρ(q1) = ρ(q2)⇔ ρ(q1 − q2) = 0⇔ q1 = q2, vilket visar injektivitet. Vi har nu alltså två isomorfier som båda representerar Cliffordalgebran till V . 4.4.3 Koppling mellan representationerna Vi ska här visa relationerna mellan två representationer av Cliffordalgebran. Vi kommer hitta en automorfi mellan representationerna som relaterar dessa via basbyte. Vi har våra två representationer av kvaternionerna. ρ1 : Hc →L(C), ρ2 : Hc →L(C), ρ1(a+ bi+ cj + dk) = [ a+ bi c+ di −c+ di a− bi ] , ρ2(a+ bi+ cj + dk) = [ a− ci d− bi −d− bi a+ ci ] . (42) Vi undersöker nu relationerna mellan dessa. Båda två avbildar 1 på I och −1 på −I. L(C2) är därmed fortfarande operatorer till ett tillhörande spinorrum. Vi vill nu hitta en koppling mellan dessa två representationer. Vi kan definiera en automorfi φ : L(C)→ L(C) sådan att φ(ρ1(q)) = ρ2(q). (43) För ρ1(q) = M ∈ L(C2) har vi då att φ(M) = ρ2 ◦ ρ−11 (M) = ρ2 ◦ ρ −1 1 (ρ1(q)) = ρ2(q), vilket är vad vi letar efter. Denna automorfi är väldefinierad då inversen existerar. Låt oss nu observera strukturen hos dessa två representationer, ρ1(1) = I = ρ2(1), ρ1(−1) = −I = ρ2(−1), ρ1(i) = [ i 0 0 −i ] = ρ2(−j), ρ1(j) = [ 0 1 −1 0 ] = ρ2(k), ρ1(k) = [ 0 i i 0 ] = ρ2(−i). (44) Så vi har att för q ∈ H, ±1→ ±1, i→ −j, j → k, k → −i. (45) 14 Vi försöker nu hitta ett qs = a + bi + cj + dk, så q → qsqq−1s som ger samma struktur som ekv. (45) ovan. qsi = −jqs ⇔ ai− b− ck + dj = −aj + bk + c− di, (46) detta ger c = −b, d = −a. qsj = −kqs ⇔ aj + bk + b+ ai = −ak − bj − bi− a, (47) detta ger a = −b. Vi har därmed qs = a − ai + aj − ak normerar vi detta får vi a = 1/2. ρ1 och ρ2 är därmed relaterade med en rotation i H. Vi har alltså ρ1(qsqq −1 s ) = ρ1(qs)ρ1(q)ρ1(q −1 s ) = ρ2(q). (48) Matrisen ρ1(qs) ser ut som ρ1(qs) = T = 1 2 [ 1− i 1− i −1− i 1 + i ] . (49) Vi har nu en automorfi φ sådan att φ(ρ1(q)) = Tρ1(q)T −1 = ρ2(q). (50) Vi ser här att dessa två representationer är relaterade via ett basbyte enligt appendix B.1. Det visar sig faktiskt att alla representaioner för L(C2) är relaterade via ett basbyte. Detta summeras i satsen nedan. Sats (Automorfier i L(S) då dimC(S) = 2). Algebran för matriser till ett vektorrum S av komplex dimension 2 är komplett, i den meningen att för varje automorfi φ : L(S)→ L(S), ∃ T ∈ L(S) så att φ(X) = TXT−1, ∀X ∈ L(S). T är unik upp till multiplikation med skalär. Bevis. (1) Detta bevis är tvådelat. Låt först, v = [ v1 v2 ] , X = v [ 1 0 ] = [ v1 0 v2 0 ] och E = [ 0 0 1 1 ] . Eftersom E inte är inverterbar är inte heller φ(E) det, med andra ord kolumnerna i φ(E) är linjärt beroende. Låt nu {ei} vara en ON-bas för S så att e1 är parallell med kolumnerna i (φ(E)), vidare låt e2 = [ x1 x2 ] . Vi ser att XE = 0⇒ φ(XE) = φ(X)φ(E) = 0, då är kolumnerna i φ(E) ‖ e1. Detta är ekvivalent med att φ(X)e1 = 0. Vi har nu att φ(X) = φ(X)I = =φ(X)(e1e > 1 + e2e > 2 ) = φ(X)e2e > 2 . Låter vi nu Av := φ(X)e2. Får vi genom multiplikation från vänster av e>2 , φ(X) = Av [ x1 x2 ] . Med liknande argumentation kan vi visa att för en matris U = [ 1 0 ] u> = [ 0 0 u1 u2 ] . φ(U) = [ y1 y2 ] u>B, 15 där u = [ u1 u2 ] . Vidare gäller att φ(vu>) = φ(v [ 1 0 ] [ 1 0 ] u>) = φ(X)φ(U) = Av [ x1 x2 ] [ y1 y2 ] u>B = λAvu>B, där λ = [ x1 x2 ] [ y1 y2 ] . Låt nu T := λA. Vi har då ∀u, v ∈ S : φ(vu>) = Avu>B. Låt oss nu titta närmare på φ(v1u > 1 v2u > 2 ) = φ(v1〈u1, v2〉u > 2 ) = 〈u1, v2〉φ(v1u > 2 ) = 〈u1, v2〉Tv1u > 2 B. (51) Samtidigt har vi att φ(v1u > 1 v2u > 2 ) = φ(v1u > 1 )φ(v2u > 2 ) = Tv1u > 1 BTv2u > 2 B. Vi ser nu att 〈u1, v2〉Tv1u > 2 B = Av1u > 1 BTv2u > 2 B. Vi flyttar in 〈u1, v2〉, Tv1u > 1 v2u > 2 B = Tv1u > 1 BTv2u > 2 B. Här kan vi deducera att BT = I ⇔ B = T−1 alltså för matriser på formen vu>, φ(vu>) = Tvu>T−1. För godtyckliga matriser kan vi skriva dessa som en linjärkombination utav matriser på formen vu>. Vi kan sedan använda linjäriteten hos automorfin och får då att φ(X) = TXT−1 ∀X ∈ L(S). Att de är unika ses lättast genom T1XT −1 1 = T2XT −1 2 ⇔ T −1 2 T1X = XT −1 2 T1. Med X godtycklig har vi att T−12 T1 kommuterar med samtliga matriser. Eftersom de 2x2 kom- plexvärda matriserna är isomorfa med Hc innebär det att det finns en motsvarande komplexvärd kvaternion qT−12 T1 som kommuterar med samtliga komplexvärda kvaternioner. De enda kvaterni- oner som kommuterar med samtliga är skalära tal (eftersom att i j och k ej kommuterar). Detta medför att qT−12 T1 = β, där är β ett komplext tal. Om vi nu återgår isomorft till matriserna fås T−12 T1 = βI, alltså T1 = βT2. Vad vi kommit fram till här är att spinorrummet är ett geometriskt rum inbäddat i Cliffordalge- bran. Vi kan hitta olika representationer för det med dessa olika förser en bara med olika perspektiv på spinorerna. Detta avslutar nu teoridelen. Vi har visat hur vi kan rotera vektorer i R3 med hjälp av kvaternioner. Vidare har vi även visat Z2-minnet hos SO(3) och argumenterat för att vi behöver en representa- tion för att beskriva objekt som har detta minne. Spinorerna har då detta Z2-minne som inte kan observeras genom vanliga vektorer. Vi har tagit fram representationer för operatorer på spinorerna. I vårt interaktiva program har vi tagit fram visualiseringar av vektorummet och spinorrummet och kommer att kunna demonstrera detta fenomen tydligt. 16 5 Kodningen bakom VR, BR och SR Under projektet har vi producerat tre program, VR, BR och SR (står för Vektorrymd, Bivektor- rymd samt Spinorrymd). VR och BR är visualiseringar av de parametriseringar mellan bivektor- rymden och vektorrymden BR→ L(V R), b→ T, Tv = eb/2ve−b/2. (se även (30) samt avsnittet om kvaternioner och rotationer i R3 3.1. ) De är skapade i pedagogiskt syfte. Användaren skall kunna visuellt få demonstrerat för sig att SO(3) har ett Z2-minne i den meningen att när ett vektorsystem roterat ett helt varv kommer inte en punkt i bivektorrymden som kontinuerligt följt detta system ha återställts. Bivektorn befinner sig då istället på randen, |b| = 2pi. Alla b som uppfyller detta motsvarar, enligt ekv. (30), samma kvaternion −1, b→ eb/2. SR visualiserar representationen mellan bivektorrymden och spinorrymden BR→ L(SR), b→ T˜ , T˜ψ = ρ(eb/2)ψ. Där ψ är en spinor. Man kan se i programmet som visualiserar spinorer att efter att en punkt i bivektorrymden förflyttats till sin rand kommer spinorer inte ha återställts, utan har istället hamnat i motsatt konfiguration: ψ → −ψ. BR och SR behöver programmet quaternion.m för att fungera. SR behöver även platonic_solid.m. I samtliga program finns en Bivektor-Spinor- samt Vektorrymd uppvisade som grafiska element. Bivektorrymden består av ett klot med radie 2pi, där motsvarar punkterna de enhetskvaternio- ner som finns i S3, och relateras till de rena bivektorerna med q = exp(b/2). Det finns däri ett litet rött klot som representerar en punkt i bivektorklotet. Den sitter till en början i origo men när programmet används kommer den att börja flytta runt. Tre ”skuggbilder”, mer transparenta punkter projicerade på de tre axlarna kommer att synas för att ge bättre insikt i vart i klotet punkten befinner sig. Eftersom denna avbildning har ett modulus på 4pi är den röda punkten i programmet inställd på att då den börjar hamna utanför 4pi så ska den flyttas innanför klotet men speglas så att den behåller den sista flyttningen som användaren gjorde på systemet (dvs. b → −(4pi − |b|) · b/(|b|). Det finns även ett sfäriskt skal inritad i området |b| = pi som motsvarar ekvatorn för kvaternionerna i S3, för att användarna skall få bättre koll på vilka kvaternioner som motsvarar den givna rotationen. Spinorrymden är väldigt lik Bivektorrymde i den mening att den har en sfär och ekvator men det finns istället fyra punkter, en för varje spinor som hade utgört en bas i fyra dimensioner. Dessa är utritade som platonska kroppar. Istället för skuggbilder är krop- parna projicerade ned på z = −10 och x = 10 -planen för att ge en tydligare bild av deras lägen. Vektorrymden består av tre vektorer som representerar en bas i R3, som efter grafiken uppdateras kommer att börja rotera. I samtliga program finns även interaktionsobjekt, objekt som en användare kan interagera med för att göra ändringar i grafiken. Dessa utgörs av planytor, tre olika plan som motsvarar projek- tioner/skärningar av x− y, z − x och y − z-planen. I programmet VR är dessa interaktionsplan projektioner av vektorrymden, där samtliga vektorer finns projicerade. Om interaktionspunkten kommer tillräckligt nära någon vektor kommer vektorn rotera så den pekar på interaktionspunkten. Samtliga vektorer kommer då att förflyttas och hela systemet ändras, vilket även kommer att flytta punkten i Bivektorrymden. Denna kommer att läg- ga sig i den punkt som motsvarar den axel och det vinkelutslag som hade roterat vektorrymden in i dess befintliga läge i en rotation. Detta läge fås genom användning av Cliffordspåret (29). Eftersom Bivektorrymden är 2-1 finns det egentligen fler sätt att göra dessa. Men om vi sätter kriterierna att flyttningarna ska vara kontinuerliga och att b = (0, 0, 0) motsvarar vektorns grundsystem finns bara ett sätt. 17 I BR är interaktionsplanen skärningsplan av Bivektorrymden genom origo, parallellt med x − y, z − x.y − z planen. De objekt man kan interagera med i dessa är röda punkter, som motsvarar klotpunkten i Bivektorrymden. Om interaktionspunkten kommer tillräckligt nära någon av planens klotpunkter kommer klotpunkten att ”dras” till denna punkt, vilket kommer att ändra punkten i Bivektorrymden. Detta kommer sedan uppdatera grafiken i VR på så sätt att systemet roterar in till motsvarande läge. BR och VR visar Z2-minnet i den mening att när vektorsystemet roterat ett fullt varv och åter- ställts till samma läge kommer inte klotpunkten att infinna sig i grundposition, utan det är först efter två varv som klotpunkten återställs. Om man till exempel enbart roterar i z-axeln (x− y pla- net) kommer klotpunkten att befinna sig i (0, 0, 2pi)/(0, 0,−2pi) (dessa motsvarar samma punkt), medan vektorsystemet då är i grundläget. SR har samma interaktionsmoment som BR. Skillnaden är att spinorer, istället för vektorer, kom- mer förflyttas. Det som kommer visa sig här är att spinorerna inte befinner sig i grundläge då klotpunkten rört sig 2pi från sin grundposition, istället kommer samtliga spinorer att finnas i de antipodala lägena till sitt grundläge (representationer av operatorer till spinorrymden har egen- skapen att ρ(−1) = −I). 18 BR, ∆2R3 S3 bortsett från −1 SO(3) SR, L(C2) Bijektiv, Injektiv Surjektiv, lokalt injektiv Figur 2: Avbildning mellan olika vektorrum 19 Litteraturförteckning [1] Rose´n, Andreas Geometric Multivector Analysis. Birkhäuser, Cham (forthcoming) 2019. [2] Tapp, Kristopher. Matrix Groups for Undergraduates. AMERICAN MATHEMATICAL SOCI- ETY 2005. [3] Sakurai, Jun John.Modern Quantum Mechanics,2nd Edition. Addison-Wesley Publishing Com- pany 1994. [4] Mathoma. Geometric Algebra in 3D - Fundamentals. Hämtad 2019-02-17 från https: //www.youtube.com/watch?v=ElLl6gzNbFE&list=PLpzmRsG7u_gqaTo_vEseQ7U8KFvtiJY4K& index=9 Publicerades 27 december 2016. 20 A Visualisering av yttre algebran Figurer 1 Cliffordalgebrans struktur i R3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Avbildning mellan olika vektorrum . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3 Visualisering av yttreprodukten av vektorer u och v . . . . . . . . . . . . . . . . . 21 4 e1e2 i xy-plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5 e2e3 i yz-plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6 e3e1 i zx-plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 7 Yttreprodukten av tre linjärt oberoende vektorer. . . . . . . . . . . . . . . . . . . . 22 8 Basbytesdiagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 u v Figur 3: Visualisering av yttreprodukten av vektorer u och v e1 e2 Figur 4: e1e2 i xy-plan e2 e3 Figur 5: e2e3 i yz-plan e3 e1 Figur 6: e3e1 i zx-plan 21 e1 e2 e3 Figur 7: Yttreprodukten av tre linjärt oberoende vektorer. 22 B Kompletterande Teori B.1 Basbyten I linjär algebra lär vi oss att till en linjär avbildning av ett vektorrum V g : V → V finns en matris A sådan att g(v) = AvE , för en vektor v ∈ V , där A = (g(e1) g(e2) ... g(en)) och vE är koordinaterna i basen E = (e1 e2 ... en). Om vi nu låter F = (f1 f2 ... fn) vara en annan bas för V , sådan att FvF = vE , gäller att g(v) = AF vF , där AF = (g(f1) g(f2) ... g(fn)). Vidare följer att vi kan skriva AF som AF = F −1AF Detta förtydligas i nedanstående diagram. vE AEvE vF AF vF AE = g(en) AF = F −1 AF F −1 F Figur 8: Basbytesdiagram 23 B.2 Homomorfa matrisrepresentationer Vi visar nedan att de representationer för kvaternionera som vi valde i 4.4.2 faktiskt är homomorfier. Bevis. Låt φ : H→ L(C2), Genom φ(a+bi+cj+dk)= [ a+ bi c+ di −c+ di a− bi ] , där a,b,c,d ∈ R. För att visa att detta är en homomorfi måste vi visa att den bevarar multiplikation och addition. För att visa att den bevarar addition, låt φ((a+ bi+ cj + dk) + (e+ fi+ gj + hk)) = φ((a+ e) + (b+ f)i+ (c+ g)j + (d+ h)k)= [ (a+ e) + (b+ f)i (c+ g) + (d+ h)i −(c+ g) + (d+ h)i (a+ e)− (b+ f)i ] = = [ a+ bi c+ di −c+ di a− bi ] + [ e+ fi g + hi −g + hi e− fi ] =φ(a+ bi+ cj + dk) + φ(e+ fi+ gj + hk). Vilket visar att den bevarar addition. För att visa att den bevarar multiplikation låt φ((a+ bi+ cj + dk)(e+ fi+ gj + hk)) = φ((ae− bf − cg + dh) + (af + be+ ch− dg)i+ (ag − bh+ ce+ df)j + (ah+ bg − cf + de)k) =   (ae− bf − cg + dh) + (af + be+ ch− dg)i (ag − bh+ ce+ df) + (ah+ bg − cf + de)i −(ag − bh+ ce+ df) + (ah+ bg − cf + de)i (ae− bf − cg + dh)− (af + be+ ch− dg)i   = [ a+ bi c+ di −c+ di a− bi ] [ e+ fi g + hi −g + hi e− fi ] = φ(a+ bi+ cj + dk)φ(e+ fi+ gj + hk). Vilket visar att den bevarar multiplikation. Alltså är φ en homomorfi. Med samma argument som ovan kan man även se att ψ : H→ L(C2) är en homomorfi, där ψ(a+ bi+ cj + dk) = [ a− ci d− bi −d− bi a+ ci ] . B.3 Rotationsmatris för godtycklig axel och vinkel i VR Från linjär algebra lär vi oss att en rotation bestäms av vart den tar basvektorerna. Om vi vill lära oss hur rotationsmatrisen för en godtycklig axel och godtycklig vinkel räcker det alltså att vi kollar på basvektorerna. Detta kan vi göra med hjälp av kvaternioner. Vi har att R = (Re1 Re2 Re3), där R är vår rotationsmatris och Re1 = qe1q −1, Re2 = qe2q −1, Re3 = qe3q −1. Där q = exp(−jφ2 ), j = ae32 + be13 + ce21, a, b, c ∈ R och a 2 + b2 + c2 = 1. Om vi räknar på detta får vi att qe3q−1 = (cos(θ/2)− j sin(θ/2))e3(cos(θ/2) + j sin(θ/2)) = 24 =( cos(θ/2)e3 + (ae23 sin(θ/2)− be13 sin(θ/2) + ce12 sin(θ/2))e3(cos(θ/2) + j sin(θ/2)) = =( cos(θ/2)e3+a sin(θ/2)e2−b sin(θ/2)e1+c sin(θ/2)e123)(cos(θ/2)−a sin(θ/2)e23+b sin(θ/2)e13− c sin(θ/2)e12) = = cos2(θ/2)e3+a cos(θ/2) sin(θ/2)e2−b cos(θ/2) sin(θ/2)e1−c cos(θ/2) sin(θ/2)e312+a cos(θ/2) sin(θ/2)e2− a2 sin2(θ/2)e3+ab sin 2(θ/2)e213+ac sin 2(θ/2)e1−b cos(θ/2) sin(θ/2)e1+ab sin 2(θ/2)e123−b2 sin 2(θ/2)e3+ bc sin2(θ/2)e2 + c cos(θ/2) sin(θ/2)e123 + ac sin 2(θ/2)e1 + bc sin 2(θ/2)e2 + c2 sin 2(θ/2)e3 = = cos2(θ/2)e3 + sin 2(θ/2)(−a2 − b2 + c2)e3 + 2a cos(θ/2) sin(θ/2)e2 − 2b cos(θ/2) sin(θ/2)e1 + 2bc sin2(θ/2)e2 + 2ac sin 2(θ/2)e1 = =(2ac sin2(θ/2)−b sin(θ))e1+(2bc sin 2(θ/2)+a sin(θ))e2+(cos2(θ/2)−a2 sin 2(θ/2)−b2 sin2(θ/2)+ c2 sin2(θ/2))e3. Om man gör motsvarande beräkningar för e1 och e2 får man att qe1q−1 = (cos2(θ/2) + a2 sin 2(θ/2)− b2 sin2(θ/2)− c2 sin2(θ/2))e1 + (2ab sin 2(θ/2)− c sin(θ))e2 + (2ac sin2(θ/2) + b sin(θ))e3, qe2q−1 = (2ab sin 2(θ/2) + c sin(θ))e1 + (cos2(θ/2)− a2 sin 2(θ/2) + b2 sin2(θ/2)− c2 sin2(θ/2))e2 + (2b sin2(θ/2)− a sin(θ))e3. Vi får då att R = [ cos2(θ/2)+sin2(θ/2)(a2−b2−c2) 2ab sin2(θ/2)−c sin(θ) 2ac sin2(θ/2)+b sin(θ) 2ab sin2(θ/2)+c sin(θ) cos2(θ/2)+sin2(θ/2)(−a2+b2−c2) 2b sin2(θ/2)−a sin(θ) 2ac sin2(θ/2)−b sin(θ) 2bc sin2(θ/2)+a sin(θ) cos2(θ/2)+sin2(θ/2)(−a2−b2+c2) ] B.4 En rotation i R3 är alltid kring en axel Bevis. Detta påstående innebär att för en allmän rotation kring origo finns alltid en linje (rotations- axel) som inte har förflyttat sig med avseende på grundläget. Detta är bevisat om man kan visa att samtliga element R ∈ SO(3) har en egenvektor v för vilken Rv = v. Detta är identiskt med att på- stå att samtliga matriser i SO(3) har ett egenvärde λ = 1, eller att det(R−I) = 0. För att visa detta använder vi att eftersom R> = R−1 gäller R−I = R−RR> = R·(I−R>) = R·(I−R)> vi har även för rotationsmatriser att det(R) = 1, samt att för godtyckliga A,B är det(AB) = det(A) · det(B) och det(A>) = det(A). Med dessa beräknas det(R− I) = det(R · (I −R)>) = det(R) · det(I −R) = det((−1) · (R− I)) = (−1)3 · det(R− I) = −det(R− I). Eftersom det(R− I) = −det(R− I) måste det(R− I) = 0. 25 C KOD C.1 VR 1 c l f ; c l e a r a l l ; 2 %int rodukt i on 3 %{ 4 %Detta program ’ar skapat i samband med e t t kandidatpro jekt , 5 %och ’ar menat at t vara en de l i e t t paket av t r e 6 %(VR,BR och SR, d’ar VR s t å r f’or vektorrymden , 7 % BR f’or bivektorrymden och SR f’or spinorrymden ) . 8 9 %f’or a t t kunna k’ora BR och SR kr’avs quatern ion .m 10 %SR kr’aver ’aven p l a t on i c_so l i d .m 11 12 %Vardera program s k a l l gå a t t anv’anda utan t i l l g ång t i l l de andra , och gå r 13 %att anv’anda utan djupare kunskap i matematiken om bara f’or n’oj e s s k u l l . 14 15 %Denna in l edn ing ’ar sk r i v en f’or a t t ge i n s i k t i vad de o l i k a 16 %programmen g’or , vad de ’ar t i l l f’or , hur man anv’ander dem , och hur de ’a r 17 %uppbyggda . 18 %Den ’ar sk r i v en f’or a t t f’or s’oka s å l ångt det gå r e nh e t l i g t 19 %beskr iva samt l i ga t r e program samtid igt , s å 20 %att det i n t e f i n n s behov av at t l’asa in l edn ingen i någon av de andra . 21 22 %Mer s p e c i f i k a d e t a l j e r r e l a t e r ad e t i l l v a r j e kods uppbyggnad ; vad de o l i k a 23 %momenten g’or och va r f’or de s k r i v s på det s’at t de g’or s s k a l l s k r i v a s n’a ra 24 %t i l l h ’orande kodstycke . 25 26 %Kunskaper kr ing programmering tenderar a t t var i e ra , s å jag har 27 %f’or e d r a g i t a t t ta upp " f’or många d e t a l j e r " ’an f’or f å i texten , s å koden 28 %sk a l l vara enke l a t t f’or s t å ’aven utan t i d i g a r e kunskaper . 29 %Jag ’ar s j’al v i n t e mycket av en kodare , och genom att be sk r iva s å 30 %mycket av l og i k en som m’oj l i g t ’ar det f’orhoppn ingsv i s t enk la r e f’or en mer 31 %van at t g’ora f’or’andr ingar denne tycker beh’ovs . 32 33 34 %BR och VR ’ar en v i s u e l l demonstrat ion av hur kvatern ionerna 35 %dubbelt t’acker gruppen SO(3) , som be sk r i v e r r o t a t i o n e r i 3D. 36 %SR ’ar en v i s u a l i s e r i n g av sp inore r , som har egenskapen at t de i n t e 37 %å t e r s t’a l l t s e f t e r 360 graders , utan 720 grader s r o t a t i on 38 %( s p e c i f i k t ’ar a t t f’or en spinor−r ep r e s en t a t i on p ’ar p(−1)=−I ) 39 40 %Programmens s t ruk tu r e r ’ar på många s’at t l i k a ; 41 %Den f’or s t a koden i va r j e program har jag s a t t ut parametrar som ’ar d i t s a t t a 42 %så at t anv’andaren s k a l l kunna j u s t e r a e f t e r datorprestanda och pe r s on l i g a p r e f e r e n s e r 43 %sedan de matematiska/ l o g i s k a objekten , 26 44 %D’ar e f t e r i n s t a n t i e r a s d i v e r s e geometr i ska ob jekt s a t t i s i na 45 %" g r u n d t i l l s t ånd " . 46 47 %I vardera program f i nn s t r e plan ned på v i l k a e t t rum p r o j i c e r a s 48 %( I BR och SR p r o j i c e r a s "Bivektorrymden " , i VR p r o j i c e r a s " Vektorrymden ") . 49 %Dessutom kommer i vardera plan en punkt i n s t a n t i e r a s 50 %( en bl å s t j’arna ( ’∗ ’ ) ) som i samt l i ga t e x t e r kommer k a l l a s " in t e rakt i onspunkten " , 51 %f’or a t t s’ar s k i l j a den f r ån punkten i BR, som kommer k a l l a s " klotpunkten " . 52 %Planen kommer k a l l a s " i n t e r ak t i on sp l an en " . Planen kommer o f t a be sk r i va s 53 %som att de " t i l l h ’or " det rum som p r o j i c e r a d e s ned på det 54 %( exempelv i s h’ar i VR kan texten "vektorrummets plan " f’orekomma) . 55 %Bland de ob jekt som f i nn s v i s u e l l t r ep r e s en t e rade i planen f i n n s 56 %komponenter som kan i n t e r a g e r a med in te rakt i onspunkte r , 57 %v i l k a kommer k a l l a s ’ i n t e r ak t i on s ob j ek t ’ . 58 %inte rakt i onspunkten gå r a t t f l y t t a , och 59 %genom att komma t i l l r ’ac k l i g t n’ara e t t i n t e r a k t i o n s ob j e k t 60 %kommer det a t t f l y t t a s i g s å den hamnar s å n’ara 61 %inte rakt i onspunkten den kan . 62 %in t e r ak t i on sp l an en ’ar a l l t i d x−y , z−x , och y−z plan . 63 %Det ’ar v’ar t a t t anm’arka at t jag va l t a t t k a l l a e t t plan z−x . 64 65 %I samt l iga program f i nn s e t t "vektorrum" och e t t "bivektorrum" 66 %vektorrummets v i s u e l l a komponenter ’ar t r e stycken vektorer , 67 %som s k a l l r ep r e s en t e r a e t t koordinatystem 68 %(x−axel , y−axe l och en z−axe l ) och i en bredare bem’ark e l s e , vek to re r i 69 %tr e dimens ioner . 70 71 %Bivektorrummet ’ar e t t k l o t med rad i e 2∗ pi 72 %som ’ar en v i s u e l l r e p r e s en t a t i on av enhetskvatern iornerna , v i l k a utg’or 73 %en t r ed imen s i on e l l s f’ar inb’addad i f y ra dimensioner , och 74 %om b=[b1 b2 b3 ] ’ar en punkt i B(0 ,2∗ pi ) kan den r e l a t e r a s t i l l en s p e c i f i k 75 %kvatern ion v ia b−>exp ( ( b1∗ i+b2∗ j+b3∗k ) /2) 76 %Klote t s f r’amsta komponent ’ar en punkt ( ka l l ad klotpunkt , kommer ib land i kod understryka 77 %att den ’ar r’od , f’or a t t s’ar s k i l j a den f r ån inte rakt ionspunkten , och n’a r jag d i s ku t e r a r 78 %den som en kvatern ion e l l e r vektor kommer jag k a l l a den b) 79 %bo l l en har f’or ’ov r i g t e t t modulus på 4∗ pi ( exp ((4∗ pi ∗ j ) /2)=1) , s å n’ar b kommer "’over " 4∗ pi 80 %kommer den f’or f l y t t a s t i l l e t t motsvarande l’age på andra s idan k l o t e t . 81 %f’or a t t ge en b’at t r e b i l d av var i k l o t e t punkten be f i nne r s i g har 82 %" skuggb i l d e r s a t t s ut , v i l k a b e sk r i v e r b ’ s l p r o j e k t i o n e r på B’ s ax l a r . 83 84 %I VR ’ar det vektorrummet som ’ar p r o j i c e r a t på i n t e r ak t i on sp l an en . 85 %vektorrummets i n t e r a k t i o n s ob j e k t ’ar de o l i k a vektore rnas p i l s p e t s a r ; 86 %n’ar in t e rakt i onspunkten kommer n’ara p i l s p e t s e n kommer dess vektor 87 %ro t e r a s in mot interakt ionspunkten , 88 %va r e f t e r he la koordninatsystemet kommer ro t e r a e f t e r samma axe l och 89 %med samma v i nk e l u t s l a g . 90 %Varje system av koord ina tax l a r (x ’ , y ’ , z ’ ) , motsvarar en r o t a t i on sma t r i s : 27 91 %[ x ’ y ’ z ’ ] ( e f te r som x ’ y ’ z ’ ’ar ortonormerade , v i har 92 %R[ e1 e2 e3 ]=[R( e1 ) R( e2 ) R( e3 ) ]=[x ’ y ’ z ’ ] 93 %I f r ån denna r o t a t i on sma t r i s kan man f å ut en b ivekto r 94 %genom att betrakta matr i sens " c l i f f o r d t r a c e " , v i l k e t v i kan 95 %r e l a t e r a t i l l en s p e c i f i k axe l och en s p e c i f i k v inke l , v i l k e t 96 %då ’ar en b−vektor som motsvarar k lotpunktens nya l’age i bivektorrymden . 97 98 %Det som t yd l i g t m’arks ’ar a t t ’aven då ro ta t i on s sy s t emet r o t e r a t 360 grader 99 %kommer i n t e b−vektorn ha å t e rg å t t t i l l [ 0 0 0 ] , utan det ’ar f’or s t e f t e r 100 %två r o t a t i o n e r som systemet har å t e r s t’a l l t s h e l t . 101 102 103 %I BR ’ar det bivektorrummet som ’ar p r o j i c e r a t på in t e rak t i on sp l anen , och 104 %in t e r a k t i o n s ob j e k t e t ’ar klotpunkten . Då in te rakt i onspunkten kommer n’a ra 105 %klotpunkten f l y t t a s klotpunkten t i l l i n t e rak t i on spunktens l’age . 106 %I var j e i n t e r a k t i o n sp l an f i n n s ’aven en c i r k e l ut r i tad , som motsvarar 107 %randen av BR. 108 %klotpunkten motsvarar (’ar ) en bivektor , v i l k e t v i kan r e l a t e r a t i l l en enhets− 109 %kvatern ion q=exp (b/2) , d’ar v i nu kan ro t e r a koord inatsystemet 110 %med qvq^−1. Mer d e t a l j r i k f’or k l a r i n g f i n n s i p ro j ek t rappor t en . 111 %I koden i s i g anv’ands e t t b e f i n t l i g t program som fanns i quatern ion .m, 112 %som jag e j vet hur den ’ar uppbyggd . 113 114 %I SR har v i ’aven spinorrummet , v i l k e t l i k t BR ’ar e t t k l o t av rad i e 2∗ pi , 115 %var i det l i g g e r f y ra stycken punkter ( å t e r i g e n ’ s t j’arnor ’ , (∗ ) ) 116 %som motsvarar sp i no r e r . 117 %Spinore r b e sk r i v s o f t a som vekto re r i C^2 , d’ar det f i n n s en 118 %kvat e rn i on r ep r e s en ta t i on p(q )=[z w;−w’ z ’ ] , som ’ verkar ’ på 119 %sp inore rna . I SR gå r v i ’over t i l l R^4 , oh e f te r som p bevarar l’angder 120 %kommer " enhe t s sp ino r e r " be f inna s i g i s f’aren , s å v i r e p r e s en t e r a r 121 %sp inore rna i någon mening som om de vore " kvate rn ione r " . 122 %I SR ’ar det å t e r i g e n BR som p r o j i c e r a s på in t e rak t i on sp l anen , med 123 %samma in t e r ak t i on s sy s t em som i BR, och n’ar b o l l e n s r’or e l s e r e s u l t e r a r 124 %i f’or’andr ingar av kvatern ionens l’age genom det p(q ) som beskrevs ovan . 125 %hur kvatern ionen r o t e r a r vektorrummet ’ar ocks å med 126 127 %f’or a t t hj’alpa v i s u a l i s e r i n g e n av sp ino r e rna s l’agen f i n n s ’aven 128 %pro j ek t i on sp l an som be sk r i v e r dess l’agen i xy och zx planen , s a t t a i 129 %deras k lot , på niv å erna z=−10 r e sp ek t i v e x=10, 130 %Det gå r ’aven at t s l å på " skuggb i ld e r " som fungerar på samma s’at t som 131 %k l o t e t s skuggor , men detta r e s u l t e r a r i 16 punkter i k l o t e t , s å det ’ar 132 %I grundl’aget s a t t t i l l 0 , men kan s’at t a s på med en "shadeon"−konstant 133 134 135 %samt l iga i n t e r a k t i o n e r mellan program och anv’andare 136 %hanteras inom en whi le loop , som a l l t i d ’ar s a t t t i l l ’ true ’ . 137 %inte rak t i onspunkte rna ’ar " impoint"−ob jekt ( e l l e r i 2019 : drawpoint ) . 138 %Som i n s t a n t i e r a s med p lanet det b e f i nne r s i g i . 139 %Dessa k a l l a s på i loopen med en " get " 28 140 %(F’or den ovane : get / g e t t e r s och s e t / s e t t e r s ’ar 141 %i programmering typ i ska funkt i one r a t t ge k l a s s e r . En " get " l å t e r 142 %anv’andaren l’asa av v a r i a b l e r /h’amta in fo rmat ion som e t t ob jekt har 143 %( i detta f a l l har v i en impoint , vars v a r i ab e l v i p lockar ’ar " Pos i t i on " 144 %Den kan i n s t a n t i e r a s v ia h . impoint ( ) ; , och po s i t i on en f å s då 145 %via h . g e tPo s i t i on . ) ) 146 %inte rak t i on spunktens l’age sparas , och en s e r i e i f−s a t s e r k o l l a r om 147 %den nuvarande punkten ’ar n’ara nå got i n t e r a k t i o n s ob j e k t . 148 %po in td i s t anc e garante ra r a t t de i n t e r ak t i on spunk t e r som in t e v id r’or s 149 %e j kan i n t e r a g e r a med s i t t p lans i n t e r ak t i on s ob j e k t , v i l k e t hade g j o r t 150 %koden svå rnav igerad . 151 152 %Det f i n n s en de l k r i t e r i e r u t sa t t a f’or a t t se t i l l a t t s å f å "on’odiga " 153 %loopar g’or s som m’oj l i g t f’or a t t snabba upp programmetn som i nul’aget 154 %’ar r’at t l ångsamma . 155 %Om inte rakt i onspunkten kommer n’ara e t t objekt , ber’aknar programmet v i l k a ope ra t i one r 156 %som s k a l l u t f’ora s . 157 %d’ar e f t e r har va r j e programs whi l e loop en s e r i e set−f unk t i one r ( en " s e t "/ s e t t e r 158 %l å t e r anv’andaren ans’at ta e t t nytt v’arde i e t t objekt , 159 % exempelv i s : s e t (u , ’ XData ’ , b (1 ) , ’YData ’ , b (2 ) , ’ ZData ’ , b (3 ) ) s’at t e r ut 160 %klotpunkten i dess nya l’age i BR. ) v i l k a uppdaterar a l l a g r a f i s k a ob jekt . 161 %} 162 163 %beskr ivn ing av konstanter som kan vara v’ar t a t t modi f i e ra , 164 %om tex kod gå r l ångsamt 165 %{ 166 167 %1. ’ pauselength ’ bes t’ammer , i sekunder , den t i d det s k a l l ta mellan va r j e 168 %i t e r a t i o n av at t l’asa av vektorpunktens l’age och po s i t i o n e r a vektorsystemet och 169 %klotpunkten e f t e r det . 170 171 %2. ’ d i s t ’ b e s k r i v e r f r ån v i l k e t avst ånd inte rakt i onspunkten s k a l l ha 172 %f r ån p i l s p e t s a r n a t i l l s de b’or j a r f l y t t a på s i g 173 174 %3. Po in td i s tance uts’at t e r e t t krav 175 %som begr’ansar an t a l e t p r o c e s s e r som g’or s i whi l e loopen , genom att 176 %kon t r o l l e r a v i l k e t avst ånd den nuvarande in te rakt i onspunkten har 177 %r e l a t i v t den t i d i g a r e i t e r a t i on spunk t en 178 %dvs om man s’at t e r po in td i s t anc e 0 .01 må s t e in t e rakt i onspunkten ha f’o r f l y t t a t s 179 %0.01 enheter f r ån det l’age den var sedan sena s t e gra f ikuppdate r ing , innan 180 %programmet k on t r o l l e r a r huruvida klotpunkten s k a l l f l y t t a s r e l a t i v t 181 %inte rak t i on spunktens nuvarande l’age . 182 183 %Den g’or ’aven s å at t in t e rak t i onspunkte rna 184 %in t e på verkar systemet om in t e anv’andaren r’or vid dem . Om man 185 %s’at t e r po in td i s t anc e t i l l n o l l f i n n s det ingen f’or s’akr ing t i l l detta . 186 187 %( Jag t r o r detta ’ar pga at t impoint , som gene r e ra r 29 i n te rakt ionspunkte rna , 188 %verkar f l y t t a s i g s j’alv , om ’an v’al d i g t l i t e , i s i n egen uppdater ing . 189 %( jag ’ar os’aker på dessa d e t a l j e r , kan ju ocks å tex vara r e l a t e r a t t i l l 190 %gra f i k e n s uppdater ingar ) . ) 191 192 %sta r t v e c bes t’ammer in t e rak t i on spunktens s t a r t l’age då programmet k’or s . 193 194 %} 195 196 pause length =0.05; 197 d i s t =0.4 ; 198 s t a r t v e c =[0 0 ] ; 199 po in td i s t anc e =0.05; 200 201 %x , y , z ’ar namnen på axlarna hos vektorsystemet 202 %p , p2 sparar datan hos impoint i while−loopen 203 %d i s t kvadreras f’or a t t f’or enk la matematiken i programmet 204 %j2 , i , theta2 anv’ands f’or a t t k o l l a k r i t e r i e r om v i l k en s ida 205 %ekvatorn klotpunkten s k a l l be f inna s i g i bivektorrymden 206 207 208 x = [ 1 ; 0 ; 0 ] ; 209 y = [ 0 ; 1 ; 0 ] ; 210 z = [ 0 ; 0 ; 1 ] ; 211 p=s t a r t v e c ; 212 p2=s t a r t v e c ; 213 d i s t=d i s t ^2; 214 215 j 2 =[0 0 0 ] ; 216 i =0; 217 theta2=0; 218 219 %k l o t e t som be sk r i v e r de enhe t skvate rn ione r som verkar 220 %på vektorrummet , 221 %{ 222 %en punkt inom k l o t e t (b) r e l a t e r a s t i l l en " ren kvatern ion " 223 %b=[b1 b2 b3]−>b1∗ i+b2∗ j+b3∗k som r e l a t e r a s t i l l en 224 %enhetskvate rn ion q v ia q=exp (b/2) . 225 %} 226 227 f i g u r e (1 ) 228 229 s e t ( gcf , ’ Po s i t i on ’ , [ 100 , 100 , 1000 , 500 ] ) 230 231 subplot ( 1 , 2 , 1 ) ; 232 233 [m n o]= sphere ; %t o t a l sphere bdry => q=−1 234 s u r f (2∗ pi ∗m,2∗ pi ∗n ,2∗ pi ∗o , ’ f a c e c o l o r ’ , ’ b lue ’ , ’ f a c ea lpha ’ , . 2 , ’ EdgeAlpha ’ , 0 ) ; 235 hold on 236 s u r f ( p i ∗m, pi ∗n , p i ∗o , ’ f a c e c o l o r ’ , ’ green ’ , ’ f a c ea lpha ’ , . 4 , ’ EdgeAlpha ’ , 0 ) ; 237 hold on 238 phi=l i n s p a c e (0 ,2∗ pi ) ; 239 240 x l ab e l ( ’ x ’ ) 241 y l ab e l ( ’ y ’ ) 30 242 z l a b e l ( ’ z ’ ) 243 p lo t (2∗ pi ∗ cos ( phi ) ,2∗ pi ∗ s i n ( phi ) , ’ b lack ’ ) % c i r c l e f o r v i s u a l i s a t i o n 244 245 p lo t3 ([−10 1 0 ] , [ 0 0 ] , [ 0 0 ] , ’ b lack ’ , [ 0 0] , [−10 10 ] , [ 0 0 ] , ’ b lack ’ , [ 0 0 ] , [ 0 0 ] , [−10 10 ] , ’ b lack ’ ) 246 247 %{ 248 %b rep r e s en t e r a t inom k l o t e t som en punkt , bem’arkt som en s t j’arna ( ’∗ ’ ) , 249 %samt t r e " skuggb i l d e r " , p r o j e k t i on e r av b på x , y och z axlarna , 250 %i en svagare gr å skala , f’or a t t f å b’at t r e ’ov e r s i k t i var i det 251 %tr ed imen s i on e l l a rummet b be f i nne r s i g 252 %( v i s u a l i s e r i n g e n av bo l l e n s l’age s t å r s i s t i koden , s å a t t om punkterna 253 %’over lappar , kommer den f a k t i s k a bo l l e n s l’age vara den som syns ) 254 %} 255 256 uxyz=su r f ( [ 0 . 3 5 ∗m;0 . 3 5∗m;0 . 3 5∗m] , [ 0 . 3 5 ∗ n ; 0 . 3 5∗ n ; 0 . 3 5∗ n ] , [ 0 . 3 5 ∗ o ; 0 . 3 5∗ o ; 0 . 3 5∗ o ] , ’ f a c e c o l o r ’ , ’ red ’ , ’ f a c ea lpha ’ , 0 . 2 5 , ’ EdgeAlpha ’ , 0 ) ; 257 258 u=su r f ( 0 . 35∗m,0 . 3 5∗n , 0 . 3 5∗ o , ’ f a c e c o l o r ’ , ’ red ’ , ’ f a c ea lpha ’ ,1 , ’ EdgeAlpha ’ , 0 ) ; 259 260 g r id on 261 ax i s ([−7 7 −7 7 −7 7 ] ) 262 ax i s equal 263 264 t i t l e ( ’ Bivektorrummet BR’ , ’ FontSize ’ , 14) 265 266 subplot ( 1 , 2 , 2 ) ; 267 268 %tr e vekto re r v i s u a l i s e r a s som motsvarar koord inate r f’or e t t t r e d imen s i o n e l l t 269 %vektorrum , i n t e r a k t i v t kan r o t e r a s av anv’andaren . 270 %’aven e t t mindre vektorsystem , som v i s a r grundpos i t ionen . 271 %{ 272 %dess r o t a t i o n e r kommer r e l a t e r a s t i l l den b ivek to r b=−phi ∗ j , som genom att 273 %verka på grundsystemet ( v ia exp (b/2)v ( exp(−b/2) s k u l l e ha r o t e r a t systemet t i l l des s nul’age . 274 %} 275 vecx=quiver3 ( [ 0 −0 .5 ] , [ 0 −0 .5 ] , [ 0 −1 .2 ] , [ x (1 ) 0 . 5 ] , [ x (2 ) 0 ] , [ x (3 ) 0 ] , ’ b ’ , ’ Autosca le ’ , ’ o f f ’ ) ; hold on ; %generate a r o t a t e ab l e x−y−z coord inate system 276 vecy=quiver3 ( [ 0 −0 .5 ] , [ 0 −0 .5 ] , [ 0 −1 .2 ] , [ y (1 ) 0 ] , [ y (2 ) 0 . 5 ] , [ y (3 ) 0 ] , ’ r ’ , ’ Autosca le ’ , ’ o f f ’ ) ; 277 vecz=quiver3 ( [ 0 −0 .5 ] , [ 0 −0 .5 ] , [ 0 −1 .2 ] , [ z (1 ) 0 ] , [ z (2 ) 0 ] , [ z (3 ) 0 . 5 ] , ’ g ’ , ’ Autosca le ’ , ’ o f f ’ ) ; 278 279 xlim ([−1.2 1 . 2 ] ) 280 ylim ([−1.2 1 . 2 ] ) 281 z l im ([−1.2 1 . 2 ] ) 282 t i t l e ( ’ Vektorrummet VR’ , ’ FontSize ’ ,14) ; 283 284 pbaspect ( [ 1 1 1 ] ) ; 285 31 286 287 288 f i g u r e (2 ) ; 289 290 s e t ( gcf , ’ Po s i t i on ’ , [ 100 , 100 , 600 , 200 ] ) 291 292 vx=quiver ( [−2.5 0 2 . 5 ] , [ 0 0 0 ] , [ x (1 ) , x (3 ) , x (2 ) ] , [ x (2 ) , x (1 ) , x (3 ) ] , ’ b ’ , ’ AutoScale ’ , ’ o f f ’ ) ; hold on ;% , ’ b ’ ) ; hold on 293 vy=quiver ( [−2.5 0 2 . 5 ] , [ 0 0 0 ] , [ y (1 ) , y (3 ) , y (2 ) ] , [ y (2 ) , y (1 ) , y (3 ) ] , ’ r ’ , ’ AutoScale ’ , ’ o f f ’ ) ; 294 vz=quiver ( [−2.5 0 2 . 5 ] , [ 0 0 0 ] , [ z (1 ) , z (3 ) , z (2 ) ] , [ z (2 ) , z (1 ) , z (3 ) ] , ’ g ’ , ’ AutoScale ’ , ’ o f f ’ ) ; 295 296 ax i s ([−5 5 −1.5 1 . 5 ] ) ; 297 pbaspect ( [ 1 0 3 1 ] ) ; 298 299 300 txtxy = ’x−y plan ’ ; 301 txtzx = ’ z−x plan ’ ; 302 txtyz = ’y−z plan ’ ; 303 t ex t (−3 ,−1.1 , txtxy , ’ FontSize ’ ,12) ; 304 t ex t (−0.5 ,−1.1 , txtzx , ’ FontSize ’ ,12) ; 305 t ex t (2 ,−1.1 , txtyz , ’ FontSize ’ ,12) ; 306 t i t l e ( ’ i n t e r a k t i v a ytor ’ , ’ FontSize ’ , 12) ; 307 308 h=impoint ( gca , s t a r t v e c ) ; 309 whi le ( t rue ) 310 pause ( pause length ) 311 %p sparar nya i n t e r a k t i o n s l’aget 312 p=h . g e tPo s i t i on ; 313 %om vi i n t e r’or t o s s e t t l i t e t avst ånd s k a l l i ngent ing ske 314 i f ( po in td i s tance<=norm(p−p2 ) ) 315 i f (0.1<=norm(p)&&0.1<=norm(p+[2.5 0 ] )&&0.1<=norm(p− [2 .5 0 ] ) ) 316 %ko l l a r om v i hamnat n’ara en s p e c i f i k vektor 317 i f ( ( p (1 )−x (1 ) +2.5)^2+(p (2 )−x (2 ) )^2<=d i s t&&0.1<=x (1)^2+x (2) ^2) 318 319 %vi anv’ander det nya l’aget samt vektorn f’or a t t 320 %bi lda en ro ta t i on smat r i s , som v i anv’ander f’or a t t r o t e r a samt l i ga 321 %objekt 322 p (1)=p (1) +2.5 ; 323 324 q=[x (1 ) x (2 ) ] ; 325 326 p=p/norm(p) ; 327 q=q/norm(q ) ; 328 329 %al f a , beta best’ammer ro t a t i on smat r i s en 330 a l f a=p (1) ∗q (1 )+p (2) ∗q (2 ) ; 331 beta=p (1) ∗q (2 )−p (2) ∗q (1 ) ; 332 333 334 x1=a l f a ∗x (1 )+beta ∗x (2 ) ; 335 x2=a l f a ∗x (2 )−beta ∗x (1 ) ; 336 x (1 )=x1 ; x (2 )=x2 ; 337 32 338 339 y1=a l f a ∗y (1 )+beta ∗y (2 ) ; 340 y2=a l f a ∗y (2 )−beta ∗y (1 ) ; 341 y (1 )=y1 ; y (2 )=y2 ; 342 343 z1=a l f a ∗z (1 )+beta ∗z (2 ) ; 344 z2=a l f a ∗z (2 )−beta ∗z (1 ) ; 345 z (1 )=z1 ; z (2 )=z2 ; 346 347 e l s e i f ( ( p (1 )−y (1 ) +2.5)^2+(p (2 )−y (2 ) )^2<=d i s t&&0.1<=y (1)^2+y (2) ^2) 348 349 p (1)=p (1) +2.5 ; 350 351 q=[y (1 ) y (2 ) ] ; 352 353 p=p/norm(p) ; 354 q=q/norm(q ) ; 355 356 357 a l f a=p (1) ∗q (1 )+p (2) ∗q (2 ) ; 358 beta=p (1) ∗q (2 )−p (2) ∗q (1 ) ; 359 360 x1=a l f a ∗x (1 )+beta ∗x (2 ) ; 361 x2=a l f a ∗x (2 )−beta ∗x (1 ) ; 362 x (1 )=x1 ; x (2 )=x2 ; 363 y1=a l f a ∗y (1 )+beta ∗y (2 ) ; 364 y2=a l f a ∗y (2 )−beta ∗y (1 ) ; 365 y (1 )=y1 ; y (2 )=y2 ; 366 367 z1=a l f a ∗z (1 )+beta ∗z (2 ) ; 368 z2=a l f a ∗z (2 )−beta ∗z (1 ) ; 369 z (1 )=z1 ; z (2 )=z2 ; 370 %x=x/norm(x ) ; y=y/norm(y ) ; z=z/norm( z ) ; 371 372 e l s e i f ( ( p (1 )−z (1 ) +2.5)^2+(p (2)−z (2 ) )^2<=d i s t&&0.1<=z (1)^2+z (2) ^2) 373 374 p (1)=p (1) +2.5 ; 375 q=[z (1 ) z (2 ) ] ; 376 377 p=p/norm(p) ; 378 q=q/norm(q ) ; 379 380 381 a l f a=p (1) ∗q (1 )+p (2) ∗q (2 ) ; 382 beta=p (1) ∗q (2 )−p (2) ∗q (1 ) ; 383 384 x1=a l f a ∗x (1 )+beta ∗x (2 ) ; 385 x2=a l f a ∗x (2 )−beta ∗x (1 ) ; 386 x (1 )=x1 ; x (2 )=x2 ; 387 388 y1=a l f a ∗y (1 )+beta ∗y (2 ) ; 389 y2=a l f a ∗y (2 )−beta ∗y (1 ) ; 390 y (1 )=y1 ; y (2 )=y2 ; 391 392 z1=a l f a ∗z (1 )+beta ∗z (2 ) ; 393 z2=a l f a ∗z (2 )−beta ∗z (1 ) ; 33 394 z (1 )=z1 ; z (2 )=z2 ; 395 396 397 %x=x/norm(x ) ; y=y/norm(y ) ; z=z/norm( z ) ; 398 399 e l s e i f ( ( p (1 )−x (3 ) )^2+(p (2)−x (1 ) )^2<=d i s t&&0.1<=x (3)^2+x (1) ^2) 400 q=[x (3 ) x (1 ) ] ; 401 p=p/norm(p) ; 402 q=q/norm(q ) ; 403 404 405 a l f a=p (1) ∗q (1 )+p (2) ∗q (2 ) ; 406 beta=p (1) ∗q (2 )−p (2) ∗q (1 ) ; 407 408 x1=a l f a ∗x (3 )+beta ∗x (1 ) ; 409 x2=a l f a ∗x (1 )−beta ∗x (3 ) ; 410 x (3 )=x1 ; x (1 )=x2 ; 411 412 y1=a l f a ∗y (3 )+beta ∗y (1 ) ; 413 y2=a l f a ∗y (1 )−beta ∗y (3 ) ; 414 y (3 )=y1 ; y (1 )=y2 ; 415 416 z1=a l f a ∗z (3 )+beta ∗z (1 ) ; 417 z2=a l f a ∗z (1 )−beta ∗z (3 ) ; 418 z (3 )=z1 ; z (1 )=z2 ; 419 420 e l s e i f ( ( p (1 )−y (3 ) )^2+(p (2)−y (1 ) )^2<=d i s t&&0.1<=y (3)^2+y (1) ^2) 421 q=[y (3 ) y (1 ) ] ; 422 p=p/norm(p) ; 423 q=q/norm(q ) ; 424 425 426 a l f a=p (1) ∗q (1 )+p (2) ∗q (2 ) ; 427 beta=p (1) ∗q (2 )−p (2) ∗q (1 ) ; 428 429 x1=a l f a ∗x (3 )+beta ∗x (1 ) ; 430 x2=a l f a ∗x (1 )−beta ∗x (3 ) ; 431 x (3 )=x1 ; x (1 )=x2 ; 432 433 y1=a l f a ∗y (3 )+beta ∗y (1 ) ; 434 y2=a l f a ∗y (1 )−beta ∗y (3 ) ; 435 y (3 )=y1 ; y (1 )=y2 ; 436 437 438 z1=a l f a ∗z (3 )+beta ∗z (1 ) ; 439 z2=a l f a ∗z (1 )−beta ∗z (3 ) ; 440 z (3 )=z1 ; z (1 )=z2 ; 441 442 e l s e i f ( ( p (1 )−z (3 ) )^2+(p (2)−z (1 ) )^2<=d i s t&&0.1<=z (3)^2+z (1 ) ^2) 443 444 q=[z (3 ) z (1 ) ] ; 445 p=p/norm(p) ; 446 q=q/norm(q ) ; 447 448 449 a l f a=p (1) ∗q (1 )+p (2) ∗q (2 ) ; 34 450 beta=p (1) ∗q (2 )−p (2) ∗q (1 ) ; 451 452 x1=a l f a ∗x (3 )+beta ∗x (1 ) ; 453 x2=a l f a ∗x (1 )−beta ∗x (3 ) ; 454 x (3 )=x1 ; x (1 )=x2 ; 455 456 y1=a l f a ∗y (3 )+beta ∗y (1 ) ; 457 y2=a l f a ∗y (1 )−beta ∗y (3 ) ; 458 y (3 )=y1 ; y (1 )=y2 ; 459 460 z1=a l f a ∗z (3 )+beta ∗z (1 ) ; 461 z2=a l f a ∗z (1 )−beta ∗z (3 ) ; 462 z (3 )=z1 ; z (1 )=z2 ; 463 464 e l s e i f ( ( p (1 )−x (2 ) −2.5)^2+(p (2)−x (3 ) )^2<=d i s t&&0.1<=x (2)^2+x (3) ^2) 465 p (1)=p (1) −2.5; 466 q=[x (2 ) x (3 ) ] ; 467 p=p/norm(p) ; 468 q=q/norm(q ) ; 469 470 471 a l f a=p (1) ∗q (1 )+p (2) ∗q (2 ) ; 472 beta=p (1) ∗q (2 )−p (2) ∗q (1 ) ; 473 474 x1=a l f a ∗x (2 )+beta ∗x (3 ) ; 475 x2=a l f a ∗x (3 )−beta ∗x (2 ) ; 476 x (2 )=x1 ; x (3 )=x2 ; 477 478 y1=a l f a ∗y (2 )+beta ∗y (3 ) ; 479 y2=a l f a ∗y (3 )−beta ∗y (2 ) ; 480 y (2 )=y1 ; y (3 )=y2 ; 481 482 z1=a l f a ∗z (2 )+beta ∗z (3 ) ; 483 z2=a l f a ∗z (3 )−beta ∗z (2 ) ; 484 z (2 )=z1 ; z (3 )=z2 ; 485 486 e l s e i f ( ( p (1 )−y (2 ) −2.5)^2+(p (2)−y (3 ) )^2<=d i s t&&0.1<=y (2)^2+y (3) ^2) 487 p (1)=p (1) −2.5; 488 q=[y (2 ) y (3 ) ] ; 489 p=p/norm(p) ; 490 q=q/norm(q ) ; 491 492 493 a l f a=p (1) ∗q (1 )+p (2) ∗q (2 ) ; 494 beta=p (1) ∗q (2 )−p (2) ∗q (1 ) ; 495 496 x1=a l f a ∗x (2 )+beta ∗x (3 ) ; 497 x2=a l f a ∗x (3 )−beta ∗x (2 ) ; 498 x (2 )=x1 ; x (3 )=x2 ; 499 500 y1=a l f a ∗y (2 )+beta ∗y (3 ) ; 501 y2=a l f a ∗y (3 )−beta ∗y (2 ) ; 502 y (2 )=y1 ; y (3 )=y2 ; 503 504 z1=a l f a ∗z (2 )+beta ∗z (3 ) ; 505 z2=a l f a ∗z (3 )−beta ∗z (2 ) ; 35 506 z (2 )=z1 ; z (3 )=z2 ; 507 508 e l s e i f ( ( p (1 )−z (2 ) −2.5)^2+(p (2)−z (3 ) )^2<=d i s t&&0.1<=z (2)^2+z (3) ^2) 509 p (1)=p (1) −2.5; 510 q=[z (2 ) z (3 ) ] ; 511 p=p/norm(p) ; 512 q=q/norm(q ) ; 513 514 515 a l f a=p (1) ∗q (1 )+p (2) ∗q (2 ) ; 516 beta=p (1) ∗q (2 )−p (2) ∗q (1 ) ; 517 518 z1=a l f a ∗z (2 )+beta ∗z (3 ) ; 519 z2=a l f a ∗z (3 )−beta ∗z (2 ) ; 520 z (2 )=z1 ; z (3 )=z2 ; 521 522 523 y1=a l f a ∗y (2 )+beta ∗y (3 ) ; 524 y2=a l f a ∗y (3 )−beta ∗y (2 ) ; 525 y (2 )=y1 ; y (3 )=y2 ; 526 527 x1=a l f a ∗x (2 )+beta ∗x (3 ) ; 528 x2=a l f a ∗x (3 )−beta ∗x (2 ) ; 529 x (2 )=x1 ; x (3 )=x2 ; 530 end 531 532 %{ 533 %b−bo l l e n s l’age f å s ut v ia C l i f f o r d Tracet , d’ar 534 %CT(R)=2∗( cos ( theta /2)+j ∗ s i n ( theta /2) )+1 535 %R ’ar en ro ta t i on smat r i s , som kan f å s ut av at t g i v e t en 536 %kon f i gu ra t i on {x ’ , y ’ , z ’ } ’ar R=[x ’ y ’ z ’ ] 537 %i f s a t s e rna ’ar t i l l f’or a t t l’osa problemet at t co s inus i n t e ’ar 538 %su r j e k t i v på [ 0 , 2 p i ] . 539 %det man kan ko l l a ’ar a t t e f te r som s i n ( theta /2) byter tecken i områ det 540 %theta=k∗ pi kommer den j−vektor som tas ut d’ar byta tecken i detta område 541 %och v i bryr os s enbart om området vid " ekvatorn " abs (b)=pi 542 %( at t man f å r t e c k e n s k i f t v id 2 p i ’ar inga problem , e f te r som v i ’andå 543 %har en " sp eg l i n g " i detta område . 0an ’ar ocks å ok , d’ar har v i ocks å 544 %tecken’andr ingar . 545 %så n’ar v i f l y t t a r mellan s i d o r av ekvatorn ta r v i i +1, och 546 %om i ’ar j’amn e l l e r udda best’ammer v i l k e t belopp v i s k a l l v’al j a f’or 547 %theta . 548 %} 549 j =[y (3 )−z (2 ) z (1 )−x (3 ) x (2 )−y (1 ) ] ; 550 551 theta=r e a l ( acos ( ( x (1 )+y (2)+z (3)−1)/2) ) ; 552 553 i f ( not ( j (1 )==0&&j (2 )==0&&j (3 )==0)) 554 j=j /norm( j ) ; 555 i f ( abs ( theta2−pi )<=0.5&¬ ( s i gn ( j (1 ) )==s ign ( j 2 (1 ) ) )&¬ ( abs ( j (2 )^2+j (3 ) ^2−1)<=0.2) ) 556 i=mod( i +1 ,2) ; 557 e l s e i f ( abs ( theta2−pi )<=0.5&¬ ( s i gn ( j (2 ) )==s ign ( j2 (2 ) ) )&¬ ( 36 abs ( j (1 )^2+j (3 ) ^2−1)<=0.2) ) 558 i=mod( i +1 ,2) ; 559 e l s e i f ( abs ( theta2−pi )<=0.5&¬ ( s i gn ( j (3 ) )==s ign ( j2 (3 ) ) )&¬ ( abs ( j (1 )^2+j (2 ) ^2−1)<=0.2) ) 560 i=mod( i +1 ,2) ; 561 end 562 563 e l s e 564 j=j2 ; 565 end 566 567 568 i f ( i==0) 569 b=theta ∗ j ; 570 theta2=theta ; 571 572 e l s e 573 b=−(2∗pi−theta ) ∗ j ; 574 theta2=2∗pi−theta ; 575 end 576 %se t funkt ionerna uppdaterar g r a f i k en 577 s e t ( vx , ’ udata ’ , [ x (1 ) , x (3 ) , x (2 ) ] , ’ vdata ’ , [ x (2 ) , x (1 ) , x (3 ) ] ) ; 578 s e t ( vy , ’ udata ’ , [ y (1 ) , y (3 ) , y (2 ) ] , ’ vdata ’ , [ y (2 ) , y (1 ) , y (3 ) ] ) ; 579 s e t ( vz , ’ udata ’ , [ z (1 ) , z (3 ) , z (2 ) ] , ’ vdata ’ , [ z (2 ) , z (1 ) , z (3 ) ] ) ; 580 s e t ( vecx , ’ udata ’ , [ x (1 ) 0 . 5 ] , ’ vdata ’ , [ x (2 ) 0 ] , ’ wdata ’ , [ x (3 ) 0 ] ) ; 581 s e t ( vecy , ’ udata ’ , [ y (1 ) 0 ] , ’ vdata ’ , [ y (2 ) 0 . 5 ] , ’ wdata ’ , [ y (3 ) 0 ] ) ; 582 s e t ( vecz , ’ udata ’ , [ z (1 ) 0 ] , ’ vdata ’ , [ z (2 ) 0 ] , ’ wdata ’ , [ z (3 ) 0 . 5 ] ) ; 583 s e t ( uxyz , ’XData ’ , [ b (1 ) +0.35∗m;0 . 3 5∗m;0 . 3 5∗m] , ’YData ’ , [ 0 . 3 5 ∗ n ; b (2 ) +0.35∗n ; 0 . 3 5∗ n ] , ’ ZData ’ , [ 0 . 3 5 ∗ o ; 0 . 3 5∗ o ; b (3 ) +0.35∗o ] ) 584 585 s e t (u , ’XData ’ ,b (1 )+m∗0 .35 , ’YData ’ ,b (2 )+n ∗0 .35 , ’ ZData ’ ,b (3 )+o ∗0 . 35 ) 586 j 2=j ; 587 theta2=theta ; 588 589 end 590 end 591 p2=p ; 592 end C.2 BR 1 %{ 2 %Detta program ’ar skapat i samband med e t t kandidatpro jekt , 3 %och ’ar menat at t vara en de l i e t t paket av t r e 4 %(VR,BR och SR( detta program ) , d’ar VR s t å r f’or vektorrymden , 5 % BR f’or bivektorrymden och SR f’or spinorrymden ) . 6 7 %F’or BR och SR kr’avs a t t man har quatern ion .m f’or a t t programmen s k a l l 8 %kunna k’ora . SR kr’aver ’aven at t p l a t on i c_so l i d .m f i nn s . 9 10 %Vardera program s k a l l gå a t t anv’anda utan t i l l g ång t i l l de andra , och gå r 11 %att anv’anda utan djupare kunskap i matematiken om bara f’or n’oj e s s k u l l . 12 37 13 %Denna in l edn ing ’ar sk r i v en f’or a t t ge i n s i k t i vad de o l i k a 14 %programmen g’or , vad de ’ar t i l l f’or , hur man anv’ander dem , och hur de ’a r 15 %uppbyggda . 16 %Den ’ar sk r i v en f’or a t t f’or s’oka s å l ångt det gå r e nh e t l i g t 17 %beskr iva samt l i ga t r e program samtid igt , s å 18 %att det i n t e f i n n s behov av at t l’asa in l edn ingen i någon av de andra . 19 20 %Mer s p e c i f i k a d e t a l j e r r e l a t e r ad e t i l l v a r j e kods uppbyggnad ; vad de o l i k a 21 %momenten g’or och va r f’or de s k r i v s på det s’at t de g’or s s k a l l s k r i v a s n’a ra 22 %t i l l h ’orande kodstycke . 23 24 %Kunskaper kr ing programmering tenderar a t t var i e ra , s å jag har 25 %f’or e d r a g i t a t t ta upp " f’or många d e t a l j e r " ’an f’or f å i texten , s å koden 26 %sk a l l vara enke l a t t f’or s t å ’aven utan t i d i g a r e kunskaper . 27 %Jag ’ar s j’al v i n t e mycket av en kodare , och genom att be sk r iva s å 28 %mycket av l og i k en som m’oj l i g t ’ar det f’orhoppn ingsv i s t enk la r e f’or en mer 29 %van at t g’ora f’or’andr ingar denne tycker beh’ovs . 30 31 32 %BR och VR ’ar en v i s u e l l demonstrat ion av hur kvatern ionerna 33 %dubbelt t’acker gruppen SO(3) , som be sk r i v e r r o t a t i o n e r i 3D. 34 %SR ’ar en v i s u a l i s e r i n g av sp inore r , som har egenskapen at t de i n t e 35 %å t e r s t’a l l t s e f t e r 360 graders , utan 720 grader s r o t a t i on 36 %s p e c i e l l t ’ar v’al a t t f’or en spinor−r ep r e s en t a t i on p ’ar p(−1)=−I 37 38 %Programmens s t ruk tu r e r ’ar på många s’at t l i k a ; 39 %Den f’or s t a koden i va r j e program har jag s a t t ut parametrar som ’ar d i t s a t t a 40 %så at t anv’andaren s k a l l kunna j u s t e r a e f t e r datorprestanda och pe r s on l i g a p r e f e r e n s e r 41 %sedan de matematiska/ l o g i s k a objekten , 42 %D’ar e f t e r i n s t a n t i e r a s d i v e r s e geometr i ska ob jekt s a t t i s i na 43 %" g r u n d t i l l s t ånd " . 44 45 %I vardera program f i nn s t r e plan ned på v i l k a e t t rum p r o j i c e r a s 46 %( I BR och SR p r o j i c e r a s "Bivektorrymden " , i VR p r o j i c e r a s " Vektorrymden ") . 47 %Dessutom kommer i vardera plan en punkt i n s t a n t i e r a s 48 %( en bl å s t j’arna ( ’∗ ’ ) ) som i samt l i ga t e x t e r kommer k a l l a s " in t e rakt i onspunkten " , 49 %f’or a t t s’ar s k i l j a den f r ån punkten i BR, som kommer k a l l a s " klotpunkten " . 50 %Planen kommer k a l l a s " i n t e r ak t i on sp l an en " . Planen kommer o f t a be sk r i va s 51 %som att de " t i l l h ’or " det rum som p r o j i c e r a d e s ned på det 52 %( exempelv i s h’ar i VR kan texten "vektorrummets plan " f’orekomma) . 53 %Bland de ob jekt som f i nn s v i s u e l l t r ep r e s en t e rade i planen f i n n s 54 %komponenter som kan i n t e r a g e r a med in te rakt i onspunkte r , 55 %v i l k a kommer k a l l a s ’ i n t e r ak t i on s ob j ek t ’ . 56 %inte rakt i onspunkten gå r a t t f l y t t a , och 57 %genom att komma t i l l r ’ac k l i g t n’ara e t t i n t e r a k t i o n s ob j e k t 38 58 %kommer det a t t f l y t t a s i g s å den hamnar s å n’ara 59 %inte rakt i onspunkten den kan . 60 %in t e r ak t i on sp l an en ’ar a l l t i d x−y , z−x , och y−z plan . 61 Det ’ar v’ar t a t t anm’arka at t jag va l t a t t k a l l a e t t plan z−x . 62 63 %I samt l iga rum f’orekommer en "vektor− och bivektorrymd" 64 %Vektorrymden v i s u e l l a komponenter ’ar t r e stycken vektorer , 65 %som s k a l l r ep r e s en t e r a e t t koordinatystem 66 %(x−axel , y−axe l och en z−axe l ) och i en bredare bem’ark e l s e , vek to re r i 67 %tr e dimens ioner . 68 69 %Bivektorrymden ’ar k l o t med rad i e 2∗ pi 70 %som ’ar en v i s u e l l r e p r e s en t a t i on av enhetskvatern iornerna , v i l k a utg’or 71 %en t r ed imen s i o n e l l s f’ar inb’addad i f y ra dimensioner , och 72 %om b=[b1 b2 b3 ] ’ar en punkt i B(0 ,2∗ pi ) kan den r e l a t e r a s t i l l en s p e c i f i k 73 %kvatern ion v ia b−>exp ( ( b1∗ i+b2∗ j+b3∗k ) /2) 74 %Klote t s f r’amsta komponent ’ar en punkt ( ka l l ad klotpunkt , kommer ib land i kod understryka 75 %att den ’ar r’od , f’or a t t s’ar s k i l j a den f r ån inte rakt ionspunkten , och n’a r jag d i s ku t e r a r 76 %den som en kvatern ion e l l e r vektor kommer jag k a l l a den b) 77 %bo l l en har f’or ’ov r i g t e t t modulus på 4∗ pi ( exp ((4∗ pi ∗ j ) /2)=1) , s å n’ar b kommer "’over " 4∗ pi 78 %kommer den f’or f l y t t a s t i l l e t t motsvarande l’age på andra s idan k l o t e t . 79 %f’or a t t ge en b’at t r e b i l d av var i k l o t e t punkten be f i nne r s i g har 80 %" skuggb i l d e r s a t t s ut , v i l k a b e sk r i v e r b ’ s l p r o j e k t i o n e r på B’ s ax l a r . 81 82 %I VR ’ar det vektorrummet som ’ar p r o j i c e r a t på i n t e r ak t i on sp l an en . 83 %vektorrummets i n t e r a k t i o n s ob j e k t ’ar de o l i k a vektore rnas p i l s p e t s a r ; 84 %n’ar in t e rakt i onspunkten kommer n’ara p i l s p e t s e n kommer dess vektor 85 %ro t e r a s in mot interakt ionspunkten , 86 %va r e f t e r he la koordninatsystemet kommer ro t e r a e f t e r samma axe l och 87 %med samma v i nk e l u t s l a g . 88 %Varje system av koord ina tax l a r (x ’ , y ’ , z ’ ) , motsvarar en r o t a t i on sma t r i s : 89 %[ x ’ y ’ z ’ ] ( e f te r som x ’ y ’ z ’ ’ar ortonormerade , v i har 90 %R[ e1 e2 e3 ]=[R( e1 ) R( e2 ) R( e3 ) ]=[x ’ y ’ z ’ ] 91 %I f r ån denna r o t a t i on sma t r i s kan man f å ut en b ivekto r 92 %genom att betrakta matr i sens " c l i f f o r d t r a c e " , v i l k e t v i kan 93 %r e l a t e r a t i l l en s p e c i f i k axe l och en s p e c i f i k v inke l , v i l k e t 94 %då ’ar en b−vektor som motsvarar k lotpunktens nya l’age i bivektorrymden . 95 96 %Det som t yd l i g t m’arks ’ar a t t ’aven då ro ta t i on s sy s t emet r o t e r a t 360 grader 97 %kommer i n t e b−vektorn ha å t e rg å t t t i l l [ 0 0 0 ] , utan det ’ar f’or s t e f t e r 98 %två r o t a t i o n e r som systemet har å t e r s t’a l l t s h e l t . 99 100 101 %I BR ’ar det bivektorrummet som ’ar p r o j i c e r a t på in t e rak t i on sp l anen , och 102 %in t e r a k t i o n s ob j e k t e t ’ar klotpunkten . Då in te rakt i onspunkten kommer n’a ra 103 %klotpunkten f l y t t a s klotpunkten t i l l i n t e rak t i on spunktens l’age . 39 104 %I var j e i n t e r a k t i o n sp l an f i n n s ’aven en c i r k e l ut r i tad , som motsvarar 105 %randen av BR. 106 %klotpunkten motsvarar (’ar ) ju en b−vektor , v i l k e t v i kan r e l a t e r a t i l l en enhets− 107 %kvatern ion q=exp (b/2) , d’ar v i nu kan ro t e r a koord inatsystemet 108 %med qvq^−1. Mer d e t a l j r i k f’or k l a r i n g f i n n s i p ro j ek t rappor t en . 109 %I koden i s i g anv’ands e t t b e f i n t l i g t program som fanns i quatern ion .m, 110 %som jag e j vet hur den ’ar uppbyggd . 111 112 %I SR har v i spinorrummet , v i l k e t l i k t BR ’ar e t t k l o t av rad i e 2∗pi , 113 %var i det l i g g e r f y ra stycken punkter ( å t e r i g e n ’ s t j’arnor ’ , (∗ ) ) 114 %som motsvarar sp i no r e r . 115 %Spinore r b e sk r i v s o f t a som vekto re r i C^2 , d’ar det f i n n s en 116 %kvat e rn i on r ep r e s en ta t i on p(q )=[z w;−w’ z ’ ] , som ’ verkar ’ på 117 %sp inore rna . I SR gå r v i ’over t i l l R^4 , oh e f te r som p bevarar l’angder 118 %kommer " enhe t s sp ino r e r " be f inna s i g i s f’aren , s å v i r e p r e s en t e r a r 119 %sp inore rna i någon mening som om de vore " kvate rn ione r " . 120 %I SR ’ar det å t e r i g e n BR som p r o j i c e r a s på in t e rak t i on sp l anen , med 121 %samma in t e r ak t i on s sy s t em som i BR, och n’ar b o l l e n s r’or e l s e r e s u l t e r a r 122 %i f’or’andr ingar av kvatern ionens l’age genom det p(q ) som beskrevs ovan . 123 124 %f’or a t t hj’alpa v i s u a l i s e r i n g e n av sp ino r e rna s l’agen f i n n s ’aven 125 %pro j ek t i on sp l an som be sk r i v e r dess l’agen i xy och zx planen , s a t t a i 126 %deras k lot , på niv å erna z=−10 r e sp ek t i v e x=10, 127 128 %samt l iga i n t e r a k t i o n e r mellan program och anv’andare 129 %i va r j e kod hanteras inom en whi le loop , som a l l t i d ’ar s a t t t i l l ’ true ’ . 130 %inte rak t i onspunkte rna ’ar " impoint"−ob jekt ( e l l e r i 2019 : drawpoint ) . 131 %Som i n s t a n t i e r a s med p lanet det b e f i nne r s i g i . 132 %Dessa k a l l a s på i loopen med en " get " 133 %(F’or den ovane : get / g e t t e r s och s e t / s e t t e r s ’ar 134 %i programmering typ i ska funkt i one r a t t ge k l a s s e r . En " get " l å t e r 135 %anv’andaren l’asa av v a r i a b l e r /h’amta in fo rmat ion som e t t ob jekt har 136 %( i detta f a l l har v i en impoint , vars v a r i ab e l v i p lockar ’ar " Pos i t i on " 137 %Den kan i n s t a n t i e r a s v ia h . impoint ( ) ; , och po s i t i on en f å s då 138 %via h . g e tPo s i t i on . ) ) 139 %inte rak t i on spunktens l’age sparas , och en s e r i e i f−s a t s e r k o l l a r om 140 %den nuvarande punkten ’ar n’ara nå got i n t e r a k t i o n s ob j e k t . 141 %po in td i s t anc e garante ra r a t t de i n t e r ak t i on spunk t e r som in t e v id r’or s 142 %e j kan i n t e r a g e r a med s i t t p lans i n t e r ak t i on s ob j e k t , v i l k e t hade g j o r t 143 %koden svå rnav igerad . 144 145 %Det f i n n s en de l k r i t e r i e r u t sa t t a f’or a t t se t i l l a t t s å f å "on’odiga " 146 %loopar g’or s som m’oj l i g t f’or a t t snabba upp programmetn som i nul’aget 147 %’ar r’at t l ångsamma . 148 %Om inte rakt i onspunkten kommer n’ara e t t objekt , ber’aknar programmet v i l k a ope ra t i one r 149 %som s k a l l u t f’ora s . 150 %d’ar e f t e r har va r j e programs whi l e loop en s e r i e set−f unk t i one r ( en " s e t "/ s e t t e r 151 %l å t e r anv’andaren ans’at ta e t t nytt v’arde i e t t objekt , 152 % exempelv i s : s e t (u , ’ XData ’ , b (1 ) , ’YData ’ , b (2 ) , ’ ZData ’ , b (3 ) ) s’at t e r ut 153 %klotpunkten i dess nya l’age i BR. ) v i l k a uppdaterar a l l a g r a f i s k a ob jekt . 40 154 %} 155 156 c l e a r a l l ; c l f ; 157 158 159 %nedan in t r oduce ra s konstanter som anv’andaren kan v’al j a a t t 160 %ju s t e r a e f t e r behov , beroende på dennes dator s prestandakrav osv . 161 %{ 162 %Detta program (BR) verkar vara mindre kr’avande ’an VR 163 %så det f i n n s mer f r i h e t i hur man v i l l ans’at ta konstanterna h’ar , och 164 %jag har inga d i r ek ta rekommendationer , om anv’andaren ’ar i n t r e s s e r a d 165 %b’or denne t e s t a s j’al v . 166 167 %1. ’ pause length ’ bes t’ammer , i sekunder , den t i d det s k a l l ta mellan va r j e 168 %i t e r a t i o n av at t l’asa av vektorpunktens l’age och po s i t i o n e r a vektorsystemet och 169 %klotpunkten e f t e r det . 170 171 %2. ’ d i s t ’ b e s k r i v e r f r ån v i l k e t avst ånd de b l å punkterna 172 %akt i v e r a r p i l a rna s å at t de kan f’or f l y t t a s 173 174 %3. Po in td i s tance uts’at t e r e t t krav 175 %som begr’ansar an t a l e t p r o c e s s e r som g’or s i whi l e loopen , genom att 176 %kon t r o l l e r a v i l k e t avst ånd den nuvarande in te rakt i onspunkten har 177 %r e l a t i v t den t i d i g a r e i t e r a t i on spunk t en 178 %dvs om man s’at t e r po in td i s t anc e 0 .01 må s t e in t e rakt i onspunkten ha f’o r f l y t t a t s 179 %0.01 enheter f r ån det l’age den var sedan sena s t e gra f ikuppdate r ing , innan 180 %programmet k on t r o l l e r a r huruvida klotpunkten s k a l l f l y t t a s r e l a t i v t 181 %inte rak t i on spunktens nuvarande l’age . 182 183 %Den g’or ’aven s å at t in t e rak t i onspunkte rna 184 %in t e på verkar systemet om in t e anv’andaren r’or vid dem . Om man 185 %s’at t e r po in td i s t anc e t i l l n o l l f i n n s det ingen f’or s’akr ing t i l l detta . 186 187 %( Jag t r o r detta ’ar pga at t impoint , som gene r e ra r in te rakt ionspunkte rna , 188 %verkar f l y t t a s i g s j’alv , om ’an v’al d i g t l i t e , i s i n egen uppdater ing . 189 %( jag ’ar os’aker på dessa d e t a l j e r , kan ju ocks å tex vara r e l a t e r a t t i l l 190 %gra f i k e n s uppdater ingar ) . ) 191 %} 192 d i s t =1.5 ; 193 pause length =0.05; 194 po in td i s t anc e =0.005; 195 196 %nedan i n s t a n t i e r a s de l o g i s k a /matematiska objekten 197 198 %b ’ar punkten i klotrymden som , som r e l a t e r a r t i l l kvaternionrummet 199 %via q=exp (b/2) . H’ar r e l a t e r a r den t i l l r o t a t i o n e r med T(v )=qvq^(−1) 200 %( punkten kommer i texten k a l l a s " klotpunkten " då dess v i s u e l l a a spekte r be t rakta s 201 % och b om jag s k a l l be sk r iva den som e t t matematiskt ob jekt ) 202 203 b=[0 0 0 ] ; 41 204 x= [1 , 0 , 0 ] ; 205 y= [0 , 1 , 0 ] ; 206 z = [ 0 , 0 , 1 ] ; 207 208 209 %koden nedan r i t a r ut k l o t e t i v i l k e t klotpunkten (b) be f i nne r s i g 210 211 f i g u r e (1 ) 212 213 s e t ( gcf , ’ Po s i t i on ’ , [ 100 , 100 , 1000 , 500 ] ) 214 215 216 subplot ( 1 , 2 , 1 ) 217 218 [m n o]= sphere ; %t o t a l sphere bdry => q=−1 219 s u r f (2∗ pi ∗m,2∗ pi ∗n ,2∗ pi ∗o , ’ f a c e c o l o r ’ , ’ b lue ’ , ’ f a c ea lpha ’ , . 3 , ’ EdgeAlpha ’ , 0 ) ; 220 hold on 221 s u r f ( p i ∗m, pi ∗n , p i ∗o , ’ f a c e c o l o r ’ , ’ green ’ , ’ f a c ea lpha ’ , . 5 , ’ EdgeAlpha ’ , 0 ) ; 222 hold on 223 phi=l i n s p a c e (0 ,2∗ pi ) ; 224 x l ab e l ( ’ x ’ ) 225 y l ab e l ( ’ y ’ ) 226 z l a b e l ( ’ z ’ ) 227 t i t l e ( ’ Bivektorrymden BR’ , ’ FontSize ’ ,14) ; 228 229 p lo t (2∗ pi ∗ cos ( phi ) ,2∗ pi ∗ s i n ( phi ) , ’ b lack ’ ) % c i r c l e f o r v i s u a l i s a t i o n 230 hold on 231 p lo t3 ([−10 1 0 ] , [ 0 0 ] , [ 0 0 ] , ’ b lack ’ , [ 0 0] , [−10 10 ] , [ 0 0 ] , ’ b lack ’ , [ 0 0 ] , [ 0 0 ] , [−10 10 ] , ’ b lack ’ ) 232 233 %klotpunkten r i t a s ut , 234 %samt t r e stycken " skuggb i l d e r " ; p r o j e k t i o n e r av b på klotrummets x , y och z ax la r 235 %ut r i t ad e i gr å ska l a med svag l j u s i n s t’al l n i n g , f’or a t t ge mer i n s i k t 236 %i var inom klotrummet bo l l en be f i nne r s i g i . 237 %( bo l l en s t å r s i s t i koden s å at t den i n t e ’ove r t’acks av skuggb i lde rna ) 238 239 uxyz=plo t3 ( [ 0 0 0 ] , [ 0 0 0 ] , [ 0 0 0 ] , ’ ∗ ’ , ’ Color ’ , [ 0 . 5 0 . 5 0 . 5 ] ) ; 240 u=su r f ( 0 . 35∗m,0 . 3 5∗n , 0 . 3 5∗ o , ’ f a c e c o l o r ’ , ’ red ’ , ’ f a c ea lpha ’ ,1 , ’ EdgeAlpha ’ , 0 ) ; 241 242 g r id on 243 ax i s ([−7 7 −7 7 −7 7 ] ) 244 ax i s equal 245 hold on 246 247 subplot ( 1 , 2 , 2 ) ; 248 249 %Koden nedan r i t a r ut vektorsystemet som ro t e r a s av 250 %den kvatern ion (q ) som be sk r i v s av klotpunkten v ia q=exp (b/2) . 251 vec1=quiver3 (0 , 0 , 0 , x (1 ) , x (2 ) , x (3 ) , ’b ’ ) ; hold on ; 252 vec2=quiver3 (0 , 0 , 0 , y (1 ) , y (2 ) , y (3 ) , ’ r ’ ) ; 253 vec3=quiver3 (0 , 0 , 0 , z (1 ) , z (2 ) , z (3 ) , ’ g ’ ) ; 254 255 %et t mindre vektorsystem som v i s a r vektor sys temets u r sp rung spo s i t i on 42 256 %(b=0, e l l e r [ x , y , z ]=[1 0 0 ] , [ 0 1 0 ] , [ 0 0 1 ] ) 257 smal lx=quiver3 (−0.5 ,−0.5 ,−1 ,0.5 ,0 ,0 , ’b ’ ) ; 258 smal ly=quiver3 (−0.5 ,−0.5 ,−1 ,0 ,0 .5 ,0 , ’ r ’ ) ; 259 smal l z=quiver3 (−0.5 ,−0.5 ,−1 ,0 ,0 ,0 .5 , ’ g ’ ) ; 260 261 262 xlim ([−1.2 1 . 2 ] ) 263 ylim ([−1.2 1 . 2 ] ) 264 z l im ([−1.2 1 . 2 ] ) 265 t i t l e ( ’ Vektorrymden VR’ , ’ FontSize ’ ,14) ; 266 267 %kod som ’ p r o j i c e r a r ’ bollrymden på x−y , z−x och y−z planen , 268 %inom v i l k a t r e separata punkter (h’ar ka l l ade i n t e r ak t i on spunk t e r ( de b l å punkter ) 269 %v i l k a l å t e r d ig manipulera k lotpunktens ( den r’oda ) l’age . 270 %Om man f’or f l y t t a r e t t p lans in t e rak t i on spunkt s å a t t den hamnar 271 %t i l l r ’ac k l i g t n’ara klotpunkten ( avst åndet bes t’ams av ’ d i s t ’ ) kommer 272 %klotpunkten at t f’or f l y t t a s t i l l i n t e rak t i on spunktens p l a t s . 273 274 %c i r k e l n i n r i t a t i p lanet b e s k r i v e r avst åndet punkten har f r ån 275 %k l o t e t s rand i detta plan , dess s t o r l e k uppdateras e f t e r 276 %klotpunktens nya l’agen . 277 278 %( koden f’or samt l i ga plan ’ar i al lm’anhet analoga ) 279 280 %genom att g’ora subp lot ten som e t t objekt , kan den dek l a r e r a s 281 %t i l l en " parent " f’or impointen , v i l k e t t i l l å t e r mig at t bes t’amma 282 %impointens l’age i n u t i koden 283 %xyz=subplot ( 3 , 4 , [ 9 1 0 ] ) ; 284 285 f i g u r e (2 ) ; 286 s e t ( gcf , ’ Po s i t i on ’ , [ 100 , 100 , 600 , 200 ] ) 287 288 bxyz=p lo t ( [ b (1 )−20 b (3 ) b (2 ) +20 ] , [ b (2 ) b (1 ) b (3 ) ] , ’ red ∗ ’ ) ; hold on 289 290 c i r c z=p lo t (2∗ pi ∗ cos ( phi )−20 ,2∗ pi ∗ s i n ( phi ) , ’ g ’ ) ; 291 292 c i r c y=p lo t (2∗ pi ∗ cos ( phi ) ,2∗ pi ∗ s i n ( phi ) , ’ r ’ ) ; 293 294 c i r c x=p lo t (2∗ pi ∗ cos ( phi )+20 ,2∗ pi ∗ s i n ( phi ) , ’ b ’ ) ; 295 296 xlim ([−30 30 ] ) ; 297 ylim ([−8 8 ] ) ; 298 ax i s ([−30 30 −10 10 ] ) 299 300 txtxy = ’x−y plan ’ ; 301 txtzx = ’ z−x plan ’ ; 302 txtyz = ’y−z plan ’ ; 303 t ex t (−23 ,−7.5 , txtxy ) ; 304 t ex t (−3 ,−7.5 , txtzx ) ; 305 t ex t (17 ,−7.5 , txtyz ) ; 306 t i t l e ( ’ i n t e r a k t i v a plan ’ , ’ FontSize ’ ,12) ; 307 308 h=impoint ( gca , [ 0 7 ] ) ; 309 310 p=[0 7 ] ; 43 311 p2=p ; 312 313 d i s t=d i s t ^2; 314 315 316 %inom whi le loopen d e f i n i e r a s a l l i n t e r a k t i o n mellan programmet 317 %och anv’andare . F’or s t i n i t i e r a s programmets get−f unk t i one r f’or 318 %att f i nna in t e rak t i on spunkt e rna s nuvarande l’agen , v a r e f t e r 319 %i f s a t s e r k o l l a r om inte rak t i onspunkte rna ’ar t i l l r ’ac k l i g t n’ara klotpunkten 320 %f’or a t t klotpunkten s k a l l f’or f l y t t a s , v a r e f t e r b o l l e n s l’age j u s t e r a s 321 %och vektorsystemet r o t e r a s e f t e r den b o l l i rummet som va l t s ut . 322 323 bt=b ; 324 whi le ( t rue ) 325 pause ( pause length ) 326 p=h . g e tPo s i t i on ; 327 328 i f ( po in td i s tance<=norm(p−p2 ) ) ; 329 i f ( ( p (1 )−b (1)+20)^2+(p (1 )−b (2) )^2<=d i s t ) 330 b (1)=p (1) +20; 331 b (2)=p (2) ; 332 e l s e i f ( ( p (1 )−b (3) )^2+(p (2 )−b (1) )^2<=d i s t ) 333 b (3)=p (1) ; 334 b (1)=p (2) ; 335 e l s e i f ( ( p (1 )−b (2)−20)^2+(p (2 )−b (3) )^2<=d i s t ) 336 b (2)=p (1) −20; 337 b (3)=p (2) ; 338 end 339 340 %Då b ’ s norm ( phi ) ’ar s t’or r e ’an 2∗ pi r e f l e k t e r a s den genom den l i n j e som 341 %de la r dess r i k t n i n g med s t o r l e k en (4∗ pi−phi ) 342 343 %{ 344 %Om phi=2∗pi+phi ’ , phi ’>0 f å r v i phi−>phi2=2∗pi−phi ’ , e f t e r som v i har 345 %modulo 2∗pi , motsvarar ju denna punkt samma kvatern ion som man drog t i l l , 346 %f a s t b s k a l l hå l l a s inom k l o t e t . 347 %} 348 349 i f (2∗ pi<=norm(b) ) 350 b=−(4∗pi−norm(b) ) ∗b/norm(b) ; 351 end 352 353 %i f ( b a l l d i s t <(bt (1 )−b (1) )^2+(bt (2 )−b (2) )^2+(bt (3 )−b (3) ) ^2) 354 355 %uppdaterar s t o r l e k en hos c i r k l a r n a i planen e f t e r b−vektorns nya l ’age 356 357 358 rx=sq r t ( (2∗ pi )^2−b (1) ^2) ; 359 ry=sq r t ( (2∗ pi )^2−b (2) ^2) ; 360 rz=sq r t ( (2∗ pi )^2−b (3) ^2) ; 361 44 362 s e t ( c i r cx , ’XData ’ , rx∗ cos ( phi )+20, ’YData ’ , rx∗ s i n ( phi ) ) 363 s e t ( c i r cy , ’XData ’ , ry∗ cos ( phi ) , ’YData ’ , ry∗ s i n ( phi ) ) 364 s e t ( c i r c z , ’XData ’ , r z ∗ cos ( phi )−20, ’YData ’ , r z ∗ s i n ( phi ) ) 365 366 %se t funkt i one r som uppdaterar k lotpunktens l’age 367 s e t ( bxyz , ’XData ’ , [ ( b (1 )−20) b (3 ) b (2 ) +20] , ’YData ’ , [ b (2 ) b (1 ) b (3 ) ] ) ; 368 s e t (u , ’XData ’ ,b (1 )+m∗0 .35 , ’YData ’ ,b (2 )+n ∗0 .35 , ’ ZData ’ ,b (3 )+o ∗0 . 35 ) 369 s e t ( uxyz , ’XData ’ , [ b (1 ) 0 0 ] , ’YData ’ , [ 0 b (2 ) 0 ] , ’ ZData ’ , [ 0 0 b (3 ) ] ) 370 371 %kvatern ionen exp (b/2) ta s ut , och RotateVectorQ ’ar en funkt ion 372 %i quatern ion .m som ro t e r a r systemet g i v e t en kvatern ion 373 q=exp ( quatern ion (0 , b (1 ) /2 ,b (2 ) /2 ,b (3 ) /2) ) ; 374 x=RotateVectorQ (q , [ 1 0 0 ] ) ; 375 y=RotateVectorQ (q , [ 0 1 0 ] ) ; 376 z=RotateVectorQ (q , [ 0 0 1 ] ) ; 377 378 %se t funkt i one r som uppdaterar vektorrummet 379 s e t ( vec1 , ’ udata ’ , x (1 ) , ’ vdata ’ , x (2 ) , ’ wdata ’ , x (3 ) ) ; 380 s e t ( vec2 , ’ udata ’ , y (1 ) , ’ vdata ’ , y (2 ) , ’ wdata ’ , y (3 ) ) ; 381 s e t ( vec3 , ’ udata ’ , z (1 ) , ’ vdata ’ , z (2 ) , ’ wdata ’ , z (3 ) ) ; 382 bt=b ; 383 %end 384 p2=p ; 385 end 386 end C.3 SR 1 c l e a r a l l ; c l f ; 2 3 %{ 4 %Detta program ’ar skapat i samband med e t t kandidatpro jekt , 5 %och ’ar menat at t vara en de l i e t t paket av t r e 6 %(VR,BR och SR( detta program ) , d’ar VR s t å r f’or vektorrummet , BR f’or 7 %Bivektorrummet 8 %och SR f’or spinorrummet ) . 9 10 %F’or a t t BR och SR s k a l l kunna k’ora kr’avs a t t man laddar hem quatern ion .m 11 %F’or SR kr’avs ’aven p l a t on i c_so l i d .m 12 13 %Vardera program s k a l l gå a t t anv’anda utan t i l l g ång t i l l de andra , och gå r 14 %att anv’anda utan djupare kunskap i matematiken om bara f’or n’oj e s s k u l l . 15 16 %Denna in l edn ing ’ar sk r i v en f’or a t t ge i n s i k t i vad de o l i k a 17 %programmen g’or , vad de ’ar t i l l f’or , hur man anv’ander dem , och hur de ’a r 18 %uppbyggda . 19 %Den ’ar sk r i v en f’or a t t f’or s’oka s å l ångt det gå r e nh e t l i g t 20 %beskr iva samt l i ga t r e program samtid igt , s å 21 %att det i n t e f i n n s behov av at t l’asa in l edn ingen i någon av de andra . 45 22 23 %Mer s p e c i f i k a d e t a l j e r r e l a t e r ad e t i l l v a r j e kods uppbyggnad ; vad de o l i k a 24 %momenten g’or och va r f’or de s k r i v s på det s’at t de g’or s s k a l l s k r i v a s n’a ra 25 %t i l l h ’orande kodstycke . 26 27 %Kunskaper kr ing programmering tenderar a t t var i e ra , s å jag har 28 %f’or e d r a g i t a t t ta upp " f’or många d e t a l j e r " ’an f’or f å i texten , s å koden 29 %sk a l l vara enke l a t t f’or s t å ’aven utan t i d i g a r e kunskaper . 30 31 %BR och VR ’ar en v i s u e l l demonstrat ion av hur kvatern ionerna 32 %dubbelt t’acker gruppen SO(3) , som be sk r i v e r r o t a t i o n e r i 3D. 33 %SR ’ar en v i s u a l i s e r i n g av sp inore r , som på v i s a r r o t a t i o n e r s "Spin 2 minne " . 34 35 %Programmens s t ruk tu r e r ’ar på många s’at t l i k a ; 36 %Den f’or s t a koden i va r j e program har jag s a t t ut parametrar som ’ar d i t s a t t a 37 %så at t anv’andaren s k a l l kunna j u s t e r a e f t e r datorprestanda och pe r s on l i g a p r e f e r en s e r , 38 %sedan s t å r s å många som m’oj l i g t av de l o g i s k a /matematiska objekten , 39 %vektore r osv 40 41 %D’ar e f t e r i n s t a n t i e r a s d i v e r s e geometr i ska ob jekt s a t t i s i na 42 %" s t a r t l’agen " . 43 44 %I vardera program f i nn s t r e plan ned på v i l k a e t t rum p r o j i c e r a s 45 %( I BR och SR p r o j i c e r a s "Bivektorrymden " , i VR p r o j i c e r a s " Vektorrummet ") . 46 %Dessutom kommer i vardera plan en punkt i n s t a n t i e r a s 47 %( en bl å s t j’arna ( ’∗ ’ ) ) som i samt l i ga t e x t e r kommer k a l l a s " in t e rakt i onspunkten " , 48 %f’or a t t s’ar s k i l j a den f r ån punkten i BR, som kommer k a l l a s " klotpunkten " . 49 %Planen kommer k a l l a s " i n t e r ak t i on sp l an en " och kommer o f t a be sk r i va s 50 %som att de " t i l l h ’or " det rum som p r o j i c e r a d e s ned på det 51 %( exempelv i s h’ar i VR kan texten "vektorrummets plan " f’orekomma) . 52 %Bland de ob jekt som f i nn s v i s u e l l t r ep r e s en t e rade i planen f i n n s 53 %komponenter som kan i n t e r a g e r a med in te rakt i onspunkte r , 54 %v i l k a kommer k a l l a s ’ i n t e r ak t i on s ob j ek t ’ . 55 %inte rak t i onspunkte rna gå r a t t f l y t t a i det plan i v i l k e t det ’ar d e f i n i e r a t 56 %Genom att komma t i l l r ’ac k l i g t n’ara e t t i n t e r a k t i o n s ob j e k t 57 %kommer f’oremå l e t a t t f l y t t a s i g s å den hamnar på samma p l a t s som 58 %inte rakt i onspunkten . 59 %in t e r ak t i on sp l an en ’ar a l l t i d x−y , z−x , och y−z planen . 60 %Det ’ar v’ar t a t t anm’arka at t jag va l t a t t k a l l a e t t plan z−x . Det var 61 %de l v i s f’or a t t behå l l a o r i e n t e r i n g och s å at t samt l i ga g r u n d t i l l s t ånd 62 %hos vektorrummets plan har samma form , samt at t det f i n n s nå got t r e v l i g t 63 %’over lapp i meningen at t n’ar man i Spin−Algebran o f t a n’amner 64 %bivektorn e13 som e31 ( e l l e r snarare har v i i , j , k−> −e23 ,−e31 ,−e12 ) . 65 66 %"Vektorrummet" och "Bivektorrummet" r ep r e s en t e r a s i samt l i g kod 46 67 %vektorrummets v i s u e l l a komponenter ’ar t r e stycken vektorer , 68 %som s k a l l r ep r e s en t e r a e t t koordinatystem 69 %(x−axel , y−axe l och en z−axe l ) och i en bredare bem’ark e l s e , vek to re r i 70 %tr e dimens ioner . 71 %Bivektorrummet best å r av e t t k l o t med rad i e 2∗ pi 72 %som ’ar en v i s u e l l r e p r e s en t a t i on av enhetskvatern iornerna , v i l k a utg’or 73 %en t r ed imen s i o n e l l s f’ar inb’addad i f y ra dimensioner , och 74 %om b=[b1 b2 b3 ] ’ar en punkt i B(0 ,2∗ pi ) kan den r e l a t e r a s t i l l en s p e c i f i k 75 %kvatern ion v ia b−>exp ( ( b1∗ i+b2∗ j+b3∗k ) /2) 76 %Bol l ens f r’amsta komponent ’ar en punkt ( ka l l ad klotpunkt , kommer ib land i kod understryka 77 %att den ’ar r’od , f’or a t t s’ar s k i l j a den f r ån inte rakt ionspunkte rna , och n’ar jag d i s ku t e r a r 78 %den som en kvatern ion e l l e r vektor kommer jag k a l l a den b) 79 %bo l l en har f’or ’ov r i g t e t t modulus på 4∗ pi ( exp ((4∗ pi ∗ j ) /2)=1) , s å n’ar b kommer "’over " 4∗ pi 80 %kommer den f’or f l y t t a s t i l l e t t motsvarande l’age på andra s idan k l o t e t . 81 %som be sk r i v e r en s p e c i f i k punkt i k l o t e t . 82 %f’or a t t ge en b’at t r e b i l d av var i k l o t e t punkten be f i nne r s i g har 83 %" skuggb i l d e r s a t t s ut , v i l k a b e sk r i v e r b ’ s p r o j e k t i on e r på Bivektorrymdens ax la r . 84 85 %I VR ’ar det vektorrummet som ’ar p r o j i c e r a t på i n t e r ak t i on sp l an en . 86 %vektorrummets i n t e r a k t i o n s ob j e k t ’ar de o l i k a vektore rnas p i l s p e t s a r ; 87 %n’ar in t e rakt i onspunkten kommer n’ara p i l s p e t s e n kommer dess vektor f l y t t a s 88 %mot punkten på s å s’at t a t t vektorns l’angd i n t e 89 %’andras , dvs den r o t e r a r mot inte rakt ionspunkten , 90 %va r e f t e r he la koordninatsystemet kommer ro t e r a e f t e r samma axe l och 91 %med samma v i nk e l u t s l a g . 92 %Varje system av koord ina tax l a r (x ’ , y ’ , z ’ ) , motsvarar en r o t a t i on sma t r i s : 93 %[ x ’ y ’ z ’ ] ( e f te r som x ’ y ’ z ’ ’ar ortonormerade , v i har 94 %R[ e1 e2 e3 ]=[R( e1 ) R( e2 ) R( e3 ) ]=[x ’ y ’ z ’ ] 95 %I f r ån denna r o t a t i on sma t r i s kan man f å ut en vektor i Bivektorrymden 96 %genom att betrakta matr i sens " c l i f f o r d t r a c e " , v i l k e t v i kan 97 %r e l a t e r a t i l l en s p e c i f i k axe l och en s p e c i f i k v inke l , v i l k e t 98 %då ’ar en b−vektor som motsvarar k lotpunktens nya l’age i bollrummet . 99 100 %Det som t yd l i g t m’arks ’ar a t t ’aven då ro ta t i on s sy s t emet r o t e r a t 360 grader 101 %kommer i n t e b−vektorn ha å t e rg å t t t i l l [ 0 0 0 ] , utan det ’ar f’or s t e f t e r 102 %två r o t a t i o n e r som systemet har å t e r s t’a l l t s h e l t . 103 104 105 %I BR ’ar det bollrummet som ’ar p r o j i c e r a t på in t e rak t i on sp l anen , och 106 %in t e r a k t i o n s ob j e k t e t ’ar klotpunkten . Då in te rakt i onspunkten kommer n’a ra 107 %klotpunkten f l y t t a s klotpunkten t i l l i n t e rak t i on spunktens l’age . 108 %I var j e i n t e r a k t i o n sp l an f i n n s ’aven en c i r k e l ut r i tad , som motsvarar 109 %randen av BR. 110 %klotpunkten motsvarar (’ar ) ju en b−vektor , v i l k e t v i kan r e l a t e r a t i l l en enhets− 111 %kvatern ion q=exp (b/2) , d’ar v i nu kan ro t e r a koord inatsystemet 47 112 %med qvq^−1. Mer d e t a l j r i k f’or k l a r i n g f i n n s i p ro j ek t rappor t en . 113 %I koden i s i g anv’ands e t t b e f i n t l i g t program som fanns i quatern ion .m, 114 %som jag e j vet hur den ’ar uppbyggd . 115 116 %I SR har v i spinorrummet , v i l k e t l i k t BR ’ar e t t k l o t av rad i e 2∗pi , 117 %var i det l i g g e r f y ra stycken punkter ( å t e r i g e n ’ s t j’arnor ’ , (∗ ) ) 118 %som motsvarar sp i no r e r . 119 %Spinore r b e sk r i v s o f t a som vekto re r i C^2 , d’ar det f i n n s en 120 %kvat e rn i on r ep r e s en ta t i on p(q )=[z w;−w’ z ’ ] , som ’ verkar ’ på 121 %sp inore rna . I SR gå r v i ’over t i l l R^4 , oh e f te r som p bevarar l’angder 122 %kommer " enhe t s sp ino r e r " be f inna s i g i s f’aren , s å v i r e p r e s en t e r a r 123 %sp inore rna i någon mening som om de vore " kvate rn ione r " . 124 %I SR ’ar det å t e r i g e n BR som p r o j i c e r a s på in t e rak t i on sp l anen , med 125 %samma in t e r ak t i on s sy s t em som i BR, och n’ar b o l l e n s r’or e l s e r e s u l t e r a r 126 %i f’or’andr ingar av kvatern ionens l’age genom det p(q ) som beskrevs ovan . 127 128 %f’or a t t hj’alpa v i s u a l i s e r i n g e n av sp ino r e rna s l’agen f i n n s ’aven 129 %" skuggb i l d e r " , men e f te r som det inneb’ar a t t spinorrymden har 16 stycken 130 %v i s u a l i s e r a d e punkter , ’ar det va lba r t a t t s’at ta på dem . 131 %det f i n n s ’aven p r o j e k t i on e r av sp inore rna ned på " go lv e t " och ena 132 %"v’aggen " , f’or a t t ge mer i n s i k t i deras l’agen . Den ’ar s a t t som "på" om 133 %anv’andaren i n t e s t’anger av dem . 134 135 136 %samt l iga i n t e r a k t i o n e r mellan program och anv’andare 137 %i va r j e kod hanteras inom en whi le loop , som a l l t i d ’ar s a t t t i l l ’ true ’ . 138 %inte rak t i onspunkte rna ’ar " impoint"−ob jekt . 139 %Som i n s t a n t i e r a s s t rax e f t e r p lanet det b e f i nne r s i g i . 140 %Dessa k a l l a s på i loopen med en " get " 141 %(F’or den ovane : get / g e t t e r s och s e t / s e t t e r s ’ar 142 %i programmering typ i ska funkt i one r a t t ge k l a s s e r . En " get " l å t e r 143 %anv’andaren l’asa av v a r i a b l e r /h’amta in fo rmat ion som e t t ob jekt har 144 %( i detta f a l l har v i en impoint , vars v a r i ab e l v i p lockar ’ar " Pos i t i on " 145 %Den kan i n s t a n t i e r a s v ia h . impoint ( ) ; , och po s i t i on en f å s då 146 %via h . g e tPo s i t i on . ) ) 147 %inte rak t i on spunktens l’age sparas , och en s e r i e i f−s a t s e r k o l l a r om 148 %den nuvarande punkten ’ar n’ara nå got i n t e r a k t i o n s ob j e k t . 149 %po in td i s t anc e garante ra r a t t de i n t e r ak t i on spunk t e r som in t e v id r’or s 150 %e j kan i n t e r a g e r a med s i t t p lans i n t e r ak t i on s ob j e k t , v i l k e t hade g j o r t 151 %programmet svå rnav i g e r a t . 152 %} 153 154 %nedan in t r oduce ra s en de l konstanter som anv’andaren kan v’al j a a t t 155 %ju s t e r a e f t e r behov , beroende på dennes dator s prestandakrav osv . 156 %{ 157 158 %1. ’ pauselength ’ bes t’ammer , i sekunder , den t i d det s k a l l ta mellan va r j e 159 %i t e r a t i o n av at t l’asa av vektorpunktens l’age och po s i t i o n e r a vektorsystemet och 160 %klotpunkten e f t e r det . 161 162 48 163 %2. ’ d i s t ’ b e s k r i v e r f r ån v i l k e t avst ånd inte rakt i onspunkten s k a l l vara 164 %f r ån någon av klotpunktens p r o j e k t i on e r innan r’or e l s e ak t i v e r a s . 165 166 %3. Po in td i s tance uts’at t e r e t t krav 167 %som begr’ansar an t a l e t p r o c e s s e r som g’or s i whi l e loopen , genom att 168 %kon t r o l l e r a v i l k e t avst ånd den nuvarande in te rakt i onspunkten har 169 %r e l a t i v t den t i d i g a r e i t e r a t i on spunk t en 170 %dvs om man s’at t e r po in td i s t anc e 0 .01 må s t e in t e rakt i onspunkten ha f’o r f l y t t a t s 171 %0.01 enheter f r ån det l’age då klotpunkten senas t f l y t t ad e s , innan 172 %programmet k on t r o l l e r a r huruvida klotpunkten s k a l l f l y t t a s r e l a t i v t 173 %inte rak t i on spunktens nuvarande l’age . 174 %Den har ’aven funkt ionen at t utan den hade ’aven de in t e r ak t i on spunkt e r 175 %i planen du i n t e be f i nne r d ig i hade kunnat påverka systemet . 176 %Jag hade t i d i g a r e f’or s’okt med en l iknande funkt ion , ekv i va l en t 177 %med denna om po in td i s t anc e var n o l l . 178 %Av någon anledning f i c k jag dock s t’orn ingar , jag t r o r det kan bero på 179 %impoint , men ’ar d e f i n i t i v t i n t e s’aker . 180 181 %Med b a l l d i s t k o n t r o l l e r a s hur l ångt klotpunkten s k a l l ha r’or t 182 %s i g innan g r a f i k en uppdateras . Dess analog i VR ’ar " v e cd i s t " 183 184 %} 185 186 d i s t =1.5 ; 187 pause length =0.05; 188 po in td i s t anc e =0.1 ; 189 ba l l d i s t a n c e =0.1 ; 190 191 %shadeon s’at t e r ut " skuggade" v e r s i o n e r av sp inore rna (mer t ransparenta ) 192 %som ’ar u t sa t t a på x−y−z ax larna 193 %pro j e c t i onon s’at t e r ut p r o j e k t i on e r av sp inorerna , plana b i l d e r 194 %på z=−10 och x=10 planen . 195 %de syns om konstanten ’ar s a t t t i l l 1 . 196 %shadeon ’ar f’or t i l l f ’a l l e t av , det b l i r l’at t v’al d i g t många punkter v i l k e t 197 %kan g’ora det svå r t a t t se 198 199 shadeon=0; 200 pro j e c t i onon =1; 201 202 %de matematiska/ l o g i s k a objekten 203 %b ’ar punkten i k l o t e t av rad i e 2∗pi , som r e l a t e r a r t i l l kvaternionrummet 204 205 %som en exponent i a l . b1 , b2 , b3 , b4 ’ar de vekto r e r som be sk r i v e r 206 %sp inore rna som rep r e s en t e rade i kvaternionrummet ( sp inorpunkter ) 207 %sp inore rna ’ar i s i g vekto re r i e t t 4 d imen s i on e l l t rum , som v i h’ar 208 %r e l a t e r a r t i l l k l o t e t genom att betrakta vardera index som e t t b idrag t i l l 209 %en kvatern ion : q=[q1 q2 q3 q4]−> q1+i ∗q2+j ∗q3+k∗q4 210 211 %x , y , z ’ar basvektorerna i vektorrymden 212 213 %r best’ammer s t o r l e k en hos sp inore rna 49 214 215 b=[0 0 0 ] ; 216 217 b1=[0 0 0 ] ; 218 b2=[ p i 0 0 ] ; 219 b3=[0 p i 0 ] ; 220 b4=[0 0 p i ] ; 221 222 x = [ 1 ; 0 ; 0 ] ; 223 y = [ 0 ; 1 ; 0 ] ; 224 z = [ 0 ; 0 ; 1 ] ; 225 226 r =0.5 ; 227 228 shaded i s t =10; 229 230 231 %f’or s t r i t a s bollrymden (BR) ut 232 233 f i g u r e (1 ) 234 235 s e t ( gcf , ’ Po s i t i on ’ , [ 100 , 100 , 1800 , 600 ] ) 236 237 238 subplot ( 2 , 6 , [ 1 2 7 8 ] ) 239 240 %koden nedan r i t a r ut k l o t e t i v i l k e t klotpunkten (b) be f i nne r s i g 241 242 [m n o]= sphere ; %t o t a l sphere bdry => q=−1 243 s u r f (2∗ pi ∗m,2∗ pi ∗n ,2∗ pi ∗o , ’ f a c e c o l o r ’ , ’ b lue ’ , ’ f a c ea lpha ’ , . 1 5 , ’ EdgeAlpha ’ , 0 ) ; 244 hold on 245 246 s u r f ( p i ∗m, pi ∗n , p i ∗o , ’ f a c e c o l o r ’ , ’ green ’ , ’ f a c ea lpha ’ , . 3 , ’ EdgeAlpha ’ , 0 ) ; 247 phi=l i n s p a c e (0 ,2∗ pi ) ; 248 p lo t (2∗ pi ∗ cos ( phi ) ,2∗ pi ∗ s i n ( phi ) , ’ b lack ’ ) % c i r c l e f o r v i s u a l i s a t i o n 249 hold on 250 p lo t3 ([−10 1 0 ] , [ 0 0 ] , [ 0 0 ] , ’ b lack ’ , [ 0 0] , [−10 10 ] , [ 0 0 ] , ’ b lack ’ , [ 0 0 ] , [ 0 0 ] , [−10 10 ] , ’ b lack ’ ) 251 252 %klotpunkten r i t a s ut 253 %samt t r e stycken " skuggb i l d e r " ; p r o j e k t i o n e r av b på klotrummets x , y och z ax la r 254 %ut r i t ad e i gr å ska l a med svag l j u s i n s t’al l n i n g , f’or a t t ge mer i n s i k t 255 %i var inom klotrummet bo l l en be f i nne r s i g i . 256 %( bo l l en s t å r s i s t i koden s å at t den i n t e ’ove r t’acks av skuggb i lde rna ) 257 258 %uxyz=plo t3 ( [ 0 0 0 ] , [ 0 0 0 ] , [ 0 0 0 ] , ’ ∗ ’ , ’ Color ’ , [ 0 . 5 0 . 5 0 . 5 ] ) ; 259 260 uxyz=su r f ( [ 0 . 3 5 ∗m;0 . 3 5∗m;0 . 3 5∗m] , [ 0 . 3 5 ∗ n ; 0 . 3 5∗ n ; 0 . 3 5∗ n ] , [ 0 . 3 5 ∗ o ; 0 . 3 5∗ o ; 0 . 3 5∗ o ] , ’ f a c e c o l o r ’ , ’ red ’ , ’ f a c ea lpha ’ , 0 . 2 , ’ EdgeAlpha ’ , 0 ) ; 261 262 u=su r f ( 0 . 35∗m,0 . 3 5∗n , 0 . 3 5∗ o , ’ f a c e c o l o r ’ , ’ red ’ , ’ f a c ea lpha ’ ,1 , ’ EdgeAlpha ’ , 0 ) ; 263 264 x l ab e l ( ’ x ’ ) 50 265 y l ab e l ( ’ y ’ ) 266 z l a b e l ( ’ z ’ ) 267 t i t l e ( ’ Bivektorrymden BR’ , ’ FontSize ’ ,14) ; 268 g r id on 269 ax i s ([−7 7 −7 7 −7 7 ] ) 270 ax i s equal 271 272 %kodstycket nedan v i s u a l i s e r a r gene r e ra r spinorrymden och sp inore rna 273 274 %k l o t e t d’ar sp inore rna ’ar u t sa t ta ( Spinorrymden ) 275 276 subplot ( 2 , 6 , [ 3 4 9 10 ] ) 277 278 s u r f (2∗ pi ∗m,2∗ pi ∗n ,2∗ pi ∗o , ’ f a c e c o l o r ’ , ’ b lue ’ , ’ f a c ea lpha ’ , 0 . 1 5 , ’ EdgeAlpha ’ , 0 ) ; 279 hold on 280 s u r f ( p i ∗m, pi ∗n , p i ∗o , ’ f a c e c o l o r ’ , ’ green ’ , ’ f a c ea lpha ’ , . 3 , ’ EdgeAlpha ’ , 0 ) ; 281 282 x l ab e l ( ’ x ’ ) 283 y l ab e l ( ’ y ’ ) 284 z l a b e l ( ’ z ’ ) 285 286 p lo t (2∗ pi ∗ cos ( phi ) ,2∗ pi ∗ s i n ( phi ) , ’ b lack ’ ) % c i r c l e f o r v i s u a l i s a t i o n 287 288 p lo t3 ([−10 1 0 ] , [ 0 0 ] , [ 0 0 ] , ’ b lack ’ , [ 0 0] , [−10 10 ] , [ 0 0 ] , ’ b lack ’ , [ 0 0 ] , [ 0 0 ] , [−10 10 ] , ’ b lack ’ ) 289 290 291 %spinorerna , r ep r e s en t e rade som platonska s o l i d e r inom e t t k l o t 292 %samt skuggb i l d e r 293 294 i f ( shadeon==1) 295 [ Vt ,F]= p l a t on i c_so l i d (5 , r ) ; 296 Vt=[Vt ( : , 1 )+b1 (1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 )+b1 (2) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 )+b1 (3 ) ] ; 297 u1xyz=patch ( ’ Faces ’ , [F ;F+20;F+20] , ’ Ve r t i c e s ’ ,Vt , ’ FaceColor ’ , ’ b ’ , ’ FaceAlpha ’ , 0 . 2 , ’ EdgeColor ’ , ’ k ’ , ’ Edgealpha ’ , 0 . 2 , ’ LineWidth ’ , 0 . 1 ) ; 298 [ Vt ,F]= p l a t on i c_so l i d (2 , r ) ; 299 Vt=[Vt ( : , 1 )+b2 (1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 )+b2 (2) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 )+b2 (3 ) ] ; 300 u2xyz=patch ( ’ Faces ’ , [F ;F+8;F+16] , ’ Ve r t i c e s ’ ,Vt , ’ FaceColor ’ , ’ r ’ , ’ FaceAlpha ’ , 0 . 2 , ’ EdgeColor ’ , ’ k ’ , ’ Edgealpha ’ , 0 . 2 , ’ LineWidth ’ , 0 . 1 ) ; 301 [ Vt ,F]= p l a t on i c_so l i d (3 , r ) ; 302 Vt=[Vt ( : , 1 )+b3 (1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 )+b3 (2) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 )+b3 (3 ) ] ; 303 u3xyz=patch ( ’ Faces ’ , [F ;F+6;F+12] , ’ Ve r t i c e s ’ ,Vt , ’ FaceColor ’ , ’ g ’ , ’ FaceAlpha ’ , 0 . 2 , ’ EdgeColor ’ , ’ k ’ , ’ Edgealpha ’ , 0 . 2 , ’ LineWidth ’ , 0 . 1 ) ; 304 [ Vt ,F]= p l a t on i c_so l i d (4 , r ) ; 305 Vt=[Vt ( : , 1 )+b4 (1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 )+b4 (2) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 )+b4 (3 ) ] ; 306 u4xyz=patch ( ’ Faces ’ , [F ;F+12;F+24] , ’ Ve r t i c e s ’ ,Vt , ’ FaceColor ’ , ’ y ’ , ’ FaceAlpha ’ , 0 . 2 , ’ EdgeColor ’ , ’ k ’ , ’ Edgealpha ’ , 0 . 2 , ’ LineWidth ’ , 0 . 1 ) ; 307 end 308 309 %pr o j e k t i o n s b i l d e r f’or sp inore rna 310 %1. b l å , dodekahedronens p ro j ek t i on ( dodekagon ) 51 311 %2. r’od , kubens p ro j ek t i on ( kvadrat ) 312 %3. gr’on , hexaederns p ro j ek t i on ( romb) 313 %. gul , i sokahedronen ( hexagon ) 314 i f ( p ro j e c t i onon==1) 315 316 dodecax =[1/2; s q r t (3 ) /4;1/2^2;0;−1/2^2;− s q r t (3 ) /4;−1/2;− s q r t (3 ) /4;−1/2^2;0 ;1/2^2; s q r t (3 ) / 4 ] ; 317 dodecay =[0 ;1/2^2; s q r t (3 ) /4 ; 1 /2 ; s q r t (3 ) /4;1/2^2;0;−1/2^2;− s q r t (3 ) /4;−1/2;− s q r t (3 ) /4;−1/2^2] ; 318 d3 = [ 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ] ; 319 320 v1=[dodecax+b1 (1 ) dodecay+b1 (2) −d3 ; d3 dodecax+b1 (2) dodecay+b1 (3 ) ] ; 321 322 Fdodeca=[1 2 3 4 5 6 7 8 9 10 11 1 2 ] ; 323 324 u12xyz=patch ( ’ Faces ’ , [ Fdodeca ; Fdodeca+12] , ’ Ve r t i c e s ’ , v1 , ’ FaceColor ’ , ’ b lue ’ ) ; hold on 325 326 squarex =[−1/2;1/2;1/2;−1/2] ; 327 squarey =[−1/2;−1/2;1/2;1/2] ; 328 d1 = [ 1 0 ; 1 0 ; 1 0 ; 1 0 ] ; 329 330 u22xyz=patch ( ’ Faces ’ , [ 1 2 3 4 ;5 6 7 8 ] , ’ Ve r t i c e s ’ , [ squarex+b2 (1 ) squarey+b2 (2) −d1 ; d1 squarex+b2 (2) squarey+b3 (3 ) ] , ’ FaceColor ’ , ’ red ’ ) ; hold on 331 332 rhombusx=[ −1/2 ;0 ; 1/2 ; 0 ] ; 333 rhombusy=[0 ; 1/2 ;0 ; −1/2 ] ; 334 d4 = [ 1 0 ; 1 0 ; 1 0 ; 1 0 ] ; 335 336 v1=[rhombusx rhombusy −d4 ; d4 rhombusx rhombusy ] ; 337 338 F=[1 2 3 4 ] ; 339 340 u32xyz=patch ( ’ Faces ’ , [F ;F+4] , ’ Ve r t i c e s ’ , [ rhombusx+b3 (1 ) rhombusy+b3 (2) −d4 ; d4 rhombusx+b3 (2) rhombusy+b3 (3 ) ] , ’ FaceColor ’ , ’ green ’ ) ; hold on 341 342 343 i c o s ax =[0; s q r t (3 ) /4 ; s q r t (3 ) /4;0;− s q r t (3 ) /4;− s q r t (3 ) / 4 ] ; 344 i c o s ay =[1/2;1/4;−1/4;−1/2;−1/4;1/4] ; 345 d2 = [ 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ; 1 0 ] ; 346 347 u42xyz=patch ( ’ Faces ’ , [ 1 2 3 4 5 6 ;7 8 9 10 11 12 ] , ’ Ve r t i c e s ’ , [ i c o sax+b4 (1) i c o say+b4 (2 ) −d2 ; d2 i co sax+b4 (2) i c o say+b4 (3) ] , ’ FaceColor ’ , ’ ye l low ’ ) ; hold on 348 349 end 350 351 352 [ Vt ,F]= p l a t on i c_so l i d (5 , r ) ; 353 Vt=[Vt ( : , 1 )+b1 (1 ) ,Vt ( : , 2 )+b1 (2) ,Vt ( : , 3 )+b1 (3 ) ] ; 354 u1=patch ( ’ Faces ’ ,F , ’ Ve r t i c e s ’ ,Vt , ’ FaceColor ’ , ’ b ’ , ’ FaceAlpha ’ ,1 , ’ EdgeColor ’ , ’ k ’ , ’ LineWidth ’ , 0 . 1 ) ; 355 [ Vt ,F]= p l a t on i c_so l i d (2 , r ) ; 356 Vt=[Vt ( : , 1 )+b2 (1 ) ,Vt ( : , 2 )+b2 (2) ,Vt ( : , 3 )+b2 (3 ) ] ; 357 u2=patch ( ’ Faces ’ ,F , ’ Ve r t i c e s ’ ,Vt , ’ FaceColor ’ , ’ r ’ , ’ FaceAlpha ’ ,1 , ’ 52 EdgeColor ’ , ’ k ’ , ’ LineWidth ’ , 0 . 1 ) ; 358 [ Vt ,F]= p l a t on i c_so l i d (3 , r ) ; 359 Vt=[Vt ( : , 1 )+b3 (1 ) ,Vt ( : , 2 )+b3 (2) ,Vt ( : , 3 )+b3 (3 ) ] ; 360 u3=patch ( ’ Faces ’ ,F , ’ Ve r t i c e s ’ ,Vt , ’ FaceColor ’ , ’ g ’ , ’ FaceAlpha ’ ,1 , ’ EdgeColor ’ , ’ k ’ , ’ LineWidth ’ , 0 . 1 ) ; 361 [ Vt ,F]= p l a t on i c_so l i d (4 , r ) ; 362 Vt=[Vt ( : , 1 )+b4 (1 ) ,Vt ( : , 2 )+b4 (2) ,Vt ( : , 3 )+b4 (3 ) ] ; 363 u4=patch ( ’ Faces ’ ,F , ’ Ve r t i c e s ’ ,Vt , ’ FaceColor ’ , ’ y ’ , ’ FaceAlpha ’ ,1 , ’ EdgeColor ’ , ’ k ’ , ’ LineWidth ’ , 0 . 1 ) ; 364 365 g r id on 366 ax i s ([−7 7 −7 7 −7 7 ] ) 367 ax i s equal 368 t i t l e ( ’ Spinorrymden SR ’ , ’ FontSize ’ ,14) ; 369 370 371 subplot ( 2 , 6 , [ 5 6 11 12 ] ) 372 373 374 vecx=quiver3 ( [ 0 −0 .5 ] , [ 0 −0 .5 ] , [ 0 −1 .2 ] , [ x (1 ) 0 . 5 ] , [ x (2 ) 0 ] , [ x (3 ) 0 ] , ’ b ’ , ’ Autosca le ’ , ’ o f f ’ ) ; hold on ; %generate a r o t a t e ab l e x−y−z coord inate system 375 vecy=quiver3 ( [ 0 −0 .5 ] , [ 0 −0 .5 ] , [ 0 −1 .2 ] , [ y (1 ) 0 ] , [ y (2 ) 0 . 5 ] , [ y (3 ) 0 ] , ’ r ’ , ’ Autosca le ’ , ’ o f f ’ ) ; 376 vecz=quiver3 ( [ 0 −0 .5 ] , [ 0 −0 .5 ] , [ 0 −1 .2 ] , [ z (1 ) 0 ] , [ z (2 ) 0 ] , [ z (3 ) 0 . 5 ] , ’ g ’ , ’ Autosca le ’ , ’ o f f ’ ) ; 377 378 ax i s ( [−1.2 1 .2 −1.2 1 .2 −1.2 1 . 2 ] ) 379 380 pbaspect ( [ 1 1 1 ] ) ; 381 x l ab e l ( ’ x ’ ) 382 y l ab e l ( ’ y ’ ) 383 z l a b e l ( ’ z ’ ) 384 t i t l e ( ’ Vektorrymden VR’ , ’ FontSize ’ ,14) ; 385 386 387 %{ 388 %kod som p r o j i c e r a r klotrummet på x−y , z−x och y−z planen , 389 %in r i t a d e i en gemensam plot , d’ar en punkt (h’ar ka l l ade in t e rakt i onspunkten ( den b l å ) 390 %l å t e r d ig manipulera k lotpunktens ( den r’oda ) l’age . 391 %Om man f’or f l y t t a r in t e rakt i onspunkten s å den hamnar 392 %t i l l r ’ac k l i g t n’ara klotpunkten ( avst åndet bes t’ams av ’ d i s t ’ ) kommer 393 %klotpunkten at t f’or f l y t t a s t i l l i n t e rak t i on spunktens p l a t s . 394 395 %c i r k e l n i n r i t a t i p lanet b e s k r i v e r avst åndet punkten har f r ån 396 %k l o t e t s rand i detta plan , dess s t o r l e k uppdateras e f t e r 397 %klotpunktens nya l’agen . 398 %} 399 400 f i g u r e (2 ) ; 401 s e t ( gcf , ’ Po s i t i on ’ , [ 100 , 100 , 600 , 200 ] ) 402 403 bxyz=p lo t ( [ b (1 )−20 b (3 ) b (2 ) +20 ] , [ b (2 ) b (1 ) b (3 ) ] , ’ red ∗ ’ ) ; hold on 404 405 c i r c z=p lo t (2∗ pi ∗ cos ( phi )−20 ,2∗ pi ∗ s i n ( phi ) , ’ g ’ ) ; 53 406 c i r c y=p lo t (2∗ pi ∗ cos ( phi ) ,2∗ pi ∗ s i n ( phi ) , ’ r ’ ) ; 407 c i r c x=p lo t (2∗ pi ∗ cos ( phi )+20 ,2∗ pi ∗ s i n ( phi ) , ’ b ’ ) ; 408 409 ax i s ([−30 30 −10 10 ] ) 410 411 txtxy = ’x−y plan ’ ; 412 txtzx = ’ z−x plan ’ ; 413 txtyz = ’y−z plan ’ ; 414 t ex t (−23 ,−7.5 , txtxy ) ; 415 t ex t (−3 ,−7.5 , txtzx ) ; 416 t ex t (17 ,−7.5 , txtyz ) ; 417 t i t l e ( ’ i n t e r a k t i v a ytor ’ , ’ FontSize ’ , 12) ; 418 419 420 h=impoint ( gca , [ 0 7 ] ) ; 421 422 %p sparar impointens l’age i loopen , 423 %p2 anv’ands f’or a t t k on t r o l l e r a huruvida in te rakt i onspunkten f l y t t a t s 424 %t i l l r ’ac k l i g t f’or a t t g r a f i k en s k a l l uppdateras 425 426 p=[0 7 ] ; 427 p2=p ; 428 429 po in td i s t anc e=po in td i s t anc e ^2; 430 d i s t=d i s t ^2; 431 ba l l d i s t a n c e=ba l l d i s t a n c e ^2; 432 433 434 %{ 435 %inom whi le loopen d e f i n i e r a s a l l i n t e r a k t i o n mellan programmet 436 %och anv’andare . F’or s t i n i t i e r a s programmets get−f unk t i one r f’or 437 %att f i nna in t e rak t i on spunkt e rna s nuvarande l’agen , v a r e f t e r 438 %i f s a t s e r k o l l a r om inte rak t i onspunkte rna ’ar t i l l r ’ac k l i g t n’ara klotpunkten 439 %f’or a t t klotpunkten s k a l l f l y t t a s , v i l k e t r e l a t e r a s t i l l en kvatern ion 440 %som vi r ep r e s en t e r a r som en matr i s som kommer trans formera sp inorerna , 441 %vars l’agen kan r e l a t e r a s t i l l en b o l l på samma s’at t som man kan 442 %enhetskvate rn ionerna 443 %} 444 whi le ( t rue ) 445 pause ( pause length ) 446 p=h . g e tPo s i t i on ; 447 i f ( po in td i s tance <=(p (1 )−p2 (1 ) )^2+(p (2 )−p2 (2 ) ) ^2) 448 d i s t 1=(p (1)−b (1)+20)^2+(p (2 )−b (2) ) ^2; 449 d i s t 2=(p (1)−b (3) )^2+(p (2 )−b (1) ) ^2; 450 d i s t 3=(p (1)−b (2)−20)^2+(p (2 )−b (3) ) ^2; 451 i f ( b a l l d i s t an c e<=d i s t 1 | | po in td i s tance<=d i s t 2 | | po in td i s tance<= d i s t 3 ) 452 i f ( ( p (1 )−b (1)+20)^2+(p (1 )−b (2) )^2<=d i s t ) 453 b (1)=p (1) +20; 454 b (2)=p (2) ; 455 e l s e i f ( ( p (1 )−b (3) )^2+(p (2 )−b (1) )^2<=d i s t ) 456 b (3)=p (1) ; 457 b (1)=p (2) ; 458 e l s e i f ( ( p (1 )−b (2)−20)^2+(p (2 )−b (3) )^2<=d i s t ) 459 b (2)=p (1) −20; 54 460 b (3)=p (2) ; 461 end 462 463 %{ 464 %Om phi=2∗pi+phi ’ , phi ’>0 f å r v i phi−>phi2=2∗pi−phi ’ , e f t e r som v i har 465 %modulo 2∗pi , motsvarar ju denna punkt samma kvatern ion som man drog t i l l , 466 %f a s t b s k a l l hå l l a s inom k l o t e t . 467 %} 468 i f (2∗ pi<=norm(b) ) 469 b=−(4∗pi−norm(b) ) ∗b/norm(b) ; 470 end 471 472 473 %skippar uppdater ingar om b−vektorn i n t e f’or f l y t t a t s 474 %t i l l r ’ac k l i g t ( kan vara ’ov e r f l’od ig ide . . . ) 475 % i f ( b a l l d i s t <=(bt (1 )−b (1) )^2+(bt (2 )−b (2) )^2+(bt (3 )−b (3) ) ^2) 476 477 478 479 %kvatern ionens nya l’age bes t’ammer sp ino r e rna s 480 481 %d’ar e f t e r b e sk r i v s sp inore rna som enhet skvate rn ione r 482 %i den andemening at t de kan r ep r e s en t e r a s med deras r e s p ek t i v e 483 %deras j , phi , som best’ammer 484 %deras p o s i t i o n e r som punkter inom e t t kva t e rn i onk l o t 485 %( dvs ) b1=phi1 ∗ j1 , d’ar de r e l a t e r a s t i l l en 486 %kvatern ion v ia q1=exp (b1/2) ( ana logt f’or b2 , b3 , b4 ) 487 488 %{ 489 %Av något sk’al s t’al l d e jag om systemet s å mat r i smu l t i p l i k a t i onen g j o rde s 490 %inu t i koden , d’ar man p lockar ur m 491 %K’anner mig manad at t å t e r s t’al l a den r ep r e s en t a t i on som anv’andes , 492 %i f a l l det f i n n s i n t r e s s e ( k o n t r o l l e r i n g av r’akne r e g l e r osv ) : 493 494 %rho (q )=rho ( q1+i ∗q2+j ∗q3+k∗q4 )= 495 %q1∗ I+q2∗ Î+q3∗J+q4∗K = 496 %[ q1 0 0 0 ; [ 0 q2 0 0 ; [ 0 0 q3 0 ; [ 0 0 0 q4 ; 497 % 0 q1 0 0 ; + −q2 0 0 0 ; + 0 0 0 −q3 ; + 0 0 q4 0 ; 498 % 0 0 q1 0 ; 0 0 0 q2 ; −q3 0 0 0 ; 0 −q4 0 0 ; 499 % 0 0 0 q1 ] 0 0 −q2 0 ] 0 q3 0 0 ] −q4 0 0 0 ] 500 %} 501 502 q=exp ( quatern ion (0 , b (1 ) /2 ,b (2 ) /2 ,b (3 ) /2) ) ; 503 J1=[q . e (2 ) ; q . e (3 ) ; q . e (4 ) ] ; 504 J2=[q . e (1 ) ; q . e (4 ) ;−q . e (3 ) ] ; 505 J3=[−q . e (4 ) ; q . e (1 ) ; q . e (2 ) ] ; 506 J4=[q . e (3 ) ;−q . e (2 ) ; q . e (1 ) ] ; 507 508 phi1=2∗acos ( q . e (1 ) ) ; 509 phi2=2∗acos(−q . e (2 ) ) ; 510 phi3=2∗acos(−q . e (3 ) ) ; 511 phi4=2∗acos(−q . e (4 ) ) ; 512 55 513 b1=phi1 ∗J1 ; 514 b2=phi2 ∗J2 ; 515 b3=phi3 ∗J3 ; 516 b4=phi4 ∗J4 ; 517 518 %RotateVectorQ ’ar en funkt ion i quatern ion .m som 519 %ro t e r a r systemet g i v e t en kvatern ion 520 x=RotateVectorQ (q , [ 1 0 0 ] ) ; 521 y=RotateVectorQ (q , [ 0 1 0 ] ) ; 522 z=RotateVectorQ (q , [ 0 0 1 ] ) ; 523 524 %set−f unk t i one r som uppdaterar skuggb i lde rnas l’agen 525 526 %uppdaterar s t o r l e k en hos c i r k l a r n a i planen e f t e r b−vektorns nya l ’age 527 %( c i r k l a r n a s k a l l ge i n b l i c k hur n’ara klotpunkten ’ar k l o t e t s rand ) 528 529 rx=sq r t ( (2∗ pi )^2−b (1) ^2) ; 530 ry=sq r t ( (2∗ pi )^2−b (2) ^2) ; 531 rz=sq r t ( (2∗ pi )^2−b (3) ^2) ; 532 533 s e t ( c i r cx , ’XData ’ , rx∗ cos ( phi )+20, ’YData ’ , rx∗ s i n ( phi ) ) 534 s e t ( c i r cy , ’XData ’ , ry∗ cos ( phi ) , ’YData ’ , ry∗ s i n ( phi ) ) 535 s e t ( c i r c z , ’XData ’ , r z ∗ cos ( phi )−20, ’YData ’ , r z ∗ s i n ( phi ) ) 536 537 %se t funkt i one r som uppdaterar k lotpunktens l’age 538 %samt i n t e r a k t i o n s ob j e k t ( klotpunkt i plan ) och skuggb i l d e r 539 540 s e t ( bxyz , ’XData ’ , [ ( b (1 )−20) b (3 ) b (2 ) +20] , ’YData ’ , [ b (2 ) b (1 ) b (3 ) ] ) ; 541 s e t (u , ’XData ’ ,b (1 )+m∗0 .35 , ’YData ’ ,b (2 )+n ∗0 .35 , ’ ZData ’ ,b (3 )+o ∗0 . 35 ) ; 542 s e t ( uxyz , ’XData ’ , [ b (1 ) +0.35∗m;0 . 3 5∗m;0 . 3 5∗m] , ’YData ’ , [ 0 . 3 5 ∗ n ; b (2 ) +0.35∗n ; 0 . 3 5∗ n ] , ’ ZData ’ , [ 0 . 3 5 ∗ o ; 0 . 3 5∗ o ; b (3 ) +0.35∗o ] ) 543 544 545 546 %Spinore r samt dess ’ skuggb i lder ’ och p r o j e k t i on e r uppdateras 547 548 i f ( shadeon==1) 549 550 [ Vt ,F]= p l a t on i c_so l i d (5 , r ) ; 551 Vt=[Vt ( : , 1 )+b1 (1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 )+b1 (2) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 )+b1 (3) ] ; 552 s e t ( u1xyz , ’ Faces ’ , [F ;F+20;F+20] , ’ Ve r t i c e s ’ ,Vt) ; 553 [ Vt ,F]= p l a t on i c_so l i d (2 , r ) ; 554 Vt=[Vt ( : , 1 )+b2 (1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 )+b2 (2) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 )+b2 (3) ] ; 555 s e t ( u2xyz , ’ Faces ’ , [F ;F+8;F+16] , ’ Ve r t i c e s ’ ,Vt) ; 556 [ Vt ,F]= p l a t on i c_so l i d (3 , r ) ; 557 Vt=[Vt ( : , 1 )+b3 (1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 )+b3 (2) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 )+b3 (3) ] ; 558 s e t ( u3xyz , ’ Faces ’ , [F ;F+6;F+12] , ’ Ve r t i c e s ’ ,Vt) ; 559 [ Vt ,F]= p l a t on i c_so l i d (4 , r ) ; 560 Vt=[Vt ( : , 1 )+b4 (1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 )+b4 (2) ,Vt ( : , 3 ) ; Vt ( : , 1 ) ,Vt ( : , 2 ) ,Vt ( : , 3 )+b4 (3) ] ; 56 561 s e t ( u4xyz , ’ Faces ’ , [F ;F+12;F+24] , ’ Ve r t i c e s ’ ,Vt) ; 562 563 end 564 565 i f ( p ro j e c t i onon==1) 566 s e t ( u12xyz , ’ Faces ’ , [ Fdodeca ; Fdodeca+12] , ’ Ve r t i c e s ’ , [ dodecax+b1 (1) dodecay+b1 (2 ) −d3 ; d3 dodecax+b1 (2) dodecay+b1 (3 ) ] ) ; 567 s e t ( u22xyz , ’ Faces ’ , [ 1 2 3 4 ;5 6 7 8 ] , ’ Ve r t i c e s ’ , [ squarex+b2 (1) squarey+b2 (2) −d1 ; d1 squarex+b2 (2) squarey+b3 (3 ) ] ) ; 568 s e t ( u32xyz , ’ Faces ’ , [ 1 2 3 4 ;5 6 7 8 ] , ’ Ve r t i c e s ’ , [ rhombusx+b3 (1) rhombusy+b3 (2) −d4 ; d4 rhombusx+b3 (2) rhombusy+b3 (3 ) ] ) ; 569 s e t ( u42xyz , ’ Faces ’ , [ 1 2 3 4 5 6 ;7 8 9 10 11 12 ] , ’ Ve r t i c e s ’ , [ i c o s ax+b4 (1) i c o say+b4 (2) −d2 ; d2 i co sax+b4 (2) i c o say+b4 (3) ] ) ; 570 571 end 572 573 574 [ Vt ,F]= p l a t on i c_so l i d (5 , r ) ; 575 Vt=[Vt ( : , 1 )+b1 (1 ) ,Vt ( : , 2 )+b1 (2) ,Vt ( : , 3 )+b1 (3 ) ] ; 576 s e t (u1 , ’ Faces ’ ,F , ’ Ve r t i c e s ’ ,Vt) ; 577 [ Vt ,F]= p l a t on i c_so l i d (2 , r ) ; 578 Vt=[Vt ( : , 1 )+b2 (1 ) ,Vt ( : , 2 )+b2 (2) ,Vt ( : , 3 )+b2 (3 ) ] ; 579 s e t (u2 , ’ Faces ’ ,F , ’ Ve r t i c e s ’ ,Vt) ; 580 [ Vt ,F]= p l a t on i c_so l i d (3 , r ) ; 581 Vt=[Vt ( : , 1 )+b3 (1 ) ,Vt ( : , 2 )+b3 (2) ,Vt ( : , 3 )+b3 (3 ) ] ; 582 s e t (u3 , ’ Faces ’ ,F , ’ Ve r t i c e s ’ ,Vt) ; 583 [ Vt ,F]= p l a t on i c_so l i d (4 , r ) ; 584 Vt=[Vt ( : , 1 )+b4 (1 ) ,Vt ( : , 2 )+b4 (2) ,Vt ( : , 3 )+b4 (3 ) ] ; 585 s e t (u4 , ’ Faces ’ ,F , ’ Ve r t i c e s ’ ,Vt) ; 586 587 s e t ( vecx , ’ udata ’ , [ x (1 ) 0 . 5 ] , ’ vdata ’ , [ x (2 ) 0 ] , ’ wdata ’ , [ x (3 ) 0 ] ) ; 588 s e t ( vecy , ’ udata ’ , [ y (1 ) 0 ] , ’ vdata ’ , [ y (2 ) 0 . 5 ] , ’ wdata ’ , [ y (3 ) 0 ] ) ; 589 s e t ( vecz , ’ udata ’ , [ z (1 ) 0 ] , ’ vdata ’ , [ z (2 ) 0 ] , ’ wdata ’ , [ z (3 ) 0 . 5 ] ) ; 590 end 591 p2=p ; 592 end 593 594 end 57