를 포함하는 두 평행선 사이의 거리를 계산하십시오. - 페이지 3

 
Sergey Kolemanov :

높음과 낮음 사이의 거리를 계산하면 선이 있습니다.

이것들은 평행선입니다. 그리고 평행선에서 수직 거리는 모든 막대에서 항상 동일합니다. 그의 예에서 선 사이의 거리는 ( 높음 [ 10 ]- 낮음 [ 10 ])입니다. 이를 위해 시간을 전혀 계산할 필요가 없습니다.

당신은 확인할 수 있습니다 - 결과는 항상 동일합니다.

더 일반적인 공식은 여기

그러나 분모 차트에서도 분모가 1에 매우 가깝기 때문에 다음과 같이 단순화할 수 있습니다.

 double R=(Price2-Price1);

메시지 에서 @Renat Akhtyamov 가 이미 올바르게 말했습니다.

 
Sergey Kolemanov :
각도에 따라 거리도 달라지는데... 그럼 선의 차이는? )
 
Itum :
각도에 따라 거리도 달라지는데... 그럼 선의 차이는? )
각도에 따라 모든 거리가 배수로 변경됩니다. 당신은 직각 삼각형이 있습니다. 따라서 측정 위치는 중요하지 않습니다. 가장 쉬운 거리를 측정하십시오.
 
Renat Akhtyamov :
각도에 따라 모든 거리가 배수로 변경됩니다. 당신은 직각 삼각형이 있습니다. 따라서 측정 위치는 중요하지 않습니다. 가장 쉬운 거리를 측정하십시오.

예시를 보여주세요.

 ObjectCreate ( "Line1" , OBJ_TRENDBYANGLE , 0 , Time [ 0 ], High [ 10 ], Time [ 10 ], Low [ 10 ]);
   ObjectSetInteger ( 0 , "Line1" , OBJPROP_STYLE , STYLE_SOLID );
   ObjectSetInteger ( 0 , "Line1" , OBJPROP_COLOR ,Red);
   ObjectSetInteger ( 0 , "Line1" , OBJPROP_WIDTH , 2 );
   
   ObjectCreate ( "Line2" , OBJ_TRENDBYANGLE , 0 , Time [ 10 ], High [ 100 ], Time [ 20 ], Low [ 10 ]);
   ObjectSetInteger ( 0 , "Line2" , OBJPROP_STYLE , STYLE_SOLID );
   ObjectSetInteger ( 0 , "Line2" , OBJPROP_COLOR ,Lime);
   ObjectSetInteger ( 0 , "Line2" , OBJPROP_WIDTH , 2 );

   ObjectSetDouble ( 0 , "Line1" , OBJPROP_ANGLE , 260 ); // 85 
   ObjectSetDouble ( 0 , "Line2" , OBJPROP_ANGLE , 260 ); // 85
/*   
   ObjectCreate ( "Value" , OBJ_TREND , 0 , Time [ 0 ], High [ 10 ], Time [ 10 ], High [ 10 ]);
   ObjectSetInteger ( 0 , "Value" , OBJPROP_RAY , false );
   ObjectSetInteger ( 0 , "Value" , OBJPROP_COLOR ,Gold);
   ObjectSetInteger ( 0 , "Value" , OBJPROP_WIDTH , 3 );
   */

// Предлагали сделать так и не помогает !

   double V = ( ObjectGetDouble ( 0 , "Line1" , OBJPROP_PRICE , 0 )- ObjectGetDouble ( 0 , "Line2" , OBJPROP_PRICE , 0 ))/(( datetime ) ObjectGetInteger ( 0 , "Line1" , OBJPROP_TIME , 0 )-( datetime ) ObjectGetInteger ( 0 , "Line2" , OBJPROP_TIME , 0 ));
   double R = ( ObjectGetDouble ( 0 , "Line1" , OBJPROP_PRICE , 0 )- ObjectGetDouble ( 0 , "Line2" , OBJPROP_PRICE , 0 ))/ sqrt ( 1 +V*V) ; 
   
   
   Comment ( "Разница: R=" ,R, " | " );

// Предлагали сделать и так и также не помогает !
   
   datetime t1 = ( datetime ) ObjectGetInteger ( 0 , "Line1" , OBJPROP_TIME , 0 );
   datetime t2 = ( datetime ) ObjectGetInteger ( 0 , "Line2" , OBJPROP_TIME , 0 );
   double p1 = 0 ;
   double p2 = 0 ;
   
   if (t1 > t2)
   {
      p1 = ObjectGetValueByTime ( 0 , "Line1" , t2);
      p2 = ObjectGetDouble ( 0 , "Line2" , OBJPROP_PRICE , 0 );
   }
   if (t1 < t2)
   {
      p1 = ObjectGetDouble ( 0 , "Line1" , OBJPROP_PRICE , 0 );
      p2 = ObjectGetValueByTime ( 0 , "Line2" , t1);;
   }
   if (t1 == t2)
   {
      p1 = ObjectGetDouble ( 0 , "Line1" , OBJPROP_PRICE , 0 );
      p2 = ObjectGetDouble ( 0 , "Line2" , OBJPROP_PRICE , 0 );
   }
   
   Comment ( "Разница: " + DoubleToString ( MathAbs (p1 - p2) / _Point , 0 ));
 
Itum :
각도에 따라 거리도 달라지는데... 그럼 선의 차이는? )

두 평행선 사이의 거리를 결정해야 하며 어떤 값으로 표현할지는 중요하지 않습니다. 가장 중요한 것은 이 값이 축척 변경에 따라 변하지 않는다는 것입니다.

내가 당신을 올바르게 이해 했습니까? 그렇다면 확인 중인 전체 코드를 보여주지만 제대로 작동하지 않습니다. 모든 것이 나를 위해 작동하며 가치는 변하지 않습니다.

 
Itum :

예시를 보여주세요.

 double Расстояние=ObjectGetValueByShift ( "Line1" ,0)- ObjectGetValueByShift ( "Line2" ,0);
즉, Line1이 맨 위에 있고 Line2가 아래에 있으면
 
Renat Akhtyamov :
즉, Line1이 맨 위에 있고 Line2가 아래에 있으면
 
Itum :

원한다면 이 아래에 있는 것 대신 내 라인을 사용해 보세요.

 // Предлагали сделать так и не помогает !

파란색 선의 길이는 다음과 같습니다.


 

Renat Akhtyamov :

double Расстояние=ObjectGetValueByShift ( "Line1" ,0)- ObjectGetValueByShift ( "Line2" ,0);

흠... 역시 도움이 되지 않는군요.... 위에서 내 코드를 실행하려고 하셨군요... 이것은 원하는 결과가 아닙니다.

어쩌면 내가 모든 것을 올바르게 설명하고 있지 않을 수도 있습니다.

 
Renat Akhtyamov :

원한다면 이 아래에 있는 것 대신 내 라인을 사용해 보세요.

파란색 선의 길이는 다음과 같습니다.


맞습니다... 그리고 빨간선의 길이가 필요합니다. 이 두 평행선이 수직인 경우 파란색 선은 무엇을 표시할까요? (각도가 다르면 길이가 다릅니다)

흰색 시트에 서로 10cm의 거리에 두 개의 평행선을 그리면( 그림 7) 이 시트를 원하는 각도 로 비틀 수 있으며 동일한 10cm가 됩니다( 그림 6). .