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

 
Maxim Kuznetsov :

그러면 평면의 원이 아니라 3d의 실린더 :-) 코스가 나선형으로 진행됩니다. 원기둥 좌표를 성공적으로 표시하면 꽤 합리적인

아마도.
 
Maxim Kuznetsov :

그러면 평면의 원이 아니라 3d의 실린더 :-) 코스가 나선형으로 진행됩니다. 원기둥 좌표를 성공적으로 표시하면 꽤 합리적인

실제로 이것을 구현하는 것은 전혀 어렵지 않습니다. 2-5줄의 코드가 추가로 필요합니다. 나보다 먼저 하는 사람이 없다면 자유 시간이 되면 하겠다.

하지만 여기에 4K 화면이 있는 것이 더 좋습니다.

 
Maxim Kuznetsov :

그러면 평면의 원이 아니라 3d의 실린더 :-) 코스가 나선형으로 진행됩니다. 원기둥 좌표를 성공적으로 표시하면 꽤 합리적인

https://www.mql5.com/en/code/27662

속도와 코드 크기에 주의하십시오.
Direct X가 없으면 그게 전부입니다.

 
Nikolai Semko :

https://www.mql5.com/en/code/27662

속도와 코드 크기에 주의하십시오.
Direct X가 없으면 그게 전부입니다.

마술처럼!

반경은 무엇에 달려 있습니까?

다색반지 만들기 어렵나요?

이러한 시각화는 상위 50개 최적화 패스 또는 전체 압축 최적화를 평가하는 데 유용할 수 있습니다.

 
Nikolai Semko :

https://www.mql5.com/en/code/27662

속도와 코드 크기에 주의하십시오.
Direct X가 없으면 그게 전부입니다.

단순히 마술. !!!

그리고 축에 극좌표 그리드를 추가하고 거의 직선 "평행" (및 평행 "자오선") 까지 눈금을 변경하는 기능을 추가하면 기존 그래프로 부드럽게 전환됩니다.

 
Nikolai Semko :

https://www.mql5.com/en/code/27662

속도와 코드 크기에 주의하십시오.
Direct X가 없으면 그게 전부입니다.

++++
 

모두 감사합니다!


Aleksey Vyazmikin :

마술처럼!

반경은 무엇에 달려 있습니까?

다색반지 만들기 어렵나요?

이러한 시각화는 상위 50개 최적화 패스 또는 전체 압축 최적화를 평가하는 데 유용할 수 있습니다.

이 3D 그래픽 및 회전 제어에 대한 코드는 이 기능에 모두 맞습니다.

 void Draw( double &c[]) {
   double _r=_Height/ 2 - 7 ;
   int Per= int ( 2 * M_PI *_r);
   int X=_Width/ 2 ;
   int Y=_Height/ 2 - 5 ;
   double K= 10 *_Height;
   Canvas.Erase( 0xFF000000 );
   int Size = ArraySize (c);
   double max = c[ ArrayMaximum (c, 0 )];
   double min = c[ ArrayMinimum (c, 0 )];
   if (max-min<= 0 ) return ;
   double _a= 2 * M_PI /per*(_Width/ 2   - _MouseX + 5 *per); // угол камеры по горизонтали (_MouseX  - текущая координата X указателя мышки)
   double _b= 2 * M_PI /per*(_Height/ 2 - _MouseY + 5 *per); // угол камеры по вертикали   (_MouseY  - текущая координата Y указателя мышки)
   for ( int i= 0 ; i<Size; i++) {
       double r = _r*( 0.3 + 0.7 *(c[i]-min)/(max-min));
       double a = 2 * M_PI /per*i;
       double z =r -r* 2 * double (i)/Size;
       double x = cos (a)*r;
       double y = sin (a)*r;
       double R= sqrt (x*x+y*y+z*z);
       double x1=x* cos (_a)+z* sin (_a);
       double z1=-x* sin (_a)+z* cos (_a);
       double y1=y* cos (_b)+z1* sin (_b);
       double z2=-y* sin (_b)+z1* cos (_b);
      z2=z2+_r;
      x=X+K*x1/(z2+K);
      y=Y+K*y1/(z2+K);
      _PixelSet(( int )x,( int )y,Grad( double (i)/Size));
   }
   Canvas.Update();
}

이 함수의 입력에는 가격 배열만 있습니다. 남학생도 코드를 알아낼 수 있습니다. 가격의 1차원 배열은 포인트의 3차원 배열로 변환됩니다. 여기서 차원 z는 기본적으로 배열 요소의 수이며 XY 평면에서 가격은 중심(0,0)까지의 거리 r=sqrt( x 2 +y 2 )인 극좌표계로 표시됩니다. 가격 가치입니다.

이 기능은 색상 선택을 담당합니다.

 uint Grad( double p) {
   static uint Col[ 6 ]= { 0xFF0000FF , 0xFFFF00FF , 0xFFFF0000 , 0xFFFFFF00 , 0xFF00FF00 , 0xFF00FFFF };
   if (p> 0.9999 ) return Col[ 5 ];
   if (p< 0.0001 ) return Col[ 0 ];
   p=p* 5 ;
   int n=( int )p;
   double k=p-n;
   argb c1,c2;
   c1.clr=Col[n];
   c2.clr=Col[n+ 1 ];
   return ARGB( 255 ,c1.c[ 2 ]+ uchar (k*(c2.c[ 2 ]-c1.c[ 2 ])+ 0.5 ),
               c1.c[ 1 ]+ uchar (k*(c2.c[ 1 ]-c1.c[ 1 ])+ 0.5 ),
               c1.c[ 0 ]+ uchar (k*(c2.c[ 0 ]-c1.c[ 0 ])+ 0.5 ));
}

여기서 p는 입력으로 0과 1 사이의 숫자이고 출력으로 선택된 그라디언트 색상입니다. 이 경우 색상 템플릿 자체의 골격은 6가지 색상으로 구성됩니다(Col array).

색상, 완전한 자유로 원하는 대로 그리고 원하는 대로 페인트

 
Aleksey Panfilov :

단순히 마술. !!!

그리고 축에 극좌표 그리드를 추가하고 거의 직선 "평행" (및 평행 "자오선") 까지 눈금을 변경하는 기능을 추가하면 기존 그래프로 부드럽게 전환됩니다.

물론, 하지만 다른 스케일로 코드를 어지럽히고 싶지 않습니다. 저에게는 이 경우 불필요한 것이 없는 코드를 보여주는 것이 중요했습니다. 이해하기 쉽도록.

 
Nikolai Semko :

물론, 하지만 다른 스케일로 코드를 어지럽히고 싶지 않습니다. 저에게는 이 경우 불필요한 것이 없는 코드를 보여주는 것이 중요했습니다. 이해하기 쉽도록.

Nikolai, 귀하의 라이브러리에 대한 질문은 데이터를 고문에게 가져오는 방법입니다.

 
Martingeil :

Nikolai, 귀하의 라이브러리에 대한 질문은 데이터를 고문에게 가져오는 방법입니다.

질문을 이해하지 못했습니다. iCanvas는 그래픽 라이브러리입니다.
iCanvas를 통해 라인 시각화가 있는 지표를 만들고 버퍼링하지 않은 상태로 두면 데이터를 EA로 읽는 방법을 묻고 있을 것입니다. 그럼 좀 더 명확히 해주세요.

첫째, 일반 표시기에서와 같이 버퍼 표시기 배열을 생성하는 것을 금지하는 사람은 아무도 없지만 INDICATOR_CALCULATIONS로 만든 다음 일반적인 방식으로 iCustom을 통해 데이터에 액세스합니다.

둘째, 자원과 같은 강력한 도구가 있습니다. 표시기 버퍼 는 본질적으로 동일한 리소스입니다. 어쨌든 그들은 동일한 데이터 저장 및 액세스 메커니즘을 사용합니다.

리소스에 익숙해지십시오. 아주 간단하지는 않지만 데이터 전송을 위한 매우 중요한 도구입니다. 기존 표시기 버퍼 어레이보다 더 효율적인 고유한 라이브러리를 생성할 수 있습니다.

개인적으로, 나는 내가 출판하지 않은 나의 개발을 사용합니다. iCustom을 통해 액세스하는 것보다 더 편리하고 합리적으로 작동합니다. 모든 것은 리소스를 통해 구현됩니다.

사유: