0 Daumen
599 Aufrufe

Dieser Post gilt zur Dokumentation eines von Werner-Salomon entdeckten Problems beim Geoknecht 3D:


Problem:

Es gibt ein 'unerwartetes' Verhalten beim Geoknecht3D; Kommando polygon.

Browser: Google Chrome Version 72

Link: https://www.matheretter.de/geoservant/de?draw=polygon(2%7C2%7C0%20-2%7C2%7C0%20-2%7C2%7C4%200%7C2%7C4%202%7C2%7C2)%7B0F0%7D%0Apolygon(2%7C-2%7C0%202%7C2%7C0%202%7C2%7C2%202%7C0%7C4%202%7C-2%7C4)%7B0C0%7D

Meine Eingabe:

polygon(2|2|0 -2|2|0 -2|2|4 0|2|4 2|2|2){0F0}
polygon(2|-2|0 2|2|0 2|2|2 2|0|4 2|-2|4){0C0}


und so sieht das aus:

Untitled3.png

beim ersten Polygon ist das Polygon offen und beim zweiten eine geschlossene Fläche !? Das zweite (parallel zur YZ-Ebene) wäre das gewünschte.


Antwort:

Ein interessanter Fehler. Der entspringt tatsächlich der ThreeJS-Library.

Ein Hack hierfür ist, 0.01 auf die zwei y-Werte des zweiten Polygons aufzuschlagen.

polygon(2|-2|0 2|2|0 2|2|2 2|0|4 2|-2|4){0C0}
polygon(2|2.01|0 -2|2|0 -2|2|4 0|2.01|4){0C0}

https://www.matheretter.de/geoservant/de?draw=polygon(2%7C-2%7C0%202%7C2%7C0%202%7C2%7C2%202%7C0%7C4%202%7C-2%7C4)%7B0C0%7D%0Apolygon(2%7C2.01%7C0%20-2%7C2%7C0%20-2%7C2%7C4%200%7C2.01%7C4)%7B0C0%7D

Leider ist der Fehler nicht ohne Weiteres behebbar, vgl. hier.

Und hier:

You could write a function that detects the duplicate vertices and moves them backward 1px to make them discrete(they no more share a common edge). This way there will be no more common edges and no errors are produced but the visual result still looks the same.

https://stackoverflow.com/q/16158931/1066234 und https://github.com/mrdoob/three.js/issues/3386#issuecomment-17109756


Nachtrag:

Scheint jetzt zu klappen, auch ohne Hack (eine Verschiebung um 0.0001 habe ich in den Code aufgenommen).

Doch bei deinem Beispiel muss der letzte Polygonpunkt nach vorne gesetzt werden. Warum habe ich nicht herausbekommen. Aber dann klappt es :)

https://www.matheretter.de/geoservant/de?draw=polygon(0%7C2%7C4%202%7C2%7C2%202%7C2%7C0%20-2%7C2%7C0%20-2%7C2%7C4)%7B0F0%7D%0Apolygon(2%7C-2%7C0%202%7C2%7C0%202%7C2%7C2%202%7C0%7C4%202%7C-2%7C4)%7B0C0%7D

Das klappt immer noch nicht ganz (letzter Punkt muss als erster Punkt gesetzt sein): https://www.matheretter.de/geoservant/de?draw=polygon(2%7C2%7C2%202%7C2%7C0%20-2%7C2%7C0%20-2%7C2%7C4%200%7C2%7C4)%7B0F0%7D

Irgendwie kommen sich -2|2|4 und 0|2|4 in die Quere.

Avatar von 1,7 k

1 Antwort

0 Daumen
Avatar von 162 k 🚀

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community