首頁  >  文章  >  Java  >  如何在Java中檢查三個有序點的方向?

如何在Java中檢查三個有序點的方向?

PHPz
PHPz轉載
2023-09-14 14:21:04849瀏覽

如何在Java中檢查三個有序點的方向?

在本文中,我們將找到3個有序點的方向。這裡的方向指的是給定的點在空間中形成順時針、逆時針或共線的形狀。

在上圖中,a、b、c 是檢查形狀在空間中的方向的三個點。我們透過計算斜率找到三個給定點的方向。

計算坡度並計算 3 個有序點的方向。

線段的斜率

線段的斜率$(a,b):\theta=\left ( y_{b}-y_{a} \right )/\left ( x_{b} -x_ {a}\right )$

線段$(b,c)$的斜率:$\phi=\left ( y_{c} -y_{b}\right )/(x_{c}-x_{b})$

#因此,方向取決於下列表達式:

$$(y_{b}-y_{a})(x_{c}-x_{b})-(y_{c}-y_{b})(x_{b}-x_{a}) \:或\:(y2-y1)*(x3-x2)-(y3-y2)*(x2-x1)$$

即,無論是正數、負數或

  • 如果表達式為零,則 θ = φ。因此方向是共線的。

  • 如果表達式為負,則 θ

  • 若表達式為正,則 θ > φ。因此方向為順時針。

開始吧!

展示一些實例給你看

Instance-1

的翻譯為:

實例-1

#假設 3 個有序點是 (0,3), (4,2), (3,1)

檢查 3 個有序點的方向後,結果將會是:

給定的3個點形成:順時針

Instance-2

的中文翻譯為:

實例-2

假設 3 個有序點是 (0,3), (1,2), (9,5)

檢查 3 個有序點的方向後,結果將會是:

給定的3個點形成:逆時針方向

實例3

假設 3 個有序點是 (2,2), (3,3), (4,4)

檢查 3 個有序點的方向後,結果將會是:

給定的3點形式:線性

演算法

第 1 步 - 宣告 3 個有序點。

步驟 2 - 將三個給定點傳遞給表達式,即 (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y)。

步驟 3 - 檢查線性、順時針和逆時針的條件。

第四步 - 列印結果。

多種方法

我們透過不同的方式提供了解決方案。

  • 透過靜態輸入

  • #透過使用使用者定義的方法

讓我們一一看看該程式及其輸出。

方法 1:使用靜態輸入

在這個方法中,首先將3個點傳遞給表達式,以檢查線性、順時針和逆時針的條件。然後將結果列印到輸出。

範例

public class Main{
   //main method
   public static void main(String[] args){
      //Declaring variables
      int x1=0, y1=1;
      int x2=4, y2=3;
      int x3=3, y3=2;
      
      //expression to check for 3 ordered point
      int val = (y2 - y1) * (x3 - x2) - (x2 - x1) * (y3 - y2);
      
      // check for collinear
      if (val == 0){
         //printing collinear orientation
         System.out.print("The given 3 points form : Linear");
      }
      
      //check for clockwise
      else if(val > 0){
         
         //printing clockwise orientation
         System.out.print("The given 3 points form: Clockwise");
      } else {
        
         //printig counter clockwise orientation
         System.out.print("The given 3 points form: CounterClockwise");
      }
   }
}

輸出

The given 3 points form: Clockwise

方法二:使用使用者定義的方法

在這個方法中,首先將3個點透過一個使用者定義的方法傳遞給表達式,以檢查線性、順時針和逆時針的條件。然後將結果列印到輸出。

範例

public class Main {
   public static void main(String[] args){
      Point a = new Point(2, 2);
      Point b = new Point(3, 3);
      Point c = new Point(4, 4);
      
      //calling user defined method
      int o = orientation(a, b, c);
     
      //check for Linear orientation
      if (o==0)	
      
         //printing Linear orientation
         System.out.print("The given 3 points form : Linear");
     
      //check for Clockwise orientation
      else if (o == 1)
     
         //printing clockwise orientation
         System.out.print("The given 3 points form : Clockwise");
      else
      
         //printing counter clockwise orientation
         System.out.print("The given 3 points form : CounterClockwise");
   }

   // user defined method
   public static int orientation(Point a, Point b,	Point c){
     
     //expression to check for 3 ordered point
      int val = (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y);
      
      // check for collinear
      if (val == 0) return 0; 
      
      // check for clock or counterclock wise
      return (val > 0)? 1: 2;
   }
}
class Point{
   int x, y;
   Point(int x,int y){
      this.x=x;
      this.y=y;
   }
}

輸出

The given 3 points form : Linear

在本文中,我們使用Java程式語言探討如何透過檢查3個有序點的方向來判斷方向。

以上是如何在Java中檢查三個有序點的方向?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除