Ich finde schon einen ganzen Tag den Fehler in meinem mex-File nicht
Es werden Strahlen berechnet und wenn diese nicht auf den Empfänger treffen sollen diese gar nicht aufgenommen werden.
1. Sie gehen nicht ganz auf den Empfänger
2. Es kommen auch Straheln heraus, die nicht auf den Empfänger treffen.
So hier der interessante Ausschnitt:
Code:
/* Reflexion 1.Ordnung */
pointerwinkel=&Winkelmatrix[0];
if(n>0 && winkel[n]>0 && winkel[n]!=winkel[n-1]){ // Bedignung nur hinreichend wenn Kanten nicht direkt || aufeinander folgen
//-------------------------------------------------------------------------
/* Koordinaten berechnen des reflektierten Strahls */
xArrayReflex=mxRealloc(xArrayReflex,speicherreflex*sizeof(double)); // mxRealloc: Berechnete Werte werden umkopiert
yArrayReflex=mxRealloc(yArrayReflex,speicherreflex*sizeof(double)); // (Speicher wurde vorher mit mxMalloc erzeugt)
linearerind=mxRealloc(linearerind,speicherreflex*sizeof(int));
mArray=mxRealloc(mArray,speicherreflex*sizeof(int));
} }
/* Überprüfung ob ein reflektierter Strahl auf den Empfänger getroffen ist */
wird jeder Punkt der Reflexion (xArrayReflex) mit den Empfängerpositionen verglichen (empfreflexx) ist einer dieser kleine genug, hat er den Empfänger getroffen und soll im Array bleiben. Ansonsten soll er überschrieben werden beim nächsten Durchlauf.
Falls es einen Treffer gab:
mArray[counter]=m; // Externer Schleifendzähler um Anzahl der Schleifen die beendet wurden zu zählen
counter+=1;
} }
wird die Anzahl in mArray[counter] geschrieben.
So sit die Idee, produziert aber noch Fehler...
Hier ein Beispiel wie es aussieht.
Der Würfel ist das Objekt, der Strahlen an Grenzflächen zurückwirft.
Rot Sender und Empfänger. Blau die Reflexionen ohne weitere Brechung (bis jetzt). Strahlen die der Sender aussendet werden nicht angezeigt.
Es sollen nur Strahlen angezeigt werden, die den Empfänger berühren.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.