캔버스 멋지다! - 페이지 92

 
Nikolai Semko #:

Nikolai, 여기서 DX 질문을 하는 것이 적절한가요? 도움이 필요해요.

3D 그래픽의 가능성을 보여주는 표준 터미널 코드를 약간 수정했습니다. 물론 모핑을 제거했지만 어색하긴 합니다.

문제는 테스트 기능을 최적화 할 때 표면에 점을 그려야하는데 어떻게해야하는지 알 수 없다는 것입니다.

다음과 같은 결과가 나올 것입니다:

파일:
 
Nikolai Semko #:

개인적으로 복잡한 알고리즘을 개발하려면 무엇보다도 칸바스가 필요합니다. 프로세스와 데이터의 중간 시각화가 없으면 훨씬 더 어렵고 오래 걸립니다.

실제로 개발의 일부 단계에서는 프로세스를 시각화해야 할 수도 있습니다.

 
Andrey Dik #:

Nikolai, 여기서 DX 질문을 하는 것이 적절한가요? 도움이 필요해요.

3D 그래픽의 가능성을 보여주는 표준 터미널 코드를 약간 수정했습니다. 물론 모핑을 제거했지만 어색하긴 합니다.

문제는 테스트 기능을 최적화 할 때 표면에 점을 그려야하는데 어떻게해야하는지 알 수 없다는 것입니다.

다음과 같은 결과가 나올 것입니다:

음, 좌표 x,y,z가있는 공간에 점이 필요한 경우 모든 것이 간단하고 DirectX 및 OpenCL이 필요하지 않습니다 (물론 더 생산적 일 것입니다).
이 예제에서이 주제에 최대한 가깝습니다:
h ttps://www.mql5.com/ru/forum/227736/page72#comment_25130501
 
Nikolai Semko #:
글쎄, 좌표 x,y,z가있는 공간에 포인트가 필요한 경우 모든 것이 간단하고 DirectX 및 OpenCL이 없으면 (물론 더 생산적이지만) 모든 것이 간단합니다.
이 예제에서 이 주제에 최대한 가깝습니다:
고마워, 나는 그것을 시도 할 것이다. 나중에 내가 얻은 것을 알려 드리겠습니다.
 
Andrey Dik #:
감사합니다, 시도해 보겠습니다. 나중에 제가 얻은 것을보고하겠습니다.
수만 개의 포인트가 있으면 지연이 없어야하고 수십만 개의 포인트가 있으면 OpenCl을 사용하여 계산 부분을 수행하는 것이 좋습니다.
가장 리소스 집약적 인 것은 삼각 함수 (sin, cos)입니다. 따라서 이 분기의 첫 번째 예제에서 깨달은 것처럼 지연이 발생하는 경우 이러한 함수에 대한 자체 테이블을 사용하는 것이 좋습니다.
 
Nikolai Semko #:
수만 개의 포인트가 있는 경우 지연이 없어야 하며, 수십만 개의 포인트가 있는 경우 계산 부분을 OpenCl을 사용하여 수행하는 것이 좋습니다.
가장 리소스 집약적인 것은 삼각 함수(sin, cos)입니다. 따라서 이 분기의 첫 번째 예제에서 깨달은 것처럼 지연이 발생하는 경우 이러한 함수에 대한 자체 테이블을 사용하는 것이 좋습니다.
점 수가 적 으면 연속적인 표면이 작동하지 않고 체처럼 보일까 두렵습니다.
예제에서 원리를 이해했다고 생각하며 제가 얻은 것을 보여 드리겠습니다.
 
Andrey Dik #:
포인트 수가 적으면 연속적인 표면이 작동하지 않아 체처럼 보일까 봐 걱정됩니다.
예제에서 원리를 이해했으니 제가 얻은 것을 보여드리겠습니다.

네, 안타깝게도 제 두려움은 정당했습니다.


 
Andrey Dik #:

네, 안타깝게도 우려는 기우에 불과했습니다.


FileWriteArray를 통해 3D 포인트 배열을 보내주세요.
 
Nikolai Semko #:
FileWriteArray를 통해 3D 포인트 배열을 드롭하세요.
방법을 잘 모르겠지만 표면 공식은 다음과 같습니다:

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.

사유: