Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Drehung einer Matrix

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.04.2012, 11:17 Uhr
bellus



kann mir mal bitte jemand helfen!!!!
ich hab versucht eine matrix um einen bestimmten winkel alpha(bogenmaß) zu drehen, aber es funktioniert einfach nicht! teilweise wird das bild nicht nur gedreht, sondern auch verschoben. auch sind die winkel um die gedreht wird viel zu groß?!?! bei der drehung um 0.001 dürfte man am bild selbst keine veränderung erkennen können.
ich habe folgenden code verwendet:


C++:
#pragma rtGlobals=1        // Use modern global access method.
function turn(alpha)
variable alpha

setDatafolder root:
wave/z handle = gisaxs0

//check is wave exists
if(waveexists(handle))
    print "wave exists"
endif

make/o/n=(2048,2048) newGISAXS
wave/z newHandle=gisaxs5

variable i,j
variable help,xNew,yNew
//make sure matrix is empty
for(i=0;i<=2047;i+=1)
    for(j=0;j<=2047;j+=1)
    newHandle[i][j]=0
    endfor
endfor

for(i=0;i<=2047;i+=1)
    for(j=0;j<=2047;j+=1)
    help=handle[i][j]
    yNew =i-round(j*alpha)
    xNew=round((1-(alpha)^2)*j)+round(i*alpha)
    if(help!=0)
        //print num2str(help)+" at "+num2str(yNew)+" and "+num2str(xNew)
        newHandle[yNew][xNew]=help
    else
        newHandle[yNew][xNew]=0
    endif
    endfor
endfor

end





Edit: cpp-tags eingefügt; - beim nächsten mal bitte selber machen!

Dieser Post wurde am 25.04.2012 um 08:38 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.04.2012, 16:52 Uhr
Hans
Library Walker
(Operator)


Hi,

was ist das denn für ein Dialekt? - Das sieht ja aus wie eine Mischung aus C, Pascal und Fortran.

Wenn ich das auf den ersten Blick sehe, fällt mir auch kein Compiler ein, der den Code so wie er da steht überhaupt übersetzen würde. Ansonsten fällt mir diese Zeile auf:

C++:
    xNew=round((1-(alpha)^2)*j)+round(i*alpha)


Wenn die Rechnung da "alpha hoch 2" sein soll, dann ist da ein Fehler drin, denn das ^-Zeichen steht in C/C++ nicht für potenzieren, sondern für eine Exclusiv-Oder Verknüpfung, also das, wozu man in anderen Sprachen XOR schreiben würde. Zum potenzieren gibt es die Funktion pow():

Zitat:
double pow(double x, double y);
x raised to power y



Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.04.2012, 08:44 Uhr
ao

(Operator)


Hi, kann es sein, dass das PHP ist?

Ein Bild drehen ... hmmmm ... um beliebige Winkel oder nur um 90 / 180 / 270 Grad? Wie soll das Bild aussehen nach einer Drehung um, sagen wir, 45 Grad? Auf der Spitze stehend oder völlig verzerrt?

Aus deiner Berechnungsroutine werde ich nicht schlau, vielleicht könntest du die Formeln mal kurz herleiten und erklären, was die machen sollen?

Wenn alpha im Bogenmaß angegeben ist, möchte ich spontan vermuten, dass man es noch irgendwie mit 2 Pi ins Verhältnis setzen muss und/oder dass da noch Sinus und Cosinus reinmüssen. Kann es sein, dass du deswegen feststellst, dass deine Drehwinkel "viel zu groß" sind?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.04.2012, 22:24 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ja c++ ist das definitiv nicht

würde zu einer mischung aus php, fortran, pascal und c++ tendieren.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.04.2012, 08:41 Uhr
Tommix



'Morgen,
ein googeln nach "#pragma rtGlobals" hat mich auf Igor gebracht: www.wavemetrics.com/. Allerdings sehe ich da dieses for-Konstrukt nicht.
Vielleicht sollte man den Thread in die Rätselecke verschieben .

Gruß,
Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: