Thread rotationsmodul in perl? (11 answers)
Opened by supersucker at 2005-06-09 21:20

supersucker
 2005-06-10 18:40
#55444 #55444
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
erstmal danke für den tip, das modul scheint wirklich das zu machen was ich möchte

jetzt steh ich aber vor einem anderen problem:

die dokumentation zu dem modul ist absolut besch....

ein kleiner auszug von der manpage
Code: (dl )
1
2
3
$rotation=Math::SO3->new("zr" => 3.14159/2, 
"xr" => 3.14159/4,
"zr" => 3.14159/8);


Quote
Create a new SO3-rotation matrix.


und

Code: (dl )
1
2
$rotation->format_matrix();
$rotation->format_matrix("%16.8f");


Quote
Computes a string
"[[m00 m01 m02][m10 m11 m12][m20 m21 m22]]"
displaying the matrix elements. Optionally, a sprintf
format-string may be specified for the matrix
elements. Default is "%10.5f".


so weit, so gut, wenn das auch klappen würde, mach ich folgendes einfaches beispiel basierend auf dem was ich oben geschrieben habe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use warnings;
use strict;

use Math::SO3;

my $rotation=Math::SO3->new("zr" => 3.14159/2,
"xr" => 3.14159/4,
"zr" => 3.14159/8);

$rotation->format_matrix("%16.8f");


erhalt ich überhaupt nichts als ausgabe, nicht mal eine fehlermeldung, das script läuft durch und ich krieg keine fehlermeldung.
desweiteren ist in der manpage (und das ist die einzigste informationsquelle die ich zu dem modul hab, weder über google noch über cpan hab ich mehr infos gefunden) nicht einmal beschrieben wie ich denn diese rotationsmatrix verwende, dazu steht nur:

Quote
Therefore, WE use the convention

(a1 ' ) ( ) (a1)
(a2 ' ) = ( M ) (a2)
(a3 ' ) ( ) (a3)


aber mit welcher speicherstruktur ich diese matrix multiplizieren kann, und was diese multiplikation zurückgibt wird nicht beschrieben. gehe ich mal von arrays aus

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use warnings;
use strict;

use Math::SO3;

my $rotation=Math::SO3->new("zr" => 3.14159/2,
"xr" => 3.14159/4,
"zr" => 3.14159/8);

my @arr = (23, 34, 45);
my @result = $rotation * @arr;

for (@result) {
print "\t $_ \n";
}


krieg ich lustigerweise genau eine zahl raus, das result-array enthält also genau eine zahl. aber es wird noch besser, diese zahl ändert sich auch noch bei jedem aufruf:

1. aufruf: 409054764
2. aufruf: 459128472
3. aufruf: 452714232

kann mir mit diesem modul jemand weiterhelfen? hat irgendjemand damit schon mal erfahrungen gesammelt? oder kennt jemand ein anderes modul, das das gleiche macht aber bedienbar ist und über eine ordentliche manpage verfügt?

danke im voraus

p.s.: oder könnte das an einer fehlerhaften installation liegen? als ich das modul installiert und ein

Code: (dl )
make test


ausgeführt hab, hat er 10 tests gemacht, 9 waren ok, einer nicht, welcher warum nicht ok war wurde nicht ausgegeben, aber installiert hat er das modul trotzdem ohne fehlermeldung

View full thread rotationsmodul in perl?