-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: " " <f...@W...gazeta.pl>
Newsgroups: pl.comp.programming
Subject: Re: 4ry wierzchołki (głupi problem)
Date: Sun, 8 Apr 2012 06:50:51 +0000 (UTC)
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 183
Message-ID: <jlrcgb$360$1@inews.gazeta.pl>
References: <jlnf9t$ip5$1@inews.gazeta.pl> <jlnlen$1d2$1@inews.gazeta.pl>
<jlol4d$h1d$1@inews.gazeta.pl>
<4f808add$0$26707$65785112@news.neostrada.pl>
<jlqhf7$9i8$1@inews.gazeta.pl>
NNTP-Posting-Host: localhost
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1333867851 3264 172.20.26.242 (8 Apr 2012 06:50:51 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sun, 8 Apr 2012 06:50:51 +0000 (UTC)
X-User: fir
X-Forwarded-For: 31.60.165.59
X-Remote-IP: localhost
Xref: news-archive.icm.edu.pl pl.comp.programming:196667
[ ukryj nagłówki ]M.M. <m...@W...gazeta.pl> napisał(a):
> slawek <s...@h...pl> napisał(a):
>
> >
> > Użytkownik <f...@W...gazeta.pl> napisał w wiadomości grup
> > dyskusyjnych:jlol4d$h1d$...@i...gazeta.pl...
> > > M.M. <m...@W...gazeta.pl> napisał(a):
> > >
> > >> <f...@g...SKASUJ-TO.pl> napisał(a):
> > >>
> > >> > mam cztery wierzcholki prostokata
> > >> >
> > >> > int Ax, Ay, Bx, By, Cx, Cy, Dx, Dy;
> > >> >
> > >> > ktore maja przypisane wartosci, potrzebuje te
> > >> > wartosci przwpisac do
> > >> >
> > >> > int upX, upY, downX, downY, leftX, leftY, rightX, rightY;
> > >> >
> > >> > zgodnie z nazwami tj ten najbardziej z lewej do leftX leftY
> > >> > itp, jak to zrobic w prosty sposob?
> > >>
> > >> Funkcje min i max będą przydatne.
> > >
> > > to by bylo chyba za dlugie, chyba moge to zrobic sprawdzajac
> > > w jakiej cwiartce jest wektor B-A (mozna zalozyc ze ABCD sa
> > > uporzadkowane np prawoskretnie wiec chyba powinno byc ok)
> >
> > Posortować oddzielnie (Ax, Bx, Cx, Dx) i (Ay, By, Cy, Dy).
> >
> > Lewe są te z najmniejszymi x-sami, górne te z najmniejszymi
(największymi?
> > zależy od przyjętego układu współrzędnych) y-kami.
> >
> > Trochę logiki i powinno działać.
> >
> > Funkcje min i max nie będą (chyba) szybsze niż if-else .
> >
> > Najogólniej? Są 24 przypadki, wystarczy "zajarzyć" który z nich i już
jest
> > prosto.
>
> Jeśli to ma być szybko, to bez ifów i z wykorzystaniem specyficznych cech
> danych wejściowych. Jeśli zmienne są nazywane leftX i leftY to rozumiem,
> że chodzi tylko o takie kwadraty które da się opisać czterema liczbami:
> dwie współrzędne lewego górnego rogu i dwie prawego dolnego. Do wyświetlania
> na monitorze w zupełności wystarczy 16 bitów, daje to sporą rozdzielczość
> 65tys na 65tys punktów logicznych czy tam fizycznych. Czyli apropo
> struktury danych mamy cztery liczby upakowane do jednej 64 bitowej,
najlepiej
> jakby ona znalazła się w rejestrze.
>
> Mamy cztery dane wejściowe:
> Ax, Ay, Bx, By, Cx, Cy, Dx, Dy
> Być może to już jest błędem, może algorytm wypluwający te dane da się
> tak przebudować, aby dawał tylko 4 liczby, gdyż każda współrzędna dla
> prostokąta obróconego o wielokrotność 90 stopni występuje dwa razy. Jeśli
> się da algorytm wypluwający przebudować, to wystarczy porównać dwie
> liczby if( a < b ) szesnastobitowe utworzone odpowiednio z bitów 0-15 i
> 32-47. W przypadku gdy współrzędne są podawane tak jak zwykle, czyli
> najpierw x a potem y, to w przypadku gdy a < b wiemy że lewy górny punkt
> jest zakodowany w bitach 0-31, prawy dolny w bitach 32-64 i nic nie musimy
> zmieniać. W przypadku gdy a > b to musimy zamienić 32 bity młodsze ze
starszymi
> .
>
> Mniej/więcej coś takiego:
> uint64 swp_corners( uint64 input ) {
> const uint32 tmp = ( ( input & x_corner_1 ) >> offset_x1 ) < ( ( input &
> x_corner_2 ) >> offset_x2 );
> return (input>>(32*tmp))|(input<<(32*tmp));
> }
>
> Można pomyśleć jeszcze jak w tmp uzyskać jedynkę gdy wynik porównywania
> jest prawdziwy i zero gdy jest nieprawdziwy w sposób niewymagający użycia
> operatora mniejszości. Tak żeby kompilator nie wstawiał instrukcji
> jum_if_less.
>
nienie chodzi mi o cos innego
a b c d to wierzcholki przekrzywionego (obroconego o kat alfa)
prostokata, mozna tez zalozyc ze sa uporzadkowane np prawoskretnie
zrobilem cos takiego
WX_ = qBx-qAx;
WY_ = qBy-qAy;
if(WX_>0)
{
if(WY_>0)
{
upx = qBx; upy = qBy;
rightx = qCx;righty = qCy;
downx = qDx; downy = qDy;
leftx = qAx; lefty = qAy;
}
else
{
upx = qAx; upy = qAy;
rightx = qBx;righty = qBy;
downx = qCx; downy = qCy;
leftx = qDx; lefty = qDy;
}
}
else if(WX_<0)
{
if(WY_>0)
{
// dabc
upx = qCx; upy = qCy;
rightx = qDx;righty = qDy;
downx = qAx; downy = qAy;
leftx = qBx; lefty = qBy;
}
else
{
upx = qDx; upy = qDy;
rightx = qAx;righty = qAy;
downx = qBx; downy = qBy;
leftx = qCx; lefty = qCy;
}
}
else
{
}
to uporzadkowanie jest mi potrzebne by pozniej
wyrysowac quada na ekranie przez cos w stylu
dxleft = ((upx-leftx)<<10)/(lefty-upy);
dxright = ((upx-rightx)<<10)/(righty-upy);
xs = upx<<10;
xk = upx<<10;
int y = upy;
int dxs = dxleft;
int dxk = dxright;
for(;;)
{
drawPozioma(y, xs>>10, xk>>10, color);
if(y==downy) break;
y--;
xs+=dxs;
xk+=dxk;
if(y==lefty) dxs = dxright;
if(y==righty) dxk = dxleft;
}
ale trzeba uwzglednic tez przypadki gdy punkty w gornej lini sa dwa
(i to wcale nie jest wtedy koniecznie prosty prostakat)
- bez przerwy leca jakies bledy i nie mog edefekto doprowadzic
tego prostego cholerstwa do dzialania jest dziwnie frustrujace
(podobnie nie moge znalezc dobrego przykladu na renderowanie
przekrzywionych prostokatow w necie)
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Następne wpisy z tego wątku
- 08.04.12 10:19 M.M.
- 08.04.12 15:04 slawek
- 08.04.12 18:48 M.M.
- 08.04.12 18:56 Michoo
- 08.04.12 19:05 slawek
- 08.04.12 19:10 slawek
- 08.04.12 19:43 Michoo
- 08.04.12 20:17 M.M.
- 08.04.12 20:31 Edek Pienkowski
- 08.04.12 20:51 slawek
- 08.04.12 22:42 Michoo
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-18 Poseł oszukany "na policjanta"
- 2024-12-18 znów chory psychicznie
- 2024-12-18 Katowice => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2024-12-18 Poznań => Dyspozytor Międzynarodowy <=
- 2024-12-18 Katowice => System Architect (background deweloperski w Java) <=
- 2024-12-18 Gdańsk => System Architect (Java background) <=
- 2024-12-18 Warszawa => Helpdesk Specialist <=
- 2024-12-18 Katowice => Kierownik Działu Zarządzania Platformą Wirtualizacji i
- 2024-12-18 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-18 Żerniki => Employer Branding Specialist <=
- 2024-12-18 Gliwice => Specjalista ds. public relations <=
- 2024-12-18 Kablówka z modułem CAM
- 2024-12-18 Warszawa => Spedytor międzynarodowy <=
- 2024-12-18 Wróblewo => Analityk finansowy <=
- 2024-12-18 Gdańsk => Specjalista ds. Sprzedaży <=