Zastanawiałem się nad tym, pewnie proste do dowiedzenia, czy tak się da, czy nie, ale jednak nie umiem znaleźć rozwiązania. Piszę to w Javascripcie, ale w sumie problem jest algorytmiczny.
Mam planszę, na niej dwa obiekty, każdy to okrąg, mogą mieć różne promienie. Ostatecznie ostatnie wymaganie mogę zmienić, ale chciałbym, żeby mogłby mieć różne.
Chciałbym policzyć między nimi odległość (w pikselach), powiedzmy w pionie, tylko chodzi mi o to, żeby zmienna, która będzie ją przechowywać, była liczona w jednym miejscu (===jednym równaniem) – a nie na przykład różnie przypisywana w zależności od warunku if
.
Do tej pory udało mi się osiągnąć, by odległość między "położeniami" obiektów (czyli ich wartościami top
) była liczona jednym równaniem, i tak to wygląda:
(pseudokod)
// x1 – obiekt nr 1
// x2 – obiekt nr 2
// top() – położenie obiektu na planszy (jego górna granica)
odległość_położeń := | top(x1) - top(x2) | // niezaleznie czy obiekt x1 jest nad obiektem x2, czy pod, wykorzystane jest jedno rownanie
Ale żeby obliczyć tę właściwą odległość między obiektami (czyli uwzględniając ich wysokość), jak na razie muszę dawać warunek:
(pseudokod)
// height() – wysokość obiektu
if ( top(x1) < top(x2) ) {
odległość := | top(x1) - ( top(x2) + height(x2) ) |
} else {
odległość := | ( top(x1) + height(x1) ) - top(x2) |
}
UPDATE: Poprawiłem błędy w ostatnich równaniach.