SORU
2 Mayıs 2010, Pazar


Dikdörtgen kesişim hızlı dikdörtgen

Eğer 2 dikdörtgenler kesişen eğer test etmek için hızlı bir yolu nedir?


İnternette bir arama bu oyunu (HEYO!!) ile geldi, ama Javascript yazmak için nasıl anlamıyorum, C eski bir formda yazılmış gibi görünüyor .

struct
{
    LONG    left;
    LONG    top;
    LONG    right;
    LONG    bottom;
} RECT; 

bool IntersectRect(const RECT * r1, const RECT * r2)
{
    return ! ( r2->left > r1->right
        || r2->right left
        || r2->top > r1->bottom
        || r2->bottom top
        );
}

CEVAP
2 Mayıs 2010, Pazar


Bu kod JavaScript tercüme edilebilir. Yorumların da öne sürdüğü gibi, kodunuzda bir yazım hatası, madde miktarı, unutmayın. Özellikle r2->right left r2->right < r1->left r2->bottom top işlevi çalışmak için r2->bottom < r1->top olmalıdır.

function intersectRect(r1, r2) {
  return !(r2.left > r1.right || 
           r2.right < r1.left || 
           r2.top > r1.bottom ||
           r2.bottom < r1.top);
}

Case Test:

var rectA = {
  left:   10,
  top:    10,
  right:  30,
  bottom: 30
};

var rectB = {
  left:   20,
  top:    20,
  right:  50,
  bottom: 50
};

var rectC = {
  left:   70,
  top:    70,
  right:  90,
  bottom: 90
};

intersectRect(rectA, rectB);  // returns true
intersectRect(rectA, rectC);  // returns false

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blunty

    Blunty

    13 Mart 2006
  • midomansour

    midomansour

    19 EYLÜL 2009
  • MVLV28

    MVLV28

    17 Mart 2008