%% 3  Punkter och linjer \mathbb R^3
%% 3.1  Markera punkt i rummet
% Takeaways
% Med  plot3( p(1) , p(2) , p(3) )  kan markera en punkt  p  i rummet.
% Med ett tillägg kan man välja typ av markör, t.ex. '*' eller 'o' . Vilka som finns hittar man genom att söka på Marker Symbol i Matlab  (eller googla Matlab Marker Symbol)
% Med ytterligare tillägg kan man välja markörens storlek, färg och konturfärg, t.ex. 'MarkerSize', 12 , 'MarkerFaceColor', 'r' , 'MarkerEdgeColor', 'g' . Vilka färger som har kortnamn kan man hitta genom att söka/googla på (Matlab) Color Specification .
% Man kan sätta text på axlar genom att specificera  xlabel , ylabel och zlabel .
% Man kan sätta på och stänga av ett rutnät i figuren med  grid on  respektive  grid off .
% Man kan rita flera saker i samma figur genom att använda  hold on som stängs av med  hold off .
% Om  p = [ x  y  z ]  är en punkt i rummet kan man i Matlab illustrera den med kommandot
% plot3( p(1) , p(2) , p(3) )
% plot3  står för plottning i 3 dimensioner och  p(1) , p(2) , p(3) är punktens första, andra repektive tredje koordinat. Det går också bra att direkt skriva in koordinaterna i plot3 :
% plot3( x , y , z )
% En nackdel med detta är att man kanske inte direkt fattar att  x, y, z  är koordinater för en punkt man är intresserad av.
% Pröva detta med valfri punkt i rummet:



% Som du märker blir markeringen så liten att den är svår att upptäcka eller skilja från smuts på skärmen. Inte bra! Lösningen på detta är att markera punkten med nån typ av markör. Vilka som finns att välja på kan du ta reda på genom att i Matlabs sökfält skriva  Marker symbols . Vill man använda symbolen * som markör gör man det genom
% plot3( p(1) , p(2) , p(3), '*' )
% Pröva detta med valfri punkt och symbol:



% Det blev lite tydligare, men du kanske vill ha markeringen större? Inget problem! Det styr du med tillvalet 'MarkerSize' som du t.ex. sätter till 10 med kommandot
% plot3( p(1) , p(2) , p(3), '*' , 'MarkerSize', 10 )
% Pröva detta med valfri punkt, symbol och några olika storlekar:



%
% Svårt att orientera i rummet? Inget problem! Du kan lägga till ett rutnät med kommandot
% grid on
% Du kan ta bort det med  grid off .
% Vilken axel tillhör vilken koordinat? Det finns ju inga beteckningar på axlarna! Det fixar du genom att tala om vad du vill kalla dem. Första axeln styr du med kommandot  xlabel andra med ylabel  och tredje med zlabel .  T.ex. ger kommandona
% xlabel( 'Axel 1' ) , ylabel( 'Axel 2' ), zlabel( 'Axel 3' )
% namnen  Axel 1, Axel 2 och Axel 3, till först, andra respektiva tredje koordinataxlarna.
%  Pröva detta nu med din tidigare figur och valfria beteckningar på axlarna:



%
% Trist färg på markören? Du kan pimpa med
% 'MarkerEdgeColor'
%  som sätter färgen på konturen och
% 'MarkerFaceColor'
% som sätter den på markörens yta. T.ex.
% plot3(x,y,z,'p','MarkerSize',20,'MarkerEdgeColor','g','MarkerFaceColor','r')
% Här står  'g' för  green  och  'r' för red . Några färger har förkortade namn som dessa. Vilka kan du hitta genom att i Matlab söka på Color Specification (eller googla: Matlab color specification) .
% Pröva nu allt i en ny figur:



%   Man kan också välja konturens färg samtidigt som man väljer symbolen. T.ex står 'pk' för en femuddig stjärna ( 'p', pentagon ) med svart ( 'k' ) kontur.
% Pröva denna variant:



%
% Vill man markera flera punkter i samma figur går det också bra, men då får man ge kommandot
% hold on
% annars ritas bilden om vid varje plot3 . Man stänger av detta med
%  hold off
% Uppgift 3.1
% Markera origo och fyra andra olika punkter i en figur. Namnge axlarna och välj markörer med storlek och färg, så att det är lätt att uppfatta figuren.
% Lösning



%
%% 3. 2  Rita räta linjer i rummet
% Takeaways
% Ett linjesegment mellan punkterna  p  och  q  i rummet kan plottas med komandot  plot3([p(1) q(1)], [p(2) q(2)], [p(3) q(3)]) . Man samlar första koordinaterna för de båda punkterna i en första lista, sen på samma sätt med andra och tredje koordinaterna.
% Man kan undvika åksjuka i 3D med kommandot  axis vis3d .
% Två olika punter  p  och  q  i rummet bestämmer en rät linje i rummet. Med kommandot
% plot3( [p(1) q(1)], [p(2) q(2)], [p(3) q(3)])
% får man Matlab att rita linjesegmentet mellan punkterna  p  och  q . Man samlar alltså de två punkternas första kooridnater i en lista, de andra i en andra lista och de tredje i en tredje lista.
% Pröva detta med två valfria punkter i rummet:



%
% För smal? Det ordnas med att tilläget  'LineWidth'  sätts lämpligt (man prövar sig fram)
% Pröva detta:



%
% Trist färg? Det fixas med att lägga till en kul färg. (Inget "tilläggsord" behövs.)
% Pröva detta och sätt text på axlarna:



%
% Tomt med bara en linje? Lägg till en till då, men glöm inte  hold on ! (Varning för åksjuka!)



% För att undvika att figuren "zoomar" när man ruskar på den kan man ge kommandot
% axis vis3d



%
%% 3.3  Linjer bortom  p  och  q .
% Takeaway
% Man kan få en bokstav (eller ett namn) att uppträda som en variabel i matematisk mening i Matlab genom att införa t.ex.  t  med  @(t) . Det används vid definition av så kallade anonyma funktioner.
% Kommandot  box on  ger en kub runt plott i 3D. Kan underlätta orientering i figuren.
% Om vi vill illustrera en linje som går genom puntkerna p  och  q , som inte är linjesegmentet genom dem - hur gör vi då? Vi kan parameterisera linjen! Vi skiljer nu inte  på beteckning för punkter och  vektorer i \mathbb R^3, utan skriver båda som kolonvektor. En riktningvektor för linjen genom  p och  q  ges då av  v = q - p , som vi kan tänka på som hasitgheten för en partikel som far fram längs linjen. Partikelns läge vid tiden  t  ges då av   p + t * v , som är parameteriseringen av linjen. När  t = 0  är partikeln i  p  och när  t = 1  befinner den sig i  q .
% Vi vill tänka på  t  som en variabel i matematisk mening som kan anta vilket värde som helst. Så fungerar inte variabler i Matlab, eller annan programvara heller i allmänhet. Bostäver (eller namn) ska i allmänhet stå för nåt konkret. Vi kan inte använda  p  som symbol för en godtycklig punkt i rummet, utan måste specifikt tala om exakt vilken punkt  p  sak beteckna, om vi vill använda denna symbol (bokstav) i Matlab.
% Den lösning Matlab har för att använda t.ex.  t  som en variabel i matematiska mening är att införa den med beteckningen  @(t) . Vi får vår parameterisering (med  t som "riktigt" variabel),  som vi väljer att suggestivt kalla  line_pq , med
% line_pq = @(t) p + t * (q - p)
% och kan då vid tiden  t = 5  få partikelns läge i rummet som
% line_pq( 5 )
% I Matlabs terminologi har vi definierat en anonym funktion  line_pq  med parametern (variablen)  t . Den är "anonym" i meningen att om vi startar om Matlab utan att göra nån särskild anstränging så är den borta. Det finns andra sätt att definiera funktioner i Matlab, som vi återkommer till senare.
% Uppgift 3.2
% a)  En partikel rör sig rätlinjigt med konstant  hastighet i rummet. Den befinner vid tiden  0  i punkten   (1, -3, 4) och är i  (3, 2, 1)  vid tiden  1. Var befinner den sig vid tiderna  -1  respektive  3 ?
% b)  Illustrera linjen mellan punkterna vid tidpunkterna  -1  och  3 , samt markera de två givna punkterna i a) . Namnge axlarna!
% Lösning



% I lösningen användes kommandot
% box on
%  som ger en kub kring plotten. Det hjälper ibland vid orientering i figurer i 3D. Stängs av med  box off .