Avatar billede Slettet bruger
27. januar 2012 - 19:12 Der er 2 kommentarer og
1 løsning

Vektor regning

Jeg har forsøgt at ligge 3 vektorer sammen.
Jeg har brugt sammen metode som jeg bruger i excel.
I excel virker metoden.
Resultatet bliver det samme som på min lommeregner.

Men i dette PHP forsøg virker det ikke.
Min længde ($a5) bliver rigtigt men vinklen ($b5) giver et forkert resultat. Har efterhånden prøvet alt jeg kan se php siderne siger man skal.

Resultatet skal give 280,477 i vinkel 8,6
De 3 vektor er L1 i vinkel V1, L2 i vinkel V2 og L3 i vinkel V3.


$l1 = 230;
$v1 = 0;
$l2 = 20;
$v2 = -30;
$l3 = 60;
$v3 = 60;

$a1=$l1*cos($v1/180*pi());
$a2=$l2*cos($v2/180*pi());
$a3=$l3*cos($v3/180*pi());
$b1=$l1*sin($v1/180*pi());
$b2=$l2*sin($v2/180*pi());
$b3=$l3*sin($v3/180*pi());
$a4=$a1+$a2+$a3;
$b4=$b1+$b2+$b3;
$a5=sqrt(pow($a4, 2)+pow($b4, 2));
$b5=rad2deg(atan2($a1+$a2+$a3,$b1+$b2+$b3));
echo"$a5 - $b5";
Avatar billede Broxigar Praktikant
27. januar 2012 - 19:49 #1
Jeg forstår ikke helt den måde du vil lægge de tre vektorer sammen på.

Den måde man lægger vektorer sammen, er at addere x-koordinaterne og y-koordinaterne

Så jeg ville ændre koden til noget ala dette:

$length1 = 230;
$length2 = 20;
$length3 = 60;

$angle1 = 0;
$angle2 = -30;
$angle3 = 60;

$x1 = $length1 * cos(deg2rad($angle1));
$x2 = $length2 * cos(deg2rad($angle2));
$x3 = $length3 * cos(deg2rad($angle3));

$y1 = $length1 * sin(deg2rad($angle1));
$y2 = $length2 * sin(deg2rad($angle2));
$y3 = $length3 * sin(deg2rad($angle3));

$xNew = $x1 + $x2 + $x3;
$yNew = $y1 + $y2 + $y3;

$lengthNew = sqrt(pow($xNew, 2) + pow($yNew, 2));
$angleNew = rad2deg( acos( $xNew / $lengthNew) );


Jeg håber dette giver det korrekte, jeg har ikke prøvet at køre det, men logikken burde være korrekt :)
Avatar billede Slettet bruger
27. januar 2012 - 20:03 #2
#0
Det ville have virket hvis du havde byttet om på de to argumenter i atan2. Fra php:
float atan2 ( float $y , float $x )

Dvs:
$b5=rad2deg(atan2($b1+$b2+$b3,$a1+$a2+$a3));
eller brug $a4 og $b4 når du allerede har lavet summerne:
$b5=rad2deg(atan2($b4,$a4));

Broxigar's løsning ser også rigtig ud, og lidt nemmere at læse. :)
Avatar billede Slettet bruger
28. januar 2012 - 00:03 #3
Tak for til jer begge.
Begge dele virker Broxigars måde er måske lidt nemmere så det blev vinderen.
Men du havde ret tolamaps, hvis jeg ikke havde overset det var y,x og ikke x,y så var det lykkes.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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