国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

判斷兩個(gè)矩形是否相交(Rect Intersection)

這篇具有很好參考價(jià)值的文章主要介紹了判斷兩個(gè)矩形是否相交(Rect Intersection)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

0x00 Preface

最近在開(kāi)發(fā)一個(gè)2D組態(tài)圖形組件的過(guò)程中,里面的數(shù)學(xué)模塊,涉及到兩個(gè)矩形是否相交的判斷。

這個(gè)問(wèn)題很多年前就寫(xiě)過(guò),算是個(gè)小的算法吧。

網(wǎng)絡(luò)上搜索一下,有很多思路,有一些思路要基于多種組合的判斷,顯得比較復(fù)雜。 比如兩個(gè)矩形相交的情形,可能有下面的多種類型:

判斷兩個(gè)矩形是否相交(Rect Intersection)

而每種類型又有多種子類型。

0x01 Body

其實(shí)可以反向來(lái)思考這個(gè)問(wèn)題,就比較簡(jiǎn)單,兩個(gè)矩形A和B,不相交的情況有哪些,然后通過(guò)bool 取反,就是相交的情況。
假設(shè)矩形的的定義如下:

class Rect {
    constructor(x,y,w,h) {
      this.x = x;
      this.y = y;
      this.w = w;
      this.h = h;
      
      this.r = x + w; // r表示矩形的右邊
      this.b = y + h; // b 表示矩形的下邊
    }
}

不相交的情況可以歸納為這幾種情況:

  • A在B的左邊 (A.r < B.x)
  • A在B的右邊 ( B.r < A.x)
  • A在B的上邊 (A.b < B.y )
  • A在B的下邊 (B.b < A.y )

所以不相交的代碼如下:

A.r < B.x || B.r < A.x || A.b < B.y || B.b <A.y

對(duì)于這種情況取反,就是相交的情況:

!(A.r < B.x || B.r < A.x || A.b < B.y || B.b <A.y)

取反之后 或變與:

A.r >= B.x && B.r >= A.x && A.b >= B.y && B.b >= A.y

嘗試著問(wèn)下ChatGPT,它給出的正是這種思路,如下圖:

判斷兩個(gè)矩形是否相交(Rect Intersection)

0x02 Conclusion

  • 有時(shí)候反過(guò)來(lái)思考問(wèn)題,是一種很好的思路
  • ChatGPT 牛逼。

0x03 The Last

最后,關(guān)注公號(hào)“ITMan彪叔” 可以添加作者微信進(jìn)行交流,及時(shí)收到更多有價(jià)值的文章。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-475537.html

到了這里,關(guān)于判斷兩個(gè)矩形是否相交(Rect Intersection)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【計(jì)算幾何】判斷一條線段和一段圓弧是否相交 & C++代碼實(shí)現(xiàn)

    【計(jì)算幾何】判斷一條線段和一段圓弧是否相交 & C++代碼實(shí)現(xiàn)

    最近做項(xiàng)目,需要判斷一條線段是否和一段圓弧相交,網(wǎng)上也沒(méi)找到很好的解答(最主要是沒(méi)有直接可以搬來(lái)用的代碼,或者思路寫(xiě)得太過(guò)高深,我看不懂),于是決定自己想一個(gè)方法,寫(xiě)一個(gè)博客,將實(shí)現(xiàn)思路和完整代碼都分享出來(lái) 線段可用兩個(gè)點(diǎn)表示,點(diǎn)的對(duì)象如下所示

    2024年02月01日
    瀏覽(93)
  • java 判斷兩個(gè)List是否包含 判斷兩個(gè)list相等

    java 判斷兩個(gè)List是否包含 判斷兩個(gè)list相等 https://blog.51cto.com/u_12855/7333853 1、直接使用equals()比較 眾所周知,兩個(gè)列表具有完全相同的元素并且具有完全相同的順序時(shí),它們是相等的。因此, 如果我們業(yè)務(wù)要求兩個(gè)list順序一致,可以使用equals()方法進(jìn)行相等性檢查: 即使

    2024年02月04日
    瀏覽(132)
  • processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)

    processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi)(超詳細(xì)鼠標(biāo)交互)

    剛好最近在學(xué)processing,然后有不少同學(xué)遇到一個(gè)問(wèn)題哈, 就是如何用processing判斷一個(gè)點(diǎn)是否在三角形、圓、橢圓、矩形內(nèi),并且聯(lián)合arduino一起,通過(guò)串口通信實(shí)現(xiàn)用戶在processing發(fā)生點(diǎn)擊事件,然后通過(guò)arduino開(kāi)發(fā)板反饋(亮燈等等) ,這一期我就先出如何解決利用processi

    2023年04月10日
    瀏覽(20)
  • 判斷兩個(gè)數(shù)組是否相等

    在判斷兩個(gè)數(shù)組是否相等之前,我們應(yīng)該弄清楚數(shù)組怎樣才算相等,官方給的解釋是這樣的: Returns true if the two specified arrays of ints are equal to one another. Two arrays are considered equal if both arrays contain the same number of elements, and all corresponding pairs of elements in the two arrays are equal. In other

    2024年02月15日
    瀏覽(89)
  • 判斷兩個(gè)vector數(shù)組是否相等

    判斷兩個(gè)vector數(shù)組是否相等是可以直接使用==或者!=的 因?yàn)関ector內(nèi)部都進(jìn)行了相關(guān)運(yùn)算符的重載,還可以進(jìn)行比較大小 下面這道簡(jiǎn)單搜索題就用到了這個(gè)性質(zhì),淺看一下吧 【問(wèn)題描述】給定一個(gè)n個(gè)整數(shù)的集合X={x1,x2,…xn}(X中可能包含重復(fù)元素)和整數(shù)y,找出和等于y的X的子集

    2024年02月12日
    瀏覽(85)
  • Js如何判斷兩個(gè)數(shù)組是否相等?

    Js如何判斷兩個(gè)數(shù)組是否相等?

    日常開(kāi)發(fā),時(shí)不時(shí)會(huì)遇到需要判定2個(gè)數(shù)組是否相等的情況,需要實(shí)現(xiàn)考慮的場(chǎng)景有: 先判斷長(zhǎng)度,長(zhǎng)度不等必然不等 元素位置 其他情況考慮 \\\'1\\\' 和 1 (Object的key是字符串, Map的key沒(méi)有限制) NaN null 和 undefined 數(shù)組自帶的方法,比較適合的有: every、some、filter、findIndex 。 這種

    2024年02月22日
    瀏覽(94)
  • 判斷兩個(gè)時(shí)間段是否有交集

    判斷兩個(gè)時(shí)間段是否有交集

    前言:項(xiàng)目中遇到了類似會(huì)議室預(yù)約的時(shí)間段被占用,預(yù)約車(chē)輛時(shí)間段被占用等。 start:預(yù)約開(kāi)始時(shí)間。 end:預(yù)約結(jié)束時(shí)間。 必備條件:start = end 思考??: 怎么判斷是否被占用呢? 預(yù)約的時(shí)間,與目標(biāo)數(shù)據(jù)庫(kù)中任意一條的存在交集,則可以視為占用。 有交集的情況有那幾

    2024年02月03日
    瀏覽(37)
  • 記錄--如何判斷兩個(gè)數(shù)組的內(nèi)容是否相等

    記錄--如何判斷兩個(gè)數(shù)組的內(nèi)容是否相等

    給定兩個(gè)數(shù)組,判斷兩數(shù)組內(nèi)容是否相等。 不使用排序 不考慮元素位置 例: 思考幾秒:有了???? 直接遍歷第一個(gè)數(shù)組,并判斷是否存在于在第二個(gè)數(shù)組中 求差集, 如果差集數(shù)組有長(zhǎng)度,也說(shuō)明兩數(shù)組不等(個(gè)人感覺(jué)比上面的麻煩就不舉例了) 細(xì)心的小伙伴就會(huì)發(fā)現(xiàn):N

    2024年02月08日
    瀏覽(848)
  • Go語(yǔ)言如何判斷兩個(gè)對(duì)象是否相等

    在編程中,判斷兩個(gè)對(duì)象是否相等是一項(xiàng)常見(jiàn)的任務(wù),同時(shí)判斷對(duì)象是否相等在很多情況下都非常重要,例如: 單元測(cè)試 :編寫(xiě)單元測(cè)試時(shí),經(jīng)常需要驗(yàn)證函數(shù)的輸出是否符合預(yù)期,這涉及到比較對(duì)象是否相等。 數(shù)據(jù)結(jié)構(gòu)操作 :在使用 map 等數(shù)據(jù)結(jié)構(gòu)時(shí),可能需要判斷兩個(gè)對(duì)

    2024年02月07日
    瀏覽(646)
  • 如何判斷兩個(gè)隨機(jī)變量是否獨(dú)立,同分布

    如何判斷兩個(gè)隨機(jī)變量是否獨(dú)立,同分布

    獨(dú)立兩個(gè)判斷條件 1,設(shè)(x,y)的密度函數(shù)為f(x,y),其定義域是矩形區(qū)域。聯(lián)合密度函數(shù)的區(qū)域必須為矩形區(qū)域,這很重要。可以證明一波,若x的范圍為(0,1),y的范圍為(3,5)如果他們相互獨(dú)立,那么組成的聯(lián)合密度函數(shù),每一個(gè)x,都可以對(duì)應(yīng)所有的y,所以組成的范圍為矩

    2024年02月11日
    瀏覽(94)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包