Rysuję profile elewacyjne pokazujące elewacji Zysk/strata wzdłuż szlaku, podobny do tego poniżej:(? Proste) Umieszczenie na linii Label Wykresy
Jest to w zasadzie z wykresem liniowym odległość od początku na osi X i wysokość na osi Y.
Chciałbym dostarczyć fantazyjne etykiety z rzędami punktów w interesujących punktach wzdłuż szlaku, takich jak te, które dodałem ręcznie do przykładowego obrazu. Szukam pomysłów, w jaki sposób najlepiej umieścić te etykiety, tak aby:
- one nie pokrywają się ze sobą
- one nie pokrywają się z samego profilu, a przynajmniej tak się dzieje w sposób czyste wyglądające sposób (wydaje się konieczne może być w środku strome doliny, na przykład)
- one nie sięgają poza pole, które ogranicza ogólny obraz
Aby osiągnąć te cele, ja figura Mogę (przynajmniej):
- Flip tekstu wokół (patrz przykład)
- Wybierz odpowiednie długości dla liderów
- Wybierz odpowiednie kąty dla liderów (ale minimalizacji wariancji może być pożądane ze względów estetycznych)
- upuść elewacje spotowych na mniej ważne miejsca w zatłoczonych obszarach
- nazwy skracać w zatłoczonych miejscach (
PlaceName
S w moim otoczeniu już obsługiwać skrót w bardzo miły sposób, więc przejście od „South Twin Mountain” do „S” Twin Mtn jest łatwe) - Kropla słabiej ważne a nnotacje całkowicie w zatłoczonych miejscach
Ale nie wiem, jak najlepiej ukształtować ten algorytm. Wygląda na to, że może to być problem z optymalizacją? (Zminimalizuj cienie związane z adnotacją i podaj liczbową karę za każdą rzecz, której staram się unikać?) Ale ponieważ istnieje wiele zmiennych dyskretnych do optymalizacji i nie zależy mi na "najlepszym" rozwiązanie (tylko dobre, a najlepiej stabilne, jedno) Nie jestem pewien, co robić.
W jaki sposób zbliża się problem podobny do tego w grafice? Programowanie dynamiczne? Oddział i granica? Czy idea optymalizacji jest poza bazą? Czy są jakieś przydatne biblioteki dla .NET, na które mógłbym chcieć spojrzeć?
(Nie chcę tego całkowicie oddawać ogólnej bibliotece graficznej, ponieważ jest to kluczowa cecha całego produktu i mam zaplanowanych kilka niestandardowych funkcji, które mogą być trudne do zrealizowania w ogólnym celu biblioteka rysowania wykresów)
Jak to działa? Czy znalazłeś najlepszy algorytm? –
Skończyłem z symulowanym podejściem do wyżarzania (po odstawieniu tego projektu na jakiś czas). Było dość proste w implementacji, działa raczej dobrze, a jego części można ponownie wykorzystać do innych celów, takich jak mapowanie etykiet i wybieranie układów stron, a nawet przewidywanie, które trasy przez sieć szlaków mogą być dobre do wędrówek. –