Leinwand ist cool! - Seite 92

 
Nikolai Semko #:

Nikolai, ist es angemessen, hier DX-Fragen zu stellen? Ich brauche Hilfe.

Ich habe ein wenig an den Standard-Terminalcodes herumgebastelt, die die Möglichkeiten der 3D-Grafik demonstrieren. Das Morphing habe ich natürlich entfernt, es ist ungeschickt.

Die Frage ist folgende: Ich muss Punkte auf der Oberfläche zeichnen, wenn ich die Testfunktion optimiere, aber ich weiß nicht, wie ich das machen soll.

Es sollte in etwa so aussehen:

Dateien:
 
Nikolai Semko #:

Ich persönlich brauche Kanvas vor allem, um komplexe Algorithmen zu entwickeln. Ohne zwischengeschaltete Visualisierungen von Prozessen und Daten ist es viel schwieriger und länger, dies zu tun.

In der Tat kann es in einigen Phasen der Entwicklung notwendig sein, die Prozesse zu visualisieren

 
Andrey Dik #:

Nikolai, ist es angemessen, hier DX-Fragen zu stellen? Ich brauche Hilfe.

Ich habe ein wenig an den Standard-Terminalcodes herumgebastelt, die die Möglichkeiten der 3D-Grafik demonstrieren. Das Morphing habe ich natürlich entfernt, es ist ungeschickt.

Die Frage ist folgende: Ich muss Punkte auf der Oberfläche zeichnen, wenn ich die Testfunktion optimiere, aber ich weiß nicht, wie ich das machen soll.

Es sollte in etwa so aussehen:

Nun, wenn man Punkte im Raum mit den Koordinaten x,y,z braucht, dann ist alles einfach und ohne DirectX und OpenCL( obwohl mit ihnen natürlich produktiver sein wird).
Maximal nah an diesem Thema in diesem Beispiel:
h ttps://www.mql5.com/ru/forum/227736/page72#comment_25130501
 
Nikolai Semko #:
Nun, wenn Sie Punkte im Raum mit Koordinaten x,y,z benötigen, dann ist alles einfach und ohne DirectX und OpenCL (obwohl mit ihnen wird natürlich produktiver sein).
Maximale Nähe zu diesem Thema in diesem Beispiel:
Danke, ich werde es versuchen. Ich werde Sie später wissen lassen, was ich bekam.
 
Andrey Dik #:
Danke, ich werde es ausprobieren. Ich werde später darüber berichten, was ich herausgefunden habe.
Bei mehreren Zehntausend Punkten sollte es keine Verzögerungen geben, bei Hunderttausenden von Punkten ist es besser, den Berechnungsteil mit OpenCl zu machen.
Am ressourcenintensivsten sind die trigonometrischen Funktionen (sin, cos). Es ist also sinnvoll, eigene Tabellen für diese Funktionen zu verwenden, wenn es zu Verzögerungen kommt, wie ich im ersten Beispiel dieses Zweigs festgestellt habe.
 
Nikolai Semko #:
Bei mehreren Zehntausend Punkten sollte es keine Verzögerungen geben, bei Hunderttausenden ist es besser, den Berechnungsteil mit OpenCl durchzuführen.
Am ressourcenintensivsten sind die trigonometrischen Funktionen (sin, cos). Es ist also sinnvoll, eigene Tabellen für diese Funktionen zu verwenden, wenn es zu Verzögerungen kommt, wie ich im ersten Beispiel dieses Zweigs festgestellt habe.
Ich befürchte, dass bei einer kleinen Anzahl von Punkten eine kontinuierliche Oberfläche nicht funktionieren wird, sie wird wie ein Sieb aussehen.
Ich denke, ich habe das Prinzip in dem Beispiel verstanden, ich werde Ihnen zeigen, was ich bekommen habe.
 
Andrey Dik #:
Ich befürchte, dass bei einer geringen Anzahl von Punkten eine kontinuierliche Oberfläche nicht funktionieren wird, sie wird wie ein Sieb aussehen.
Ich verstehe das Prinzip in dem Beispiel, ich zeige Ihnen, was ich habe.

Ja, leider waren meine Befürchtungen berechtigt.


 
Andrey Dik #:

Ja, die Befürchtungen waren leider berechtigt.


Senden Sie mir Ihr Array von 3D-Punkten über FileWriteArray
 
Nikolai Semko #:
Übergeben Sie mir Ihr Array von 3D-Punkten über FileWriteArray
Ich bin mir nicht sicher, wie man es macht, aber die Oberflächenformel ist wie folgt:

double Z (double x, double y)
  {
    double res =
    20.0 + x*x + y*y - 10.0 * cos (2.0 * M_PI * x) - 10.0 * cos (2.0 * M_PI * y)
    - 40.0  * exp (-(pow (x - 1.0, 2) + y*y) / 0.1)
    + 200.0 * exp (-(pow (x + M_PI * 0.47, 2) + pow (y - M_PI * 0.2, 2)) / 0.1)  //global max
    + 100.0 * exp (-(pow (x - 0.5, 2) + pow (y + 0.5, 2)) / 0.01)
    - 60.0  * exp (-(pow (x - 1.5, 2) + pow (y - 2.0, 2)) / 0.02)                //global min
    - 50.0  * exp (-(pow (x + 1.3, 2) + pow (y + 0.2, 2)) / 0.5)
    + 60.0  * exp (-(pow (x - 1.5, 2) + pow (y + 1.5, 2)) / 0.1);

    return res;
  }
 
Andrey Dik #:
Ich bin mir nicht sicher, wie ich es machen soll, aber die Oberflächenformel ist wie folgt:

.

Andrei, möchten Sie nur ein Bild erhalten oder möchten Sie ein Bild in MQL5 erhalten?
Ich kann es leicht visualisieren, aber es gibt fortgeschrittenere Werkzeuge für die Visualisierung.
Zum Beispiel, hier ist Ihre Formel, wie sie auf dieser Ressource aussieht:
https://www.desmos.com/3d/887356da26.