/*========================= // Cross // ===========================*/ void LineCross::Cross(CDC* pDC) { pDC->SelectObject(CPen (PS_SOLID,2,RGB(255,0,0))); if(LCSCOUNT==4) { delta=(LCSP[1].x-LCSP[0].x)*(LCSP[2].y-LCSP[3].y)-(LCSP[2].x-LCSP[3].x)*(LCSP[1].y-LCSP[0].y); if (delta!=0) { rmd=((LCSP[2].x-LCSP[0].x)*(LCSP[2].y-LCSP[3].y)-(LCSP[2].x-LCSP[3].x)*(LCSP[2].y-LCSP[0].y))/delta; if (rmd>=0&&rmd<=1) { miu=((LCSP[1].x-LCSP[0].x)*(LCSP[2].y-LCSP[0].y)-(LCSP[2].x-LCSP[0].x)*(LCSP[1].y-LCSP[0].y))/delta; if (miu>=0&&miu<=1)// { temp.x=long(LCSP[0].x+rmd*(LCSP[1].x-LCSP[0].x)); temp.y=long(LCSP[0].y+rmd*(LCSP[1].y-LCSP[0].y)); ShowPoints(pDC,temp); } } } LCSCOUNT=0; } pDC->SetTextColor(RGB(65,180,65)); pDC->TextOut(700,70,_T("两点画线")); pDC->TextOut(700,100,_T("两线求交")); }
bool CCoin::OnCollision(CEntity* Entity) { if ((Entity->Type == ENTITY_TYPE_PLAYER) && !Dead) { // Kill coin Kill(); //Move it away NOW int OldX = X; X = -100; // Add Coin value to score CAreaScoring::AreaScoring.AddCoin(1); CAreaScoring::AreaScoring.AddPoints(Points); // Display Points ShowPoints(Points, OldX, Y); //RemoveFromList(); // Play Sound CSoundManager::SoundManager.Play(FX_COIN); } return true; }
void RaceWizard::P5::OnPageChanged( wxWizardEvent& WXUNUSED(event) ) { wxCheckBox* start_higher = (wxCheckBox*)FindWindow(ID_LEFTOVER_POINTS); wxString str = "All 'Costs 75% extra' fields start at Tech "; str << m_pRace->StartAtBonus(); start_higher->SetLabel(str); ShowPoints(); }
bool CPowerUp::OnCollision(CEntity* Entity) { if ((Entity->Type == ENTITY_TYPE_PLAYER) && !Dead) { // Kill Power-up Kill(); //Move it away NOW int OldX = X; X = -100; CMario* player = GetPlayer(); switch(PowerUpType) { case POWERUP_TYPE_GREEN: // gain 1 Life CAreaScoring::AreaScoring.AddLife(1); // Play Sound CSoundManager::SoundManager.Play(FX_1UP); break; case POWERUP_TYPE_RED: // become SUPER Mario if (SUPER_MARIO > player->MarioState) player->ChangeMarioState(SUPER_MARIO); else // Store it for later { player->ReservePowerUp = PowerUpType; // Play Sound CSoundManager::SoundManager.Play(FX_RESERVE_STORED); } break; case POWERUP_TYPE_FIREFLOWER: // become SUPER Mario if (FIRE_MARIO > player->MarioState) player->ChangeMarioState(FIRE_MARIO); break; } // Add Power-up value to score CAreaScoring::AreaScoring.AddPoints(Points); // Display Points ShowPoints(Points, OldX, Y); RemoveFromList(); } return true; }
void CBanzaiBill::Kill() { CSoundManager::SoundManager.Play(FX_STOMP); // Display Points ShowPoints(CONST_POINTS_EARNED, X, Y); // Add points to score CAreaScoring::AreaScoring.AddPoints(CONST_POINTS_EARNED); // STOP! FollowPath = false; MoveLeft = MoveRight = false; // Jump Off Screen Flags = ENTITY_FLAG_GHOST | ENTITY_FLAG_GRAVITY; X -= 100; Y -= 100; SetInitialSpeed(5,5,0,0); CEntity::Kill(); }
void RaceWizard::P5::OnStartAt( wxCommandEvent& event ) { long val = event.GetInt(); m_pRace->SetStartAt(val); ShowPoints(); }
void RaceWizard::P5::OnTechCostSelected( wxCommandEvent& event ) { int tt = event.GetId() - ID_TECH_COST_FIRST; m_pRace->SetIntTechCost(tt, event.GetSelection()); ShowPoints(); }
void cAppliOptimTriplet::Execute() { ElTimer aChrono; if (! EAMIsInit(&mNbMaxSel)) { mNbMaxSel = mQuick ? QuickDefNbMaxSel : StdDefNbMaxSel; } if (mShow) mQuitExist = false; mNbMaxInit = mQuick ? QuickNbMaxInit : StdNbMaxInit ; if (! EAMIsInit(&mShow)) mShow = EAMIsInit(&mSzShow); if (MMVisualMode) return; cNewO_OneIm * mNoIm3 = new cNewO_OneIm(*mNM,m3S.mV2); std::string aNameSauveXml = mNM->NameOriOptimTriplet(false,mNoIm1,mNoIm2,mNoIm3,false); std::string aNameSauveBin = mNM->NameOriOptimTriplet(true ,mNoIm1,mNoIm2,mNoIm3,false); if (ELISE_fp::exist_file(aNameSauveXml) && ELISE_fp::exist_file(aNameSauveBin) && mQuitExist) return ; std::string aName3R = mNM->NameOriInitTriplet(true,mNoIm1,mNoIm2,mNoIm3); cXml_Ori3ImInit aXml3Ori = StdGetFromSI(aName3R,Xml_Ori3ImInit); mIms.push_back(new cImOfTriplet(0,*this,mNoIm1,ElRotation3D::Id)); mIms.push_back(new cImOfTriplet(1,*this,mNoIm2,Xml2El(aXml3Ori.Ori2On1()))); mIms.push_back(new cImOfTriplet(2,*this,mNoIm3,Xml2El(aXml3Ori.Ori3On1()))); mIm1 = mIms[0]; mIm2 = mIms[1]; mIm3 = mIms[2]; mFoc = 1/ ( (1.0/mIm1->Foc()+1.0/mIm2->Foc()+1.0/mIm3->Foc()) / 3.0 ) ; // mP12 = new cPairOfTriplet(mIm1,mIm2,mIm3); // mP13 = new cPairOfTriplet(mIm1,mIm3,mIm2); // mP23 = new cPairOfTriplet(mIm2,mIm3,mIm1); mPairs.push_back(new cPairOfTriplet(mIm1,mIm2,mIm3)); mPairs.push_back(new cPairOfTriplet(mIm1,mIm3,mIm2)); mPairs.push_back(new cPairOfTriplet(mIm2,mIm3,mIm1)); mP12 = mPairs[0]; mP13 = mPairs[1]; mP23 = mPairs[2]; mNM->LoadTriplet(mIm1->Im(),mIm2->Im(),mIm3->Im(),&mIm1->VFullPtOf3(),&mIm2->VFullPtOf3(),&mIm3->VFullPtOf3()); if (EAMIsInit(&mSzShow) && (!EAMIsInit(&mNbMaxSel))) { mNbMaxSel = ModeShowNbMaxSel; } if (mShow) std::cout << "Time load " << aChrono.uval() << "\n"; int aNb3 = round_up(CoutAttenueTetaMax(mIm2->VFullPtOf3().size() ,mNbMaxSel)); mNbMaxSel = aNb3; // mSel3 = IndPackReduit(mIm2->VFullPtOf3(),mNbMaxInit,mNbMaxSel); mSel3 = IndPackReduit(mIm2->VFullPtOf3(),mNbMaxInit,mNbMaxSel); for (int aK=0 ; aK<3 ; aK++) { mIms[aK]->SetReduce(mSel3); mFullH123.push_back(&(mIms[aK]->VFullPtOf3())); mRedH123.push_back(&(mIms[aK]->VRedPtOf3())); } mP12->SetPackRed(false,mNbMaxInit,mNbMaxSel,mSel3,*mFullH123[1]); mP23->SetPackRed(true ,mNbMaxInit,mNbMaxSel,mSel3,*mFullH123[1]); mP13->SetPackRed(true ,mNbMaxInit,mNbMaxSel,mSel3,*mFullH123[0]); mPds3 = ElMin(MaxSurPond3,(mP12->NbR()+mP13->NbR()+mP23->NbR())/double(mIm1->NbR())); mBestResidu = ResiduGlob(); /* TestOPA(*mP12); */ if (mShow) { std::cout << "Time reduc " << aChrono.uval() << " Pds3=" << mPds3 << "\n"; } for (int aKP=0 ; aKP<int(mPairs.size()) ; aKP++) { TestOPA(*(mPairs[aKP])); } if (mShow) { std::cout << "Time opa " << aChrono.uval() << "\n"; } if (mShow) { std::cout << "NB TRIPLE " << mIm2->VFullPtOf3().size() << " Resi3: " << ResiduTriplet() << " F " << mFoc << "\n"; std::cout << "RESIDU/PAIRES " << mP12->ResiduMoy() << " " << mP13->ResiduMoy() << " " << mP23->ResiduMoy() << " " << "\n"; std::cout << "R Glob " << ResiduGlob() << "\n"; } #if (ELISE_X11) if (EAMIsInit(&mSzShow)) { mIm2->InitW(mSzShow); ShowPoints(mIm2,mP12->FullVP2(),P8COL::cyan,2); ShowPoints(mIm2,mP23->FullVP1(),P8COL::yellow,2); ShowPointSel(mIm2,mP12->VRedP2(),P8COL::cyan); ShowPointSel(mIm2,mP23->VRedP1(),P8COL::yellow); std::cout << "NB 12 " << mP12->VRedP2().size() << "\n"; // ShowPoints(mIm2,mIm2->VFullPtOf3(),P8COL::blue,4); // ShowPointSel(mSel3.mVSel,mIm2,mIm2->VFullPtOf3(),P8COL::red); // ShowPoints(mIm2,mIm2->VFullPtOf3(),P8COL::blue,2); ShowPointSel(mIm2,mIm2->VRedPtOf3(),P8COL::blue); //================================== mIm1->InitW(mSzShow); ShowPoints(mIm1,mP13->FullVP1(),P8COL::cyan,2); ShowPointSel(mIm1,mP13->VRedP1(),P8COL::cyan); ShowPoints(mIm1,mIm1->VFullPtOf3(),P8COL::blue,2); ShowPointSel(mIm1,mIm1->VRedPtOf3(),P8COL::blue); mIm2->W()->clik_in(); } #endif /* SolveBundle3Image ( mFoc, mIm2->Rot(), mIm3->Rot(), mFullH123, mP12->FullHoms(), mP13->FullHoms(), mP23->FullHoms() ); */ int aNbIterBundle = mQuick ? QuickNbIterBundle : StdNbIterBundle; double aBOnH; Pt3dr aPMed; SolveBundle3Image ( mFoc, mIm2->Ori(), mIm3->Ori(), aPMed, aBOnH, mRedH123, mP12->RedHoms(), mP13->RedHoms(), mP23->RedHoms(), mPds3, aNbIterBundle ); cXml_Ori3ImInit aXml; aXml.Ori2On1() = El2Xml(mIm2->Ori()); aXml.Ori3On1() = El2Xml(mIm3->Ori()); aXml.ResiduTriplet() = ResiduGlob(); aXml.NbTriplet() = (int)mRedH123[0]->size(); aXml.BSurH() = aBOnH; aXml.PMed() = aPMed; MakeFileXML(aXml,aNameSauveXml); MakeFileXML(aXml,aNameSauveBin); if (mShow) { std::cout << "NB TRIPLE " << mIm2->VFullPtOf3().size() << " Resi3: " << ResiduTriplet() << " F " << mFoc << "\n"; std::cout << "RESIDU/PAIRES " << mP12->ResiduMoy() << " " << mP13->ResiduMoy() << " " << mP23->ResiduMoy() << " " << "\n"; std::cout << "R Glob " << ResiduGlob() << "\n"; std::cout << "Time bundle " << aChrono.uval() << "\n"; } for (int aK=0 ; aK<3 ; aK++) { delete mPairs[aK]; delete mIms[aK]; } mPairs.clear(); mIms.clear(); mFullH123.clear(); mRedH123.clear(); }