Dystans linia / prymityw

0

Potrzebuje znalezc najmniejsza odleglosc pomiedzy linia AB

i prymitywem X o normalnej N i jakims tam D (AN.x+BN.y+C*N.z+D = 0)

powiedzmy ze prymitywem jest trojkat i ma jakies punkty QWE

nie interesuje mnie dystans pomiedzy wierzcholkami, tylko pomiedzy bokami jak i samym prymitywem

0

nic podobnego do tego jeszcze ostatnim postem jest moj

0

Nie masz umiejętności zrozumiałego przedstawiania problemu.
BTW, co to jest prymityw ?

0

cyriel, dwa cytaty ze wskazanej strony:

W grafice komputerowej najczęściej jednak jako prymitywów używa się trójkątów (szczególnie w grafice trójwymiarowej), albo odcinków.

Jeżeli autor tak rozumie prymityw, to @MarekR22 odesłał go na do właściwego wątku.

Inne figury, często stosowane jako prymitywy:

* <b>różnego rodzaju krzywe</b>
* okręgi, koła, sfery...
* kwadraty

Jeśli autor tak rozumie prymityw, to nie ma żadnej uniwersalnej metody wyznaczenia odległości między odcinkiem a prymitywem

0

Prawda jest taka, że problem jest nie jest bardzo trudny, ale za to trochę skomplikowany (w sensie, że trzeba trochę dużo wzorów poużywać).
Wszystko spowodowane jest uwzględnianiem wszystkich warunków brzegowych, a jest ich trochę w przypadku trójkąta i odcinka:

  1. przecięcie prosta zawierająca odcinek i płaszczyzna zawierająca trójkąt
  2. odległość punktów końców odcinka od płaszczyzny zawierającej trójkąt.
  3. odległość prostej zawierającej odcinek od prostych zawierających boki trójkąta.
  4. odległość punków odcinaka od prostych zawierających boki trójkąta.
  5. odległość miedzy końcami odcinka a wierzchołkami trójkąta.

Oczywiście do tego dochodzi jeszcze ustalenie, który z tych przypadków należy zastosować.
Jest trochę uciążliwego liczenia, co jest zniechęcające, ale jak się zna algebrę, której uczą na ścisłych kierunkach to nie powinien być to problemem.

0

A nie wystarczy ci przybliżenie ? Można policzyć odległość linii od kilku charakterystycznych punktów trójkąta jak środek, wierzchołki i środki krawędzi. Albo nawet tylko samego środka. Wielokrotnie przyspieszy obliczenia.

Co rozumiesz pod pojęciem linia ? Prosta ? Odcinek ?

Jeśli chcesz wyznaczać najmniejszą odległość między prostą A, a trójkątem, to po kolei robisz tak:

  1. Sprawdzasz, czy prosta A przecina trójkąt. Jeśli tak, to odległość jest zerowa.
  2. Dla każdej krawędzi trójkąta (tutaj najlepiej będzie jak przedstawisz proste/krawędzie w postaci parametrycznej):
  • wyznaczasz najkrótszy odcinek łączący prostą A i prostą pokrywającą się z krawędzią (prostą K)
    A(t) = (axt+bx, ayt+by)
    K(u) = (cxt+dx, cyt+dy)
    Szukasz takich t i u dla których funkcja (axt-cxu+bx-dx)2+(ayt-cyu+by-dy)2 przyjmuje minimum.
  • sprawdzasz czy jeden z końców tego odcinka należy do krawędzi trójkąta, jeśli tak to zapamiętujesz go
    krawędź to fragment prostej K dla u z pewnego przedziału, trzeba sprawdzić czy poprzednio znalezione u (minimum funkcji) leży w tym przedziale
  1. Wybierasz najbliższy punkt wśród zapamiętanych z poprzedniego kroku oraz wśród wierzchołków trójkąta.

Liczenia od cholery. Dla większej liczby prymitywów jest to niewykonalne w real-time.

1 użytkowników online, w tym zalogowanych: 0, gości: 1