La toile est cool ! - page 92

 
Nikolai Semko #:

Nikolaï, est-il approprié de poser des questions sur DX ici ? J'ai besoin d'aide.

J'ai bricolé les codes standards du terminal, qui démontrent les possibilités des graphiques 3D. J'ai supprimé le morphing, bien sûr, c'est maladroit.

La question est la suivante : j'ai besoin de dessiner des points sur la surface lors de l'optimisation de la fonction de test, mais je n'arrive pas à comprendre comment faire.

Cela devrait donner quelque chose comme ça :

Dossiers :
 
Nikolai Semko #:

Personnellement, j'ai besoin de kanvas avant tout pour développer des algorithmes complexes. Sans visualisation intermédiaire des processus et des données, il est beaucoup plus difficile et long de le faire.

En effet, à certains stades du développement, il peut être nécessaire de visualiser les processus

 
Andrey Dik #:

Nikolaï, est-il approprié de poser des questions sur DX ici ? J'ai besoin d'aide.

J'ai bricolé les codes standards du terminal, qui démontrent les possibilités des graphiques 3D. J'ai supprimé le morphing, bien sûr, c'est maladroit.

La question est la suivante : j'ai besoin de dessiner des points sur la surface lors de l'optimisation de la fonction de test, mais je n'arrive pas à comprendre comment faire.

Cela devrait donner quelque chose comme ça :

Si vous avez besoin de points dans l'espace avec des coordonnées x,y,z, alors tout est simple et sans DirectX et OpenCL (bien qu'avec eux ce sera plus productif bien sûr).
Cet exemple se rapproche le plus possible de ce sujet :
h ttps://www.mql5.com/ru/forum/227736/page72#comment_25130501
 
Nikolai Semko #:
Si vous avez besoin de points dans l'espace avec des coordonnées x,y,z, alors tout est simple et sans DirectX et OpenCL (bien qu'avec eux, ce sera plus productif bien sûr).
Cet exemple est très proche de ce sujet :
Merci, je vais essayer. Je vous ferai savoir plus tard ce que j'ai obtenu.
 
Andrey Dik #:
Merci, je vais essayer. Je ferai un rapport plus tard sur ce que j'ai obtenu.
S'il y a plusieurs dizaines de milliers de points, il ne devrait pas y avoir de décalage, s'il y a des centaines de milliers de points, il vaut mieux faire la partie calcul à l'aide d'OpenCl.
Les fonctions trigonométriques (sin, cos) sont les plus gourmandes en ressources. Il est donc logique d'utiliser vos propres tables de ces fonctions en cas de décalages, comme je l'ai réalisé dans le premier exemple de cette branche.
 
Nikolai Semko #:
S'il y a plusieurs dizaines de milliers de points, il ne devrait pas y avoir de décalage, s'il y en a des centaines de milliers, il vaut mieux faire la partie calcul avec OpenCl.
Les fonctions trigonométriques (sin, cos) sont les plus gourmandes en ressources. Il est donc logique d'utiliser vos propres tables de ces fonctions en cas de décalages, comme je l'ai réalisé dans le premier exemple de cette branche.
Je crains qu'avec un petit nombre de points, une surface continue ne fonctionne pas, elle ressemblerait à une passoire.
Je pense avoir compris le principe dans l'exemple, je vais vous montrer ce que j'ai obtenu.
 
Andrey Dik #:
Je crains qu'avec un petit nombre de points, une surface continue ne fonctionne pas, elle ressemblerait à une passoire.
Je comprends le principe dans l'exemple, je vais vous montrer ce que j'ai obtenu.

Oui, malheureusement mes craintes étaient justifiées.


 
Andrey Dik #:

Oui, les craintes étaient malheureusement justifiées.


Envoyez-moi votre tableau de points 3d via FileWriteArray
 
Nikolai Semko #:
Déposez-moi votre tableau de points 3d via FileWriteArray
Je ne sais pas trop comment faire, mais la formule de la surface est la suivante :

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 #:
Je ne sais pas exactement comment procéder, mais la formule de surface est la suivante :

.

Andrei, voulez-vous simplement obtenir une image ou voulez-vous obtenir une image dans MQL5 ?
Je peux facilement la visualiser, mais il existe des outils de visualisation plus avancés.
Par exemple, voici votre formule telle qu'elle apparaît sur cette ressource :
https://www.desmos.com/3d/887356da26.