gralem sobie w jakas gre na ps3 gdzie sie kontrolowalo lot strzaly z luku padem pomyslalem ze moge sobie zrobic cos podobnego zeby dzialalo mi na kompie bo zajawkowe to bylo, niestety gimballock (jak to niektorzy nazywaja) pieprzy mi wszystko wiec postanowilem ze na razie bede bawil sie jakas gotowa aplikacja (tzn. symulatorem lotu)
no i dziala padacznie sie tego uzywa szczegolnie jak jeszcze fraps zgrywa film ale udalo sie wyladowac :P
na razie tylko kontrolowalem lot, bo spalilem reszte diod i nie moglem wiekszej funkcjonalnosci wprowadzic :S
hmm jak dziala algorytm??
no coz dodajemy z kazdego piksela skladowe rgb i patrzymy cy sa wieksze od 705 maksymalnie moze osiagnac 255*3 czyli 765, jak jest wieksze to malujemy piksel na bialo jak nie to na czarno, pozniej (drugi pass)
czyli algorytm zapelniania (funkcja rekurencyjna - zapelniamy kolory odpowiednio czarne tlo, jedna kropka i druga kropka), obliczamy ile pikseli zesmy zamalowali i jezeli miesci sie to w jakims przedziale np.powiedzmy 700 do 2000 to znaczy ze znalazl program pierwsza kropke pozniej ustawiamy jakos bool ze znalaz pierwsza kropke, i szukamy drugiej jakznowy wypelnienie (zapelnione piksele) miesci sie w tym przedziale to mamy druga kropke, reszty juz nie opisuje jak wyliczam kat miedzy 2 kropkami i jak symuluje przyciskanie klawiszy bo jeszcze ktos to wykorzysta do jakiegos bota do gry internetowej,
DZIALA od tak dawna nie zrobilem niczego co by dzialalo :)
aha nie musze dodawac ze to z d**y bajer zbedny wg mnie ale zawsze mozna sie tym pobawic lipa tylko, ze jak zle sie ustawimy wzgledem kamery internetowej to zaczna sie dziac rozne rzeczy ktorych nie chcemy i do tego trzeba w wzglednie zaciemnionym miejscu sie znajdowac.
i mozna np. sterowac dwoma zapalonymi papierosami :]
oczywiscie posilkowalem sie klawiatura zeby zmienic widok patrzenia i zeby zmniejszac/zwiekszac ciag i hamowac
Mam nawet pytanie bo aplikacja sie krzaczy tzn nie pobieraobrazuwideo jak bedziemy gracw jakas gre na fullscreenie i nie wiem za bardzo jak to obejsc bo uzywam directshow i musi byc taka mozliwosc
oto kawalek kodu
VideoForm->Button5->Click();//1 pass (:
VideoForm->Button4->Click();//2 pass :)
if (((VideoForm->leftdotY + VideoForm->rightdotY ) / 2.0f ) <= 80.0f )
{
cos
cos
Button1->Caption = "UP";
}
if (( (VideoForm->leftdotY + VideoForm->rightdotY) / 2.0f ) >= 150.0f ) {
cos
cos
Button1->Caption = "DOWN";
}
float p =((VideoForm->leftdotY + VideoForm->rightdotY ) / 2.0f );
if ( ( p > 80.0f ) && ( p < 150.0f) ) {
cos
cos
Button1->Caption = "CENTER";
}
//teraz orientacja w lewo czy w prawo
float realleftX, realleftY, realrightX,realrightY;
if ( VideoForm->leftdotX > VideoForm->rightdotX )
{
realleftX = VideoForm->rightdotX;
realleftY = VideoForm->rightdotY;
realrightX = VideoForm->leftdotX;
realrightY = VideoForm->leftdotY;
} else
{
realleftX = VideoForm->leftdotX;
realleftY = VideoForm->leftdotY;
realrightX = VideoForm->rightdotX;
realrightY = VideoForm->rightdotY;
}
float angle = n2dGetPolarCoordAngleA(realleftX-
realrightX,realleftY-
realrightY) / 6.2731860f;
angle = 360.0f*angle;
angle = VALIDUJ(angle);
Label1->Caption = FloatToStr(angle);
if ( angle >= 205.0f ) {
Label3->Caption = "LEFT";
cos
cos
}
if ( angle <= 155.0f ) {
Label3->Caption = "RIGHT";
cos
cos
}
if ( ( angle < 205.0f ) && ( angle > 155.0f ) ) {
Label3->Caption = "CENTER";
cos
cos
}