如何判斷乙個點在某方向線的左側還是右側

2022-08-24 19:42:14 字數 973 閱讀 9754

走在公路上,行駛是有方向的,那麼我們可以選公路上相鄰兩個點,取做oa,oa兩個點不能重合,否則就沒法判斷了,油站的點s以及s1,如下圖:

其實可以明顯看出油站方向,如果油站少,我們可以人工標記,但是由於數量的問題,通過人力來處理就浪費了大量人力,財力。

那麼如何通過程式判斷?

這裡首先需要做一部分假設,假設公路的上取得兩個點與給的油站得點在同乙個平面內,主要是地球大,取得公路兩點與油站的點,可以忽略是曲面。

其實要解決這個問題,會用到高中或者大學大一我們學過的關於向量矩陣那塊的知識。現在有點久了,好多都忘記了。大學高等代數只不過涉及的緯度比多,我們這裡牽涉2維,所以使用高中代數就可以解決。

高中數學裡有個向量積的知識點:如下公式,注意i,j分別是x軸,y軸的單位向量,a(x, y),b(x,y)

其實也是右手定則。大夥可以查下右手定則,就可以判斷方向了。

現在oa可以看作是o到a的向量,os看作是o到s的向量,如果由於我們要看s是在公路的那一側,那麼我們就是要看oaxos的出的結果。

**如下:

public class directiontest  else if (direction == 0)  else   

}private static point getvector(point startpoint, point endpoint)

@data

@builder

@allargsconstructor

static class point

}

根據右手定則結論:

如果結果大於0,說明在行駛方左側,

如果小於0,說明在右側

如何判斷乙個點在矩形內

最近在做遊戲伺服器中技能模組,往往要掃瞄乙個區域,判斷npc是不是在我這個區域內,在的話就發傷害。就需要實現一下,對於乙個點是否在矩形內的判斷。只需要判斷該點是否在上下兩條邊和左右兩條邊之間就行,判斷乙個點是否在兩條線段之間夾著,就轉化成,判斷乙個點是否在某條線段的一邊上,就可以利用叉乘的方向性,來...

如何判斷乙個點在多邊形的內部

給定任意多邊形 不一定是凸多邊形 的頂點座標 逆時針給出點的座標 然後給定一點,判斷該點是否在多邊形內部?使用 向量的叉乘 向量積 來進行計算。向量積複習 因此,當多邊形點的順序是逆時針時,如果點在 多邊形內,則向量積 的結果時正數 為什麼呢,見下面 特殊 對於三角形,如果給定的點不是逆時針的,也可...

如何判斷乙個棧的增長方向

乙個很直觀的做法就是說在乙個函式中定義兩個變數,把這兩個變數的位址進行比較,但是這種方法是和編譯器相關的,如果不同編譯器對區域性變數的壓棧方式不一樣,則無法判斷,因此這種方法是不可移植的。以下是一種很可移植的方法,好像是哪個大牛寫的,確實值得學習,函式呼叫函式,被呼叫的函式壓棧肯定在呼叫者之後,因此...