判斷點是否在多邊形內部

lt發表於2017-04-08

在如下圖所示座標系中,判斷藍色點是否在紅色四邊形內部.
1
參照 http://blog.csdn.net/hgl868/article/details/7947272 第一種寫法, Julia程式碼如下

p1=[1,0]
p2=[2,0]
p3=[1,1]
p4=[0,1]
p=[p1,p2,p3,p4]

function pt_in_rect(t::Array{Float64},r::Array{Array{Int,1},1})
c=0
for i in 1:4
s=r[i]
e=r[i%4+1]
#println(s,e)
if s[2]==e[2] continue; end
if t[2]<min(s[2],e[2]) continue; end
if t[2]>max(s[2],e[2]) continue; end
d=(t[2]-s[2])*(e[1]-s[1])/(e[2]-s[2])+s[1]
if d>t[1] c=c+1 end
end
c%2==1
end

執行結果

julia> map(x->pt_in_rect(x,p),[[0.0,0],[0.5,0.25],[0.5,0.75],[1.5,0.45],[1.5,0.5],[1.5,0.75]])
6-element Array{Bool,1}:
 false
 false
  true
  true
 false
 false

相關文章