Canvas - это круто! - страница 92

 
Nikolai Semko #:

Николай, а по DX тут уместно задавать вопросы? Нужна помощь.

Поковырял немного стандартные коды терминала, которые демонстрируют возможности 3D графики. Убрал морфинг, топорно конечно.

Вопрос вот в чем, мне нужно рисовать точки на поверхности при оптимизации тестовой функции, не соображу как это сделать.

Должно получится что-то типа такого:

Файлы:
 
Nikolai Semko #:

лично мне канвас нужен в первую очередь для разработки сложных алгоритмов. Без промежуточных визуализаций процессов и данных сделать это намного сложнее и дольше.

действительно, на некоторых этапах разработки бывает просто необходима визуализация процессов

 
Andrey Dik #:

Николай, а по DX тут уместно задавать вопросы? Нужна помощь.

Поковырял немного стандартные коды терминала, которые демонстрируют возможности 3D графики. Убрал морфинг, топорно конечно.

Вопрос вот в чем, мне нужно рисовать точки на поверхности при оптимизации тестовой функции, не соображу как это сделать.

Должно получится что-то типа такого:

Ну если нужно точки в пространстве с координатами x,y,z, то всё просто и без DirectX и OpenCL( хотя с ними будет производительнее конечно)
Максимально близко по этой теме в этом примере:
 
Nikolai Semko #:
Ну если нужно точки в пространстве с координатами x,y,z, то всё просто и без DirectX и OpenCL( хотя с ними будет производительнее конечно)
Максимально близко по этой теме в этом примере:
Спасибо, попробую. Позже отпишусь что у меня получилось.
 
Andrey Dik #:
Спасибо, попробую. Позже отпишусь что у меня получилось.
Если точек несколько десятков тысяч, то лагов не должно быть, если сотни тысяч, то лучше уже расчетную часть делать с использованием OpenCl. 
Самые ресурсоёмкие это тригонометрические функции(sin, cos). Поэтому имеет смысл в случае лагов использовать свои таблицы этих функций, как я реализовал в первом примере этой ветки.
 
Nikolai Semko #:
Если точек несколько десятков тысяч, то лагов не должно быть, если сотни тысяч, то лучше уже расчетную часть делать с использованием OpenCl. 
Самые ресурсоёмкие это тригонометрические функции(sin, cos). Поэтому имеет смысл в случае лагов использовать свои таблицы этих функций, как я реализовал в первом примере этой ветки.
Боюсь, что с малым количеством точек непрерывная поверхность не получится, будет как сито выглядеть.
Принцип в примере я вроде понял, покажу что получилось.
 
Andrey Dik #:
Боюсь, что с малым количеством точек непрерывная поверхность не получится, будет как сито выглядеть.
Принцип в примере я вроде понял, покажу что получилось.

Да, опасения, к сожалению, оправдались.


 
Andrey Dik #:

Да, опасения, к сожалению, оправдались.


Сбросьте мне свой массив 3d  точек через FileWriteArray
 
Nikolai Semko #:
Сбросьте мне свой массив 3d  точек через FileWriteArray
я не уверен как это сделать, но формула поверхности такая:

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 #:
я не уверен как это сделать, но формула поверхности такая:

Андрей, а Вам просто получить картинку надо или получить картинку именно на MQL5?
Я конечно могу легко визуализировать это, но есть ведь более продвинутые средства для визуализации. 
Вот например ваша формула как выглядит на данном ресурсе:
https://www.desmos.com/3d/887356da26

Причина обращения: