Avatar billede zerohero Nybegynder
28. november 2003 - 17:56 Der er 56 kommentarer og
1 løsning

Matematik: Trekant

Her er lige en sjov lille opgave.

Tænk på en 3 dimensionel koordinat system!
Som I alle ved er en trekant en plan, uanset hvordan dens 3 koordinater er definerede! Det vil sige, at hvis de tre koordinater er definerede således:
    X  Y  Z
1) -1, 0,-1
2) -1, 1, 1
3) +1, 2, 1

det vil betyde at den første har den laveste Y koordinat, da den er 0. Her så spørgsmålet! Hvor mange grader skal jeg så rotere min trekant (på X og Z akserne) for at alle koordinaternes Y er lig nul?

Håber I forstod det :)
Avatar billede soreno Praktikant
28. november 2003 - 18:27 #1
Avatar billede zerohero Nybegynder
28. november 2003 - 18:34 #2
OK, nu er hedder jeg ikke Einstein, men vil det sige at jeg faktisk kan få rotationernes vinkler med en Matrix beregning? Det ville være lidt sejt!
Avatar billede zerohero Nybegynder
28. november 2003 - 18:37 #3
Jeg har altid kunnet, finde koordinater fra en rotation med en matrix beregning, men har aldrig kunnet gå modsat vej. Altså få rotationen ud fra koordinater med en Matrix beregning!
Avatar billede soreno Praktikant
28. november 2003 - 18:40 #4
Jeg kan ikke lige helt gennemskue hvordan man skal gøre, men mon ikke det er muligt.

Det må være noget med at gange rotationsmatricerne på kordinatvektorerne og så lave lidt trylleri og dermed få vinklen.

Trylleriet ved jeg ikke lige hvordan man gør - så skal jeg først sætte mig ind i det. Det har jeg desværre ikke tid til, selvom det lyder som en spændende opgave (sandsynlighedsteori er 1. prioritet lige nu).

Hvis det er til brug i et enkelt tilfælde så tror jeg jeg ville lave et program der brute-forcede løsningen. Eller evt. vise trekanten via OpenGL og så bruge musen til at rotere til ønsket position er der - så vil man nok kunne gætte sig til løsnigen ud fra kordinaterne.. :-)
Avatar billede nmh Nybegynder
28. november 2003 - 19:49 #5
Jeg synes ikke, det er helt klart, hvad du mener med at rotere din trekant PÅ x og z-akserne.

Ville det ikke være OK at antage, at lade et af punkterne ligge i(0,0,0) og så blot fortælle, hvordan trekantens normalvektor skal drejes, mens dens endepunkt fastholdes i (0,0,0). Hvis den drejes, så den er parallel med y-aksen vil trekantens vinkelspidser have y-koordinaten 0.

Lad os antage, at normalvektoren har koordinaterne (a,b,c), hvor a, b, og c er positive.
Vi drejer først alt en vinkel v om z-aksen. I xy-planen svarer det til at der drejes mod uret en vinkel v bestemt af
tan(v)=a/b.
Normalvektoren får så koordinaterne (
Avatar billede zerohero Nybegynder
28. november 2003 - 19:57 #6
OKiii.... Jeg har en trekant:

  (0 , 0, 0)
  (+1 ,2, -1)
  (-1 ,1, -1)

Nu vil jeg gerne havde roteret min trekant så alle Y koordianter (Y aksen er den lodrette akse, og Z og X er de to vandrette)... Hjalp drt lidt?
Avatar billede nmh Nybegynder
28. november 2003 - 19:57 #7
fortsat:
Normalvektoren får så koordinaterne (0,sqrt(a^2+b^2),c)
(sqrt står for kvadratrod)
Normalvektoren drejes nu ned på y-aksen en vinkel w bestemt ved
sin(w)=c/sqrt(a^2+b^2+c^2)
(Der roteres omkring x-aksen).
Nu vil normalvektoren peg ud ad y-aksen og trekanten ligger i xz-planen.

Normalvektoren bestemmes af ved at udregne krydsproduktet af to af trekantens sidevaktorer.
Avatar billede zerohero Nybegynder
28. november 2003 - 19:58 #8
Jeg forstår ikke helt det med din normal vektor - hvad vil du bruge den til?
Avatar billede zerohero Nybegynder
28. november 2003 - 20:01 #9
Det lyder lidt kompliceret! Men jeg prøver med det info du har givet mig!
Avatar billede zerohero Nybegynder
28. november 2003 - 20:02 #10
Er din Y akse den lodrette akse?
Avatar billede zerohero Nybegynder
28. november 2003 - 20:02 #11
eller er det Z?
Avatar billede nmh Nybegynder
28. november 2003 - 20:03 #12
Lad A være (0,0,0), B er (1,2,-1) og C er (-1,1,-1)
Så er normalvektoren n=AB x AC = (-1,2,3)
Nu skal vi blot sørge for at dreje denne vektor, så den er parallel med y-aksen.
Avatar billede nmh Nybegynder
28. november 2003 - 20:04 #13
Jeg plejer at lade z-aksen være lodret, men det spiller ikke nogen rolle.
Avatar billede nmh Nybegynder
28. november 2003 - 20:05 #14
Men koorordinatsystemet er et højre-system (højre hånd: tommelfingeren x-aksen, pegefingeren y-aksen og langefingeren z-aksen)
Avatar billede zerohero Nybegynder
28. november 2003 - 20:09 #15
ok... jeg forstaar din teori med normal vektoren, er bare lidt usikker paa naar du rotere!
Avatar billede nmh Nybegynder
28. november 2003 - 20:14 #16
Hvis du rotere xy-planen en vinkel v med uret.
v er bestemt ved tan(v)=1/2. Vinklen v er lig 26,565 grader.
Derefter skal du rotere om x-aksen en vinkel w.
sin(w)=3/sqrt(14)
w=53,300grader.
Avatar billede zerohero Nybegynder
28. november 2003 - 20:14 #17
Hvordan kan du udregne sin(w)=c/sqrt(a^2+b^2+c^2) naar a, b og c hvar bestaar af tre koordinater?
Avatar billede nmh Nybegynder
28. november 2003 - 20:16 #18
Når du roterer om x-aksen svarer det til at rotere med uret, nå du står et sted på x-aksens positive del og kigger ned på yz-planen.
Avatar billede nmh Nybegynder
28. november 2003 - 20:19 #19
Da jeg før skrev (a,b,c) mente jeg normalvektorens koordinater.
Nu betegner A, B og C vinkelspidserne, og (a,b,c) er (-1,2,3)
Denne vektor er vinkelret på AC og AC da du får nul hvis du udregner skalarprodukterne
(-1,2,3)*(1,2,-1) og (-1,2,3)*(-1,1,-1)
Avatar billede zerohero Nybegynder
28. november 2003 - 20:21 #20
Det virker ikke rigtig, der er kun to af koordinaterne der rammer nul, paa Y aksen. Den sidste koordinat gor ikke!!!
Avatar billede nmh Nybegynder
28. november 2003 - 20:23 #21
Hvordan udregner du koordinaterne, når du roterer?
Avatar billede zerohero Nybegynder
28. november 2003 - 20:28 #22
Hmmm... det ser ud til at gor det rigtigt nok... Der er bare et eller andet jeg lige skal havde rettet! Prover lige igen!
Avatar billede zerohero Nybegynder
28. november 2003 - 20:31 #23
Det her er altsaa lidt mystisk, det virker fint, hvis jeg saetter en minus tegn foran resultaterne!!! Nogen ide hvirfor?
Avatar billede zerohero Nybegynder
28. november 2003 - 20:32 #24
Jeg taenkte paa, hvor du faar det 14 fra naar du udregner w?
Avatar billede nmh Nybegynder
28. november 2003 - 20:35 #25
normalvektoren (-1,2,3) har længden kvadratrod((-1)^2+2^2+3^2) og det er jo lig kavdratrod(14)
Avatar billede zerohero Nybegynder
28. november 2003 - 20:42 #26
Lige en gang mere (Flov), hvordan var det helt praecist du kom frem til normalen ved gange B og C med hinanden eller hvad?
Avatar billede nmh Nybegynder
28. november 2003 - 20:47 #27
Jeg udregnede krydsproduktet af vektorerne AB og AC.
Hvis vi har to vektorer
(a1, a2, a3) og
(b1, b2, b3) er deres krydsprodukt givet ved
(a2*b3-a3*b2, a3*b1-a1*b3, a1*b2-a2*b1)
Denne vektor er vinkelret på de to vektorer
Avatar billede zerohero Nybegynder
28. november 2003 - 20:50 #28
Ahhhh....nu er jeg med :) Har du en logisk forklaring paa hvorfor jeg skal s;tte et minus tegn foran resultatet, for at det virker?
Avatar billede zerohero Nybegynder
28. november 2003 - 20:53 #29
Ikke for at vaere vanskelig :)) men der hvor du bruger Tan kan du ikke omformulere det lidt, saa der bruges Cos og Sin?
Avatar billede nmh Nybegynder
28. november 2003 - 20:53 #30
Nu ved jeg jo ikke, hvordan du udregner dine ting.
Så derfor kan jeg ikke sige noget om et minus.
Avatar billede nmh Nybegynder
28. november 2003 - 20:57 #31
Normalvektoren (-1,2,3) projicres ned i xy-planen og giver så en vektor (-1,2). Hvis den afsættes fra (0,0) vil den pege ud i 2. kvadrant.
Vinklen mellem vektoren og y-aksen er spids, og der gælder for denne vinkel tan(v)=1/2, sin(v)=1/sqrt/5)
Avatar billede zerohero Nybegynder
28. november 2003 - 21:06 #32
OK det her er n;rmest pinligt! Hvor faar du 5'eren fra?
Avatar billede nmh Nybegynder
28. november 2003 - 21:08 #33
Hvis du benytter nogle standardformler for rotation, så vil den vinkel du skal dreje om z-aksen normalt sættes til -26,565grader, da der drejes med uret.
Tilsvarende når du drejer om x-aksen w=-53,300grader.
Avatar billede nmh Nybegynder
28. november 2003 - 21:09 #34
Vektoren (-1,2) har længden sqrt((-1)^2+2^2)=sqrt(5)
Avatar billede zerohero Nybegynder
28. november 2003 - 21:09 #35
Ahhh jeg tror det er der den ligger ;))
Avatar billede zerohero Nybegynder
28. november 2003 - 21:12 #36
He he... Jamen du er jo et geni! Jeg er meget imponeret, og du har virklig fortjent alle points! Hvis ligger et svar, saa jeg kan acceptere dig ;)
Avatar billede nmh Nybegynder
28. november 2003 - 21:12 #37
her er det. :o)
Avatar billede zerohero Nybegynder
28. november 2003 - 21:15 #38
Mange mange tak for hjaelpen. Det var lidt mere besvaerligt end jeg havde regnet med, men nu har jeg i hvert fald stof nok til at arbejde videre med!
Avatar billede nmh Nybegynder
28. november 2003 - 21:28 #39
Selv tak, det var så lidt.Takker for point.
Må jeg spørge, hvad der er, du skal bruge det til?
Det lyder ikke til at være en sædvanlig matematikopgave.
Nu har vi lavet udregningerne med konkrete tal, men det havde nok været mere naturligt at gøre det mere generelt.
De to drejninger kan beskrives ved en 3 x 3 matrix, og når man så anvender den på de to vinkelspidser i trekanten, kan man få et par ligninger til at bestemme de to vinkler.
Hvis jeg får tid, vil jeg komme med en sådan generel løsning.
Avatar billede zerohero Nybegynder
28. november 2003 - 22:32 #40
Det lyder perfekt. Jeg vil give dig 200 points straight away!!! (Det kan bare ikke sige nej til vel :)) Det er til en skygge projektering i 3D. Det ville vaere perfekt med en Matrix!!!! :))
Avatar billede nmh Nybegynder
28. november 2003 - 22:39 #41
Man kan kun få 200 point for et spørgsmål, så du må oprette et nyt, der ikke blot er en kopi af dette. Det er nu ikke pointene, der er afgørende.
Avatar billede nmh Nybegynder
29. november 2003 - 00:20 #42
Her kommer så en mere generel løsning. Kan du bruge dette til noget, kan du jo give mig 50 point ekstra.
Lad trekanten have vinkelspidserne (0,0,0), (a,b,c) og (d,e,f).
Normalvektoren er så (n1, n2, n3), hvor
n1=bf-ec,  n2=dc-af, n3=ae-bd

Vi roterer nu vinklen v om z-aksen og derefter vinklen w om x-aksen.
Den samlede rotation er da defineret ved en 3x3 matrix A:

(Jeg skriver rækkerne op. Når det ender inde på siden, du læser, vil det se forkert ud, er jeg bange for, men hver række står på en linie for sig)

cos(w)        -sin(v)            0
cos(w)sin(v)  cos(w)cos(v)  -sin(v)
sin(w)sin(v)  sin(w)cos(v)  cos(v)

For at finde ud af, hvor et punkt med kendt stedvektor havner ved rotationerne, skal vi blot multiplicere matricen A med stedvektoren som en søjle.
Altså A gange stedvektoren som en søjlevektor.
Det gøres for de to vinkelspidser (a,b,c) og (d,e,f).
Det skal så gælde at y-koordinaten er nul i begge tilfælde.
Det giver de to ligninger:
acos(w)sin(v) + bcos(w)cos(v) - csin(v) =0
dcos(w)sin(v) + ecos(w)cos(v) - fsin(v) =0
Vi skal så blot bestemme v og w ud fra disse 2 ligninger.
Vi regner løs, uden at lave forbehold (man må ikke dividere med 0). Så der vil være specielle tilfælde, hvor der kan komme problemer.
Hver ligning divideres med cos(w). Den første multipliceres med f og den anden med c. Derefter trækes den nederste fra den øverste.
Så fås:
(af-cd)sin(v) + (bf-ce)cos(v)=0
og derfor gælder
tan(v)=(bf-ce)/(af-ce)=n1/n2
så kan v bestemmes (men der er flere muligheder!!)

Den første ligning kan omskrives til
asin(v)+bcos(v)-ctan(w)=0, og vi kender nu v. Så kan w findes ud fra ligningen
tan(w)=(asin(v)+bcos(v))/c
(Igen er der flere løsninger!!)
Du kan prøve med dine tal ovenfor, og se at det giver det samme.
Et eksempel:
ligningen tan(x)=-1 har løsningern x=-45grader og x=135grader
(hvis vi kun vil se på vinkler i intervallet -180grader til 180grader)
Avatar billede nmh Nybegynder
29. november 2003 - 00:30 #43
ups: et par skrivefejl:

Hver ligning divideres med cos(w). Den første multipliceres med f og den anden med c. Derefter trækes den nederste fra den øverste.
Så fås:
(af-cd)sin(v) + (bf-ce)cos(v)=0
og derfor gælder
tan(v)=(bf-ce)/(cd-af)=n1/n2
så kan v bestemmes (men der er flere muligheder!!)
Avatar billede nmh Nybegynder
29. november 2003 - 00:30 #44
trækes-->trækkes
Avatar billede zerohero Nybegynder
29. november 2003 - 15:40 #45
Jeg kan ikke rigtigt faa din matrix til at virke!
Avatar billede nmh Nybegynder
29. november 2003 - 16:11 #46
Det er heller ikke så underligt. jeg fik skrevet den forkert op, resten er OK. Jeg beklager.

cos(v)        -sin(v)            0
cos(w)sin(v)  cos(w)cos(v)  -sin(w)
sin(w)sin(v)  sin(w)cos(v)  cos(w)
Avatar billede zerohero Nybegynder
29. november 2003 - 21:30 #47
Jeg kan ikke faa folgende udregning til at stemme: tan(w)=(asin(v)+bcos(v))/c
Avatar billede zerohero Nybegynder
29. november 2003 - 21:30 #48
hvad mener du med asin og bcos?
Avatar billede zerohero Nybegynder
29. november 2003 - 21:32 #49
OK har fundet ud af det :) Du ganger dem!
Avatar billede zerohero Nybegynder
29. november 2003 - 21:34 #50
Men den Matrix driller stadig lidt! Bliver man nodt til at kende rotationen for at lave den matrix du beskriver? For saa er der jo ikke meget fidus ved det!
Avatar billede nmh Nybegynder
29. november 2003 - 21:35 #51
(a*sin(v)+b*cos(v))/c
Avatar billede nmh Nybegynder
29. november 2003 - 21:39 #52
Matricen kan bruges, når man kender v og w.
Disse vinkler kan bestemmes, hvis man kræver at en bestemt trekant roteres, så y-koordinaterne bliver nul.
Og det jeg har gjort her er at angive en generel metode til at bestemme v og w ud fra en given trekant, som man ønsker skal roteres, så y-koordianterne bliver 0.

Når man så kender v og w, kan matricen bruges til at bestemme, hvor andre punkter havner, nå man roterer.
Avatar billede zerohero Nybegynder
29. november 2003 - 21:44 #53
Ahhh paa den maade! Saa giver det jo mening :)
Avatar billede zerohero Nybegynder
29. november 2003 - 21:50 #54
Jeg opretter lige et nyt sporgsmaal... sa du kan faa dine velfortjente points! Jeg tror at det hele virker nu :) Det virker ogsaa hvis A og B koordinaterne er har et minus vaerdi - NICE!
Avatar billede nmh Nybegynder
29. november 2003 - 21:54 #55
Men der kan være specielle situationer, hvor man kommer til at dividere med 0. Så du skal passe lidt på.
c=0 giver f.eks. problemer.
Avatar billede zerohero Nybegynder
29. november 2003 - 21:58 #56
Ja, det har jeg lagt maerke til :)) Jeg maa bare lave en foresporgsel om situationen er gaeldende inden jeg foretager beregningen, ellers skal der beregnes med et tal meget taet paa nul!
Avatar billede nmh Nybegynder
29. november 2003 - 22:02 #57
Pas på med et tal tæt på 0. Så kan der komme andre problemer ind. De resultater man får kan blive ubrugelige.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB