SORU
29 Kasım 2008, CUMARTESİ


Nasıl bir nokta bir doğru üzerinde iki nokta arasında olduğunu tespit edebilir misiniz?

Hadi 2 puan (a ve b adlı) ile iki boyutlu bir düzlemde x bir tamsayı tarafından temsil edilen ve her bir nokta için y bir tamsayı olduğunu varsayalım.

Nasıl başka bir nokta c hat kesimi a ve b tarafından tanımlanan tespit EDEBİLİR MİSİN?

Python en kullanıyorum, ama herhangi bir dilde örnekler yararlı olacaktır.

CEVAP
29 Kasım 2008, CUMARTESİ


Eğer kontrol edinçapraz ürün(c-a) Darius Pastırma söylediği gibi 0, (b-a) ve puan verir a, b ve c hizalanır.

Ama eğer c ve b arasında olup olmadığını bilmek istediğiniz gibi, siz de kontrol edinnokta ürün(b-a) (c-a)olumluvedaha aza ve b arasındaki mesafenin daha Kare.

Non-optimize edilmiş ve kesinliği:

def isBetween(a, b, c):
    crossproduct = (c.y - a.y) * (b.x - a.x) - (c.x - a.x) * (b.y - a.y)
    if abs(crossproduct) > epsilon : return False   # (or != 0 if using integers)

    dotproduct = (c.x - a.x) * (b.x - a.x)   (c.y - a.y)*(b.y - a.y)
    if dotproduct < 0 : return False

    squaredlengthba = (b.x - a.x)*(b.x - a.x)   (b.y - a.y)*(b.y - a.y)
    if dotproduct > squaredlengthba: return False

    return True

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013