Zitat von CaveRenderPro im Beitrag #34
Das Ergebnis aus CaveRenderPro und deinem Skript sieht bei einer Testdatei annähernd gleich aus:
Damit man das Ergebnis mit 'Ansicht - Perspektive' vergleichen kann, erfolgt mein erster Test mit einer Höhle, die ab -40m einer geraden Kluft folgt. In diesem Fall ist die alte 'default' Berechnung bereits sehr gut, da vorheriger Messzug und nachfolgender Messzug im Azimut in der Regel kaum voneinander abweichen. Mein Script bringt Verbesserungen in den wenigen Fällen, wo die Abweichungen größer sind. Bei deiner Lösung scheint die Darstellung aufgrund eines Fehlers gespiegelt zu sein. Könnte daran liegen, dass die Höhle vom Ende zum Eingang hin vermessen wurde.
[[File:testhoehle(1).jpg|none|500px|500px]][[File:testhoehle(2).jpg|none|500px|500px]][[File:testhoehle(3).jpg|none|500px|500px]][[File:testhoehle(4).jpg|none|500px|500px]]
Zweiter Test, wieder ein Höhlenteil, der einer annähernd geraden Kluft folgt, was das Überprüfen des Längsschnitts über die Perspektive ermöglicht. Die default Darstellung sollte weitgehend richtig sein, hat aber sichtbare Probleme bei Messpunkten im linken Bereich (sieht gespiegelt aus). Mein Script behebt die Fehler und sieht durchgehend gut aus. 'Daten - Berechnen - Richtungen' hat große Probleme im gleichen Bereich wie bei der default Berechnung (sieht gestaucht aus).
[[File:testhoehle(5).jpg|none|600px|600px]][[File:testhoehle(6).jpg|none|600px|600px]]
[[File:testhoehle(7).jpg|none|600px|600px]][[File:testhoehle(8).jpg|none|600px|600px]]
Fazit: Es scheint sich größtenteils um Fehler zu handeln, die man beheben kann (Spiegelungen), aber ich möchte dich nicht unnötig auf Fehlersuche schicken, wenn das Konzept bereits Probleme hat (Stauchungen).
Deswegen geht es im nächsten Test um grundsätzliche Probleme deiner Lösung. Wir schauen diesmal auf einen einzelnen Messpunkt in einer Höhle mit mäandrierendem Gangverlauf. Vorheriger Messzug und nachfolgender Messzug weichen im Azimut stark voneinander ab. Das ist genau der Fall für den ich mein Script entwickelt habe.
Getestet werden 6 Fake-Hilfslinien, hier in grün dargestellt, die so ausgewählt sind, dass wir uns für 4 von ihnen ihre Werte für Richtung schon vor der Berechnung logisch ableiten können. Das erlaubt es uns, die Ergebnisse der verschiedenen Berechnungen (Script, CaveRenderPro) auf Richtigkeit zu überprüfen.
Die lange grüne Hilfslinie, die exakt den gleichen Azimut hat wie der nachfolgende Messzug von 1/26 nach 1/27, muss im Datenfeld Richtung den Wert 1 haben. (grüne Linie überlagert Messzug)
Die lange grüne Hilfslinie, die exakt den um 180 Grad gedrehten Azimut hat wie der vorherige Messzug von 1/25 nach 1/26, muss im Datenfeld Richtung den Wert -1 haben. (grüne Linie überlagert Messzug)
Die beiden kurzen grünen Hilfslinien, die den jeweiligen Winkel zwischen den Messzügen halbieren, müssen im Datenfeld Richtung den Wert 0 haben. (Senkrechte grüne Linie)
Über die horizontalen kurzen grünen Linien können wir jetzt noch keine Aussage treffen.
[[File:testhoehle(9).jpg|none|500px|500px]]
Ein Blick auf die Daten und den Längsschnitt nach Anwendung meines Scripts bestätigt, dass die erwarteten Werte für die Richtung der grünen Hilfslinien eingehalten wurden.
(lange grüne Linien, die jeweiligen Messzüge überlagernd: Richtung 1/-1; kurze grüne Linien, winkelhalbierend: Richtung: 0)
Die mittel-langen grünen Linien, deren Richtung wir vorher nicht logisch ableiten konnten, haben nun Richtung 0,6/-0,6
[[File:testhoehle(10).jpg|none|900px|900px]]
Wenn ich aber 'Daten - Berechnen - Richtungen' anwende, bekomme ich ein anderes Ergebnis. Einerseits werden die winkelhalbierenden grünen Hilfslinien nach wie vor richtig mit Richtung = 0 angezeigt.
Allerdings haben die langen grünen Hilfslinien, die die Messzüge exakt überlagern, also bei denen der Azimut übereinstimmt, plötzlich 0,6/-0,6 als Richtung in den Daten. Das ist einfach falsch und sollte nicht passieren.
Dagegen werden die im Grundriss waagerecht dargestellten grünen Linien nun mit Richtung = 1/-1 dargestellt, wieder falsch. Im Vergleich zum Script genau umgekehrt.
Diese Ergebnisse sind falsch und das ist keine Meinung sondern Tatsache. Ich hoffe du konntest mir folgen auch wenn es viel Text ist. Ich will wirklich nur das Beste für die Community.
[[File:testhoehle(11).jpg|none|900px|900px]]
Meine Berechnung im Script ist wirklich nicht zu kompliziert.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function Standard_Formel (Azimut_vor_bereinigt, Azimut_nach_bereinigt, Azimut, SpalteL){
var SpalteE_raw = Math.abs(Azimut_vor_bereinigt - Azimut);
var SpalteE = Math.abs(SpalteE_raw - 180);
if (Azimut_nach_bereinigt - 180 >= 0){
var Azimut_nach_bereinigt2 = Azimut_nach_bereinigt - 180;
}else{
Azimut_nach_bereinigt2 = Azimut_nach_bereinigt + 180;
}
var SpalteG_raw = Math.abs(Azimut_nach_bereinigt2 - Azimut);
var SpalteG = Math.abs(SpalteG_raw - 180);
if(SpalteE === 0 || SpalteG === 0){
var SpalteK = 0;
}else if(SpalteE/SpalteG <= 1){
SpalteK = SpalteE/(SpalteE+SpalteG);
}else{
SpalteK = SpalteG/(SpalteE+SpalteG);
}
if(SpalteE < SpalteG){
SpalteL = SpalteK*Math.cos(degreeToRadians(Azimut_nach_bereinigt - Azimut))+(1 - SpalteK)*Math.cos(degreeToRadians(Azimut_vor_bereinigt - Azimut));
}else{
SpalteL = SpalteK*Math.cos(degreeToRadians(Azimut_vor_bereinigt - Azimut))+(1 - SpalteK)*Math.cos(degreeToRadians(Azimut_nach_bereinigt - Azimut));
}
return SpalteL;
}
Der Kern der Berechnung hier ist das hier: SpalteL = SpalteK*Math.cos(degreeToRadians(Azimut_nach_bereinigt - Azimut))+(1 - SpalteK)*Math.cos(degreeToRadians(Azimut_vor_bereinigt - Azimut))
Hier wird deine alte default-Lösung abgeändert als Kombination vom Kosinus beider Messzüge jeweils nach einem Prozentsatz (SpalteK) entsprechend der Abweichung in Grad der Hilfslinie von den beiden Messzügen.
Ich hoffe, wir können gemeinsam eine Lösung finden. Das Thema liegt mir am Herzen. Ich habe viel Zeit investiert.