-
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
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-05 Shrek, wzrośnie cena prądu :-)
- 2025-07-05 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Konsultant wewnętrzny <=
- 2025-07-06 Płacić za wodę ze studni
- 2025-07-06 Kolejny inżynier...
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-04 od kiedy można obrażać Plastusia i do kiedy Batyra?
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-03 Trybik
- 2025-07-04 Renault Symbioz
- 2025-07-04 Architektura IIIRP: Wyjątkowa, a prymitywniejsza niż stodoła pod zaborami
- 2025-07-04 Warszawa => International Freight Forwarder <=
- 2025-07-04 Wrocław => SAP ABAP Developer <=
- 2025-07-04 Warszawa => Mid/Senior IT Recruiter <=