eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingcircle midpoint + windowing, reverse, REAKTYWACJA
Ilość wypowiedzi w tym wątku: 32

  • 11. Data: 2015-10-10 19:50:07
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: Radoslaw Jocz <r...@g...com>


    podstawą moich procedur okienkowania okregi u jego wycinka
    jest ustalenie pozycji krawędzi okna względem 2 ćwiartek do strony danej krawędzi
    wtedy mam 4 zmienne decyzyjne i stanach
    >=r, >=0, <0,

    to pozwala na szybką pełną akceptacje okregu lub szybkie odrzucenie
    i kontynuacje dalszych obliczeń w innym przypadku
    początkowo porównuję kwadraty długości co skraca czas, bo nie chce liczyć sqrt
    gdy to nie jest konieczne jednak póżniej z tego co pamiętam musiałem użyć srt
    aby mieć mozliwość porównania drugiej współrzednej z innym zakresem dla danej
    ćwiartki.

    generalnie okienkowanie okregu mozna sprowadzic do kilku etapow
    1 wyznaczenie zmiennych decycyjnych i szybkie pelne odrzucenie lub plena akceptacja,
    2 w przypadku bardziej skaplikowanym obliczenie koniecznych punktów przeciecia
    3 rysowanie kazdej cwiartki z osobna, poprzedzajace wyznaczeniem dla niej zmiennych
    bedacych start, stop dla 2 prodedur midpoint, 2 procedury bo cwiartka ma 2 oktety.

    pamietam ze mialem trudnosci aby za pomoca kwadratow dxp / dyp
    porownywac zakresy ograniczajace dana cwiartke
    aby pozniej za pomoca takich porownac wywolac odpowiednio procedure midpointa,
    dlatego tez uzylem sqrt,
    co sugerowala chyba ksiazka Foleya, w punkcie omawiajacym okienkowanie okregu za
    pomoca prostokata

    w przyppadku wycinku okregu czy koła
    zastosowalem podobne podejscie ale z racji ze to wycinek musiało być one nieco
    bardziej skaplikowane
    1 i 2 punkt to samo jw.
    3 wyznaczenie odpowiednich cwiartek obejmujacych zakres luku
    4 rysowanie 1 lub 2 oktetow dla danej cwiatki podobnie jak wyzej pkt 3


  • 12. Data: 2015-10-10 19:56:31
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: Radoslaw Jocz <r...@g...com>


    >
    > Przeskalować przed rysowaniem?
    >
    >
    > Pozdrawiam

    co i jak przeskalować ?

    użyć wiekszego przyrostu w iteracji midpoint po za ekranem w zależnosci od r ?


  • 13. Data: 2015-10-10 20:07:10
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: "M.M." <m...@g...com>

    On Saturday, October 10, 2015 at 7:56:33 PM UTC+2, Radoslaw Jocz wrote:
    > >
    > > Przeskalować przed rysowaniem?
    > >
    > >
    > > Pozdrawiam
    >
    > co i jak przeskalować ?
    >
    > użyć wiekszego przyrostu w iteracji midpoint po za ekranem w zależnosci od r ?

    Czemu iterujesz po rozmiarze obiektów a nie po pikselach monitora?

    for( x=0 ; x<width ; x++ ) {
    for( y=0 ; y<height ; y++ ) {
    rgb = daj_kolr( zbior_obiektow_graficznych() );
    set_pixel( x , y , rgb );
    }}

    Nigdy nie może być więcej iteracji niż width * height.

    daj_rgb_kola( x , y , kolo , skala , offset_x, offset_y, etc ) {
    return ( liczysz_kolor );
    }

    Nie rozumiem co to za miliony iteracji dla jednego obiektu.

    Pozdrawiam


  • 14. Data: 2015-10-10 20:38:14
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: Radoslaw Jocz <r...@g...com>

    On Saturday, 10 October 2015 19:07:12 UTC+1, M.M. wrote:
    > On Saturday, October 10, 2015 at 7:56:33 PM UTC+2, Radoslaw Jocz wrote:
    > > >
    > > > Przeskalować przed rysowaniem?
    > > >
    > > >
    > > > Pozdrawiam
    > >
    > > co i jak przeskalować ?
    > >
    > > użyć wiekszego przyrostu w iteracji midpoint po za ekranem w zależnosci od r ?
    >
    > Czemu iterujesz po rozmiarze obiektów a nie po pikselach monitora?
    >
    > for( x=0 ; x<width ; x++ ) {
    > for( y=0 ; y<height ; y++ ) {
    > rgb = daj_kolr( zbior_obiektow_graficznych() );
    > set_pixel( x , y , rgb );
    > }}
    >
    > Nigdy nie może być więcej iteracji niż width * height.
    >
    > daj_rgb_kola( x , y , kolo , skala , offset_x, offset_y, etc ) {
    > return ( liczysz_kolor );
    > }
    >
    > Nie rozumiem co to za miliony iteracji dla jednego obiektu.
    >
    > Pozdrawiam

    to jest ciekawe podejscie ale znacznie wolniejsze od mojego ktore obecnie stosuję,

    zastanawialem sie przed chwilą ze mogłbym przeanalizowac takie podejscie

    1. opisac kwadratem okrag wtedy mamy maksymalne zakresy +-dx, +-dy
    2. cześć wspolna kwadrat z oknem - prostakatem.

    uruchomic midpoint tylko w tych przedzialach ale z odbiciami aby nie bylo tych
    niekorzystnych 1 pikselowych przesuniec w ramach jednego okregu

    byc moze bylo by to rozwiazanie,
    poczatek juz mam bo moja procedura sie do tego samego sprowadza,

    innymi słowy trzeba by ustalic wystarczajacy zakres procedury midpoint potrzebny do
    narysowania okregu,
    wystarczacy to nie znaczy minimalny optymalny
    wtedy za pomoca 1 procedury mozna wykorzystac odbicia oraz sprawdzic zakres luku w
    przydpadku wycinka




  • 15. Data: 2015-10-10 20:41:47
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: Radoslaw Jocz <r...@g...com>


    > Nie rozumiem co to za miliony iteracji dla jednego obiektu.
    >
    > Pozdrawiam

    w przypadku orginalnego algorytmu midpoint iterowana jest 1/8 obwodu okregu
    gdy np r = 1,000,000
    to jest juz sporo iteracji, przy ekranie np 640x480 wiekszosc punktow zostanie
    odrzucona ale mimo to bedzie to powolne dla duzych promieni


  • 16. Data: 2015-10-10 21:11:24
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: "M.M." <m...@g...com>

    On Saturday, October 10, 2015 at 8:38:16 PM UTC+2, Radoslaw Jocz wrote:
    > to jest ciekawe podejscie ale znacznie wolniejsze od mojego ktore obecnie stosuję,

    Nie wiem co dokładnie robisz, z góry przepraszam, nie mam też czasu
    się wczytać w Twój problem. Zwykle przed odrysowaniem czyści się
    ekran poprzez wypełnienie każdego pixela jednolitym kolorem. Nie
    wiem czy też czyścisz, czy nie, ale jeśli tak, to Twoja metoda wcale
    nie jest szybsza.

    Pozdrawiam


  • 17. Data: 2015-10-10 22:47:24
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: Radoslaw Jocz <r...@g...com>


    > Nie wiem co dokładnie robisz, z góry przepraszam, nie mam też czasu
    > się wczytać w Twój problem. Zwykle przed odrysowaniem czyści się
    > ekran poprzez wypełnienie każdego pixela jednolitym kolorem. Nie
    > wiem czy też czyścisz, czy nie, ale jeśli tak, to Twoja metoda wcale
    > nie jest szybsza.
    >
    > Pozdrawiam


    nie musi byc najlepsze czy najszybsze tylko nadajace sie do konkretnego zastosowania,

    nie robie animacji tylko wyswietlanie statycznych elementow, dodatkowo jest
    zoom i scroll.

    poczatkowo zalezalo mi aby funkcja byla szybka i dokladne co do +-1 piksel.
    Opracowalem algorytm ktory pozniej zaimplementowalem.
    Chcialem to zmodyfikowac bo pojawialy sie niekiedy przesuniecia +-1 piksel
    pomiedzy oktetami w ramach tego samego okregu


    jak opracuje kolejny lepszy algorytm to napisze tutaj o tym


  • 18. Data: 2015-10-11 01:26:10
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: bartekltg <b...@g...com>

    On 08.10.2015 13:51, Radoslaw Jocz wrote:

    Tam jest jakaś pomocnicza rzeczywista zmienna (kwadrat odległości
    piksela minus kwadrat zadanego promienia), od której znaku
    decydujesz, czy iść po płaskim, czy pod kątem. Uaktualniasz ją
    w każdym kroku.

    Nie da się jej wyliczyć, jaką powinna mieć wartość dla zadanego
    kąta startowego? Wygląda, jakby się dało. Wtedy możesz zastartować
    algorytm dla dowolnego kąta, ale jego stan będzie taki sam,
    jakbyś przeiterował niepotrzebną cześć.

    Zgadujue, ze z tego 'innego' startu bierze się problem
    z niedopasowaniem.

    pzdr
    bartekltg.



  • 19. Data: 2015-10-11 17:28:13
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: Radoslaw Jocz <r...@g...com>

    On Sunday, 11 October 2015 00:26:12 UTC+1, bartekltg wrote:
    > On 08.10.2015 13:51, Radoslaw Jocz wrote:
    >
    > Tam jest jakaś pomocnicza rzeczywista zmienna (kwadrat odległości
    > piksela minus kwadrat zadanego promienia), od której znaku
    > decydujesz, czy iść po płaskim, czy pod kątem. Uaktualniasz ją
    > w każdym kroku.

    tak tez robie.

    >
    > Nie da się jej wyliczyć, jaką powinna mieć wartość dla zadanego
    > kąta startowego? Wygląda, jakby się dało. Wtedy możesz zastartować
    > algorytm dla dowolnego kąta, ale jego stan będzie taki sam,
    > jakbyś przeiterował niepotrzebną cześć.

    taki sam ale z pewna dokladnoscia, bo przy obliczeniu sqrt to juz sa liczby double a
    nie int czy long wiec w tym problem

    >
    > Zgadujue, ze z tego 'innego' startu bierze się problem
    > z niedopasowaniem.
    >
    > pzdr
    > bartekltg.

    tak problem polega na tym ze obliczony jest nowy punkt i w konsekwencji sa drobne
    niedokladnosci przy warunkach poczatkowych dla procedury midpoint w ramach 1 oktetu,
    problemem nie jest sama dokladnosc co ta drobna roznica w danych oktetach, problemem
    moze byc dokladnosc obliczonego punktu lub
    dokladnosc wyliczenia zmiennej d jego podstawie itp.
    moze byc parzystosc lub nieparzystosc promienia itp.


    moje algortmy (dla okregu i wycinka) sa optymalne
    w takim sensie ze rysuja tylko to co jest konieczne,
    obliczaja sqrt (maksymalnie 4) ale jesli jest to konieczne
    jest kilka zagniezdzonych sprawdzen aby okreslic zakresy dla kazdej z cwiartek i
    oktetow, oktety sa rysowane osobno,
    (bo zakresy dla nich sa rozne jesli sa one w ogole aktywne)
    , co w przypadku duzego promienia i tak jest optymalne bo wtedy widoczny jest
    przewaznie tylko 1 lub 2 oktety.

    mysle aby sprobowac ustalic gorny i dolny przedzial X (x>=0, x<=y) dla midpoint a
    pierwszy Y obliczyc, taki przedzial byl by wystarczajacy dla wszystkich oktetow wtedy
    byly by rysowane na raz 8 oktetow kazdy z punktow musial by byc sprawdzany czy jest w
    oknie czy nie, w przypadku wcinka tez czy jest w zakresie katow łuku. to bylo by
    proste i rozwiazywalo by problem o ktorym mowilem
    przynajmniej w zakresie 1 okregu.
    mozna by jeszcze uzywac zmiennych
    okreslajacych czy w ogole dany oktet jest aktywny czy nie, ale
    to chyba zbedne

    zastanawialem sie tez nad tym aby rozwinac orginalna procedure midpoint
    tak aby startowac od dowolnego punktu i jednoczesnie uzywac licza calkowitych

    mozna by to rozwiazac to w taki sposob aby poczatkowy krok procedury nie byl co 1
    piksel ale co 10 lub 100, 1000 itd,
    pozniej gdy jest blisko krawedzi okna zmienic krok do 1 rysowac w oknie juz normalnie

    mysle za dalo by rade wyprowadzic zmodyfikowana procedcure na intach
    aby obslugiwala inny krok niz 1 w celu tylko wszyskiej i poprawnej inicjalizacji
    wartosci calkowitych d,x,y dla orginalnego midpointa



  • 20. Data: 2015-10-11 21:13:53
    Temat: Re: circle midpoint + windowing, reverse, REAKTYWACJA
    Od: bartekltg <b...@g...com>

    On 11.10.2015 17:28, Radoslaw Jocz wrote:
    > On Sunday, 11 October 2015 00:26:12 UTC+1, bartekltg wrote:
    >> On 08.10.2015 13:51, Radoslaw Jocz wrote:
    >>
    >> Tam jest jakaś pomocnicza rzeczywista zmienna (kwadrat odległości
    >> piksela minus kwadrat zadanego promienia), od której znaku
    >> decydujesz, czy iść po płaskim, czy pod kątem. Uaktualniasz ją w
    >> każdym kroku.
    >
    > tak tez robie.
    >
    >>
    >> Nie da się jej wyliczyć, jaką powinna mieć wartość dla zadanego
    >> kąta startowego? Wygląda, jakby się dało. Wtedy możesz zastartować
    >> algorytm dla dowolnego kąta, ale jego stan będzie taki sam, jakbyś
    >> przeiterował niepotrzebną cześć.
    >
    > taki sam ale z pewna dokladnoscia, bo przy obliczeniu sqrt to juz sa
    > liczby double a nie int czy long wiec w tym problem

    W wersji, którą znam, ta pomocnicza zmienna i tak jest double.



    >> Zgadujue, ze z tego 'innego' startu bierze się problem z
    >> niedopasowaniem.
    >>
    >> pzdr bartekltg.
    >
    > tak problem polega na tym ze obliczony jest nowy punkt i w
    > konsekwencji sa drobne niedokladnosci przy warunkach poczatkowych dla
    > procedury midpoint w ramach 1 oktetu, problemem nie jest sama
    > dokladnosc co ta drobna roznica w danych oktetach, problemem moze byc
    > dokladnosc obliczonego punktu lub dokladnosc wyliczenia zmiennej d
    > jego podstawie itp. moze byc parzystosc lub nieparzystosc promienia
    > itp.

    Daj konkretny przykład, co (i jak) rysujesz, i gdzie jest
    niedokładność.


    > moje algortmy (dla okregu i wycinka) sa optymalne w takim sensie ze
    > rysuja tylko to co jest konieczne, obliczaja sqrt (maksymalnie 4) ale
    > jesli jest to konieczne jest kilka zagniezdzonych sprawdzen aby
    > okreslic zakresy dla kazdej z cwiartek i oktetow, oktety sa rysowane
    > osobno, (bo zakresy dla nich sa rozne jesli sa one w ogole aktywne) ,
    > co w przypadku duzego promienia i tak jest optymalne bo wtedy
    > widoczny jest przewaznie tylko 1 lub 2 oktety.
    >
    > mysle aby sprobowac ustalic gorny i dolny przedzial X (x>=0, x<=y)
    > dla midpoint a pierwszy Y obliczyc, taki przedzial byl by
    > wystarczajacy dla wszystkich oktetow wtedy byly by rysowane na raz 8
    > oktetow kazdy z punktow musial by byc sprawdzany czy jest w oknie czy
    > nie, w przypadku wcinka tez czy jest w zakresie katow łuku. to bylo
    > by proste i rozwiazywalo by problem o ktorym mowilem przynajmniej w
    > zakresie 1 okregu. mozna by jeszcze uzywac zmiennych okreslajacych
    > czy w ogole dany oktet jest aktywny czy nie, ale to chyba zbedne

    > zastanawialem sie tez nad tym aby rozwinac orginalna procedure
    > midpoint tak aby startowac od dowolnego punktu i jednoczesnie uzywac
    > licza calkowitych


    > mozna by to rozwiazac to w taki sposob aby poczatkowy krok procedury
    > nie byl co 1 piksel ale co 10 lub 100, 1000 itd, pozniej gdy jest
    > blisko krawedzi okna zmienic krok do 1 rysowac w oknie juz normalnie


    Ale po co, skoro dopiero co powiedziałeś, że _potrafisz_ dojść
    do krawędzi w jednym ruchu.


    pzdr
    bartekltg


strony : 1 . [ 2 ] . 3 . 4


Szukaj w grupach

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: