eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingWizualizacja ekwipotencjałów.Wizualizacja ekwipotencjałów.
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.prz.edu.pl!news.nask.pl!news.nask.
    org.pl!news.uni-stuttgart.de!news.belwue.de!newsfeed.ision.net!newsfeed2.easyne
    ws.net!ision!newsfeed3.dallas1.level3.net!newsfeed2.dallas1.level3.net!news.lev
    el3.com!postnews.google.com!x20g2000yqb.googlegroups.com!not-for-mail
    From: Jan Górski <g...@o...pl>
    Newsgroups: pl.comp.programming
    Subject: Wizualizacja ekwipotencjałów.
    Date: Thu, 8 Apr 2010 11:20:33 -0700 (PDT)
    Organization: http://groups.google.com
    Lines: 55
    Message-ID: <3...@x...googlegroups.com>
    NNTP-Posting-Host: 91.189.0.210
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    X-Trace: posting.google.com 1270750833 5965 127.0.0.1 (8 Apr 2010 18:20:33 GMT)
    X-Complaints-To: g...@g...com
    NNTP-Posting-Date: Thu, 8 Apr 2010 18:20:33 +0000 (UTC)
    Complaints-To: g...@g...com
    Injection-Info: x20g2000yqb.googlegroups.com; posting-host=91.189.0.210;
    posting-account=BcK0kQoAAAClcQzNiDPwy7W9dMNJ4-fa
    User-Agent: G2/1.0
    X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR
    1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR
    3.5.30729; InfoPath.2),gzip(gfe)
    Xref: news-archive.icm.edu.pl pl.comp.programming:185404
    [ ukryj nagłówki ]

    Poszukuję efektywnego algorytmu umożliwiającego wizualizację linii
    łączących punkty o równym potencjale. Przykład: Wyobraźmy sobie mapę
    temperatury w Polsce. Chcemy uzyskać izotermy w zakresie warunków
    brzegowych.

    Sposób rozumowania :
    Ustalić wartość izolinii W_i i deltę, czyli jak bardzo dana wartość na
    siatce może odbiegać od założonej i nadal będzie należeć do tej
    izolinii.

    1* Przeszukać siatkę w poszukiwaniu założonej wartości W_i +/- delta,
    nie zamarkowanej. Jeśli znaleziono taką wartość, idź do 2*. Jeśli nie,
    zakończ.
    2* Po znalezieniu wartości W_i+/-delta, pozycję [x,y] danej wartości
    zamarkować
    3* Przeszukać otoczenie [x,y] w poszukiwaniu wartości w zakresie W_i
    +/- delta nie biorąc pod uwagę wartości zamarkowanych. Jeśli w
    otoczeniu brak punktów do zamarkowania, idź do 1*. Jeśli są, wróć do
    2*.


    Przyspieszenie działania i spadek rozdzielczości można uzyskać
    dokonując przekształcenia tablicy.
    1. Konwolucja uśredniająca
    2. Zmniejszenie tablicy wartości n^2 razy (co n-ta wartość z rzędu
    czytana co n-rzędów).
    Deltę można zwiększyć, bo różnice wartości ulegną zwiększeniu o
    maksymalnie ((dWart[x,y]/dx)*n) ^2+ ((dWart[x,y]/dy)*n)^2, w przypadku
    zastosowania zerowej konwolucji uśredniającej. Efekt jednak zależy od
    wielkości użytego kernela i jego wartości. Uśrednienia powinno to
    jednak wygładzić.
    Podczas rysowania linii stanowiących połączenia punktów 'zmniejszonej'
    tablicy, użyty będzie algorytm Bresenhama.


    Algorytm chcę zrealizować w C++, używając do wyświetlania SDL.

    Problem :
    1. Jak to zrobić szybciej ?
    2. Jak uniknąć problemu zbyt wysokich wartości pochodnych ( zbyt
    dużych skoków wartości kolejnych pikseli ) ?

    Punkt 2 jest kluczowy, bo delta musi być wybrana 'mądrze'. Jeśli nie
    będzie, zamiast jednej linii pojawi się cały szereg rwanych
    fragmentów.

    Dzięki za pomoc.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: