La tela è forte! - pagina 92

 
Nikolai Semko #:

Nikolai, è opportuno fare domande a DX qui? Ho bisogno di aiuto.

Ho fatto un po' di armeggi con i codici standard del terminale, che dimostrano le possibilità della grafica 3D. Ho rimosso il morphing, ovviamente, che è goffo.

La domanda è questa: ho bisogno di disegnare punti sulla superficie quando ottimizzo la funzione di test, ma non riesco a capire come farlo.

Dovrebbe risultare qualcosa di simile:

File:
 
Nikolai Semko #:

Personalmente, ho bisogno di kanvas innanzitutto per sviluppare algoritmi complessi. Senza visualizzazioni intermedie di processi e dati, è molto più difficile e lungo farlo.

In effetti, in alcune fasi dello sviluppo può essere necessario visualizzare i processi

 
Andrey Dik #:

Nikolai, è opportuno fare domande a DX qui? Ho bisogno di aiuto.

Ho fatto un po' di armeggi con i codici standard del terminale, che dimostrano le possibilità della grafica 3D. Ho rimosso il morphing, ovviamente, che è goffo.

La domanda è questa: ho bisogno di disegnare punti sulla superficie quando ottimizzo la funzione di test, ma non riesco a capire come farlo.

Dovrebbe risultare qualcosa di simile:

Beh, se avete bisogno di punti nello spazio con coordinate x,y,z, allora tutto è semplice e senza DirectX e OpenCL (anche se con loro sarà più produttivo, ovviamente).
Il massimo è la vicinanza a questo argomento in questo esempio:
h ttps://www.mql5.com/ru/forum/227736/page72#comment_25130501
 
Nikolai Semko #:
Beh, se avete bisogno di punti nello spazio con coordinate x,y,z, allora tutto è semplice e senza DirectX e OpenCL (anche se con essi sarà più produttivo, naturalmente).
L'esempio è il più vicino a questo argomento:
Grazie, lo proverò. Ti farò sapere più tardi cosa ho ottenuto.
 
Andrey Dik #:
Grazie, farò una prova. Riferirò più tardi su ciò che ho ottenuto.
Se ci sono alcune decine di migliaia di punti, non ci dovrebbero essere ritardi, se ci sono centinaia di migliaia di punti, è meglio fare la parte di calcolo usando OpenCl.
Le funzioni trigonometriche (sin, cos) sono quelle che richiedono più risorse. Quindi ha senso utilizzare le proprie tabelle di queste funzioni in caso di ritardo, come ho capito nel primo esempio di questo ramo.
 
Nikolai Semko #:
Se ci sono alcune decine di migliaia di punti, non ci dovrebbero essere ritardi, se ce ne sono centinaia di migliaia, è meglio fare la parte di calcolo usando OpenCl.
Le funzioni trigonometriche (sin, cos) sono quelle che richiedono più risorse. Quindi ha senso utilizzare le proprie tabelle di queste funzioni in caso di ritardo, come ho capito nel primo esempio di questo ramo.
Temo che con un numero ridotto di punti una superficie continua non funzioni, sembrerebbe un colabrodo.
Credo di aver capito il principio dell'esempio, vi mostrerò cosa ho ottenuto.
 
Andrey Dik #:
Temo che con un numero ridotto di punti una superficie continua non funzioni, sembrerebbe un colabrodo.
Ho capito il principio dell'esempio, vi mostrerò cosa ho ottenuto.

Sì, purtroppo i miei timori erano giustificati.


 
Andrey Dik #:

Sì, i timori erano purtroppo giustificati.


Inviatemi il vostro array di punti 3d tramite FileWriteArray
 
Nikolai Semko #:
Inviami la tua matrice di punti 3D tramite FileWriteArray
Non sono sicuro di come farlo, ma la formula della superficie è come questa:

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 #:
Non sono sicuro di come farlo, ma la formula della superficie è la seguente:

.

Andrei, vuoi solo ottenere un'immagine o vuoi ottenere un'immagine in MQL5?
Posso visualizzarla facilmente, ma ci sono strumenti più avanzati per la visualizzazione.
Per esempio, ecco la tua formula come appare su questa risorsa:
https://www.desmos.com/3d/887356da26.

Motivazione: