Plot3D: Punkte an Netzüberschneidungen zeichnen

8

Ich möchte Punkte an den sichtbaren Mesh-Schnittpunkten zeichnen, wie folgt:

%Vor%

Gewünschte Ausgabe:

Ich könnte berechnen, wo das Mesh sein wird, basierend auf PlotRange und der Mesh-Kardinalität, und dort Punkte zeichnen, aber ich denke, dass es einen einfacheren alternativen Weg geben sollte.

Ein großes Plus ist es, die Punktfarbe basierend auf dem Funktionswert auswählen zu können. Außerdem wäre die Beschriftung der Punkte wunderbar.

Irgendwelche Ideen?

    
Dr. belisarius 21.07.2011, 01:25
quelle

4 Antworten

8

Für was es wert ist, mag ich die einfache Lösung auch. Außerdem ist es einfach, die gleiche Farbfunktion sowohl für die Oberfläche als auch für die Punkte zu verwenden:

%Vor%

Bearbeiten: Wenn wir dies zu einem angepassten myPlot3D machen wollen, denke ich Folgendes:

%Vor%

Beachten Sie, dass Optionen auf beide Diagramme angewendet werden, jedoch zuerst gefiltert werden. Ich habe auch die Punkte auf der Kontur der Handlung entfernt. Zum Beispiel

%Vor%

wird als Ergebnis geben

    
FelixCQ 21.07.2011, 09:27
quelle
5

Hier ist ein sehr hackischer Ansatz: Nehmen Sie die Mesh-Linien in der Ausgabe und suchen Sie nach Überschneidungen. Es ist durchaus machbar, da die Ausgabe ein GraphicsComplex ist.
Suchen Sie zuerst die Indizes der Netzlinienpunkte im Grafikkomplex:

%Vor%

Gehe nun paarweise durch die Linien und suche nach Kreuzungen. Im Folgenden wird NestWhile verwendet, um rekursiv alle Paare (erste Zeile, eine andere Zeile) nach kürzeren und kürzeren Unterlisten der ursprünglichen Liste von Netzlinien zu durchsuchen. Die resultierenden Schnittpunkte werden über Sow :

zurückgegeben %Vor%

Schlagen Sie die Indizes in GraphicsComplex :

nach %Vor%

Zeigen Sie die Punkte zusammen mit den Originalgrafiken:

%Vor%

HTH

Aktualisieren : Um die farbigen Punkte zu erhalten, können Sie einfach

verwenden %Vor%     
Janus 21.07.2011 08:39
quelle
4

Nun, Janus hat mich geschlagen, die Antwort zu schreiben. Ich konnte den Teil der Verwendung von Part nicht herausfinden. In jedem Fall ist hier eine vereinfachte Version:

%Vor%

Aktualisierung:

Wenn Sie nur die Schnittpunkte des Netzes möchten, müssen Sie die Punkte entfernen, die sich an der Grenze befinden. Hier mache ich eine 4 x 4 Maschenweite.

%Vor%

    
jmlopez 21.07.2011 08:57
quelle
2

Wenn es mir möglich ist, bleibe ich lieber davon entfernt, mit der Graphics FullForm herumzuspielen. Also, gehen Sie in meine ursprünglichen Linien, fast das gleiche wie FelixCQ und versuchen, eine allgemeine Funktion zu bekommen.

%Vor%

Das Hauptproblem ist hier, dass die geplottete Funktion von den Formalparametern x und y ... abhängen muss. (

    
Dr. belisarius 22.07.2011 01:50
quelle

Tags und Links