Nasıl bir nokta bir doğru üzerinde iki nokta arasında olduğunu tespit edebilir misiniz? | Netgez.com
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

  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ÅžUBAT 2013
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011
  • Videojug

    Videojug

    25 EKÄ°M 2006