2017-04-09 108 views
0

考慮下面的平等和指令:投影段中的點:如果段的末端具有相同的座標?

p = ((x - a).(b - a))/((b - a).(b - a)) (b - a) + a

ab是該段的末端,x我們希望在這一領域,並p在這部分的x投射到投影點。所有是矢量點。

現在設置p代碼的X座標:

  coords_p.add(
       "" 
         + (

         ((test_x - segment_first_point_x) * (segment_last_point_x - segment_first_point_x)) // "((x - a).(b - a))" 
           /
           (// "((b - a).(b - a))" 
             (segment_last_point_x - segment_first_point_x) * (segment_last_point_x - segment_first_point_x) 

           ) 

           * 
           (segment_last_point_x - segment_first_point_x) // "* (b - a)" 

         + 

         segment_first_point_x) // " + a" 
     ); 

現在,同爲p的Y座標:

 coords_p.add(
       "" 
         + (

         ((test_y - segment_first_point_y) * (segment_last_point_y - segment_first_point_y)) // "((x - a).(b - a))" 
           /
           (0.00001+ // "((b - a).(b - a))" 
             (segment_last_point_y - segment_first_point_y) * (segment_last_point_y - segment_first_point_y) 

           ) 

           * 

           (segment_last_point_y - segment_first_point_y) // "* (b - a)" 

         + 

         segment_first_point_y) // " + a" 

     ); 

正如你可以看到,如果segment_last_point_y == segment_first_point_y OR | segment_last_point_x == segment_first_point_x,該分母的分母將爲0

因此,p的座標中的一個(或兩個)將是NaN(「不是數字」):它將是無效的。

所以我覺得我不明白如何投射點......請問您能否賜教?

回答

1

嗨再次:)問題是在你P的運算,它不應該是象你所說的,它應該是因爲P公式中的係數的分母(二 - 一)(b - a)。當且僅當a和b是相同的點時,這應該是0,即)實際上沒有線段。

相關問題