第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

查找點是否位于矩形內(nèi)

查找點是否位于矩形內(nèi)

API
慕虎7371278 2019-12-10 13:08:41
我想查找一個點是否位于矩形內(nèi)。矩形可以以任何方式定向,并且不需要軸對齊。我想到的一種方法是旋轉(zhuǎn)矩形和點的坐標(biāo)以使矩形軸對齊,然后通過簡單地測試點的坐標(biāo)是否位于矩形的坐標(biāo)內(nèi)來進(jìn)行測試。上述方法需要旋轉(zhuǎn),因此需要浮點運算。還有其他有效的方法嗎?
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗 獲得超16個贊

矩形如何顯示?三分?四分?點,邊和角度?一分兩分?還有嗎 不知不覺中,任何回答您的問題的嘗試都將僅具有學(xué)術(shù)價值。


在任何情況下,對于任何凸多邊形(包括矩形)的測試是非常簡單的:檢查多邊形的每個邊緣,假設(shè)每個邊緣在反時針方向被取向,并測試點是否位于向左的邊緣的(在左-手半平面)。如果所有邊緣均通過測試,則該點在內(nèi)部。如果至少有一個失敗-該點在外面。


為了測試該點是否(xp, yp)位于邊緣的左側(cè)(x1, y1) - (x2, y2),您只需要計算


D = (x2 - x1) * (yp - y1) - (xp - x1) * (y2 - y1)

如果為D > 0,則該點在左側(cè)。如果為D < 0,則該點在右側(cè)。如果為D = 0,則該點在線上。


該答案的先前版本描述了左側(cè)測試的看似不同的版本(請參見下文)。但是可以很容易地證明它計算出相同的值。


...為了測試點是否(xp, yp)位于邊緣的左側(cè)(x1, y1) - (x2, y2),您需要為包含邊緣的線構(gòu)建線方程。公式如下


A * x + B * y + C = 0

哪里


A = -(y2 - y1)

B = x2 - x1

C = -(A * x1 + B * y1)

現(xiàn)在您要做的就是計算


D = A * xp + B * yp + C

如果為D > 0,則該點在左側(cè)。如果為D < 0,則該點在右側(cè)。如果為D = 0,則該點在線上。


但是,該測試同樣適用于任何凸多邊形,這意味著它對于矩形可能太通用了。矩形可能允許更簡單的測試...例如,在矩形(或任何其他平行四邊形)中,的值A(chǔ)和值B具有相同的大小,但相對(即平行)邊緣的符號不同,可以利用該值簡化測試。



查看完整回答
反對 回復(fù) 2019-12-11
  • 3 回答
  • 0 關(guān)注
  • 534 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號