Example #1
0
void ShowInfoDialog(const char* pText)
{
  if (g_dlgInfo.GetSafeHwnd())
  {
    g_dlgInfo.m_wndInfo.SetWindowText(pText);
    g_dlgInfo.ShowWindow(SW_SHOW);
  }
  else
  {
    g_dlgInfo.Create(IDD_DLG_INFORMATION);
    g_dlgInfo.m_wndInfo.SetWindowText(pText);
    g_dlgInfo.ShowWindow(SW_SHOW);
  }
  g_pParentWnd->SetFocus();
}
Example #2
0
void CSpectrumFrame::OnDefokus() {
	char str[300];
	if(m_type_spectr == SPECTR) {
		if(this->m_type_plant == PAM) {
			CDialogDefokus dialog;
			dialog.m_apertura = m_apertura;
			dialog.m_length_wave = m_length_wave;
			dialog.m_iDem = this->m_iDem;
			dialog.m_k_ap_diaf = pow((6.0 / (dialog.m_Ccf * pow(10.0,7.0) * pow(dialog.m_length_wave, 3.0))), 0.25);
			dialog.UpdateD();

			if(dialog.DoModal() == IDOK) {
				LLayer = m_length_wave;
				DLayer = dialog.m_apertura;
				CObjectFrameDefokus *m_object;
				
				CDialogInfo* DialogInfo = new CDialogInfo(NULL);
				DialogInfo->Create(IDD_INFO,NULL);
				DialogInfo->ShowWindow(SW_SHOW);
				DialogInfo->m_str.Format("Идет расчет дефокусировки...");
				DialogInfo->UpdateData(FALSE);
				
				m_object = new CObjectFrameDefokus(m_fArroy, m_iDem, dialog.m_D, dialog.m_Ccf, dialog.m_Cxp, dialog.m_k_ap_diaf);
				m_object->Kvadrant = 0;
				m_object->GetOptimumCoefficient();
				m_object->m_fPos_Const *= 0.8;
				m_object->ScaleView();
				sprintf(str, "Визуализация Дефокусировка [%dx%d]", m_iDem, m_iDem);
				if (!m_object->Create(NULL,_TEXT(str),0, rectDefault, NULL))
					return;	
				m_object->MoveWindow(80,80,10000,10000);
				
				DialogInfo->CloseWindow();
				delete DialogInfo;
			}
		}
	} else {
		AfxMessageBox("Визуализация находится только со спектра!!!",MB_OK);
	}	
}
Example #3
0
void CMainFrame::ProcessingPAM()
{
	//m_length_wave -> длина волны
	//m_distance_layer -> расстояние между слоями
	//m_apertura ->размер аппертуры
	CDialogInfo*  DialogInfo = new CDialogInfo(NULL);
	DialogInfo->Create(IDD_INFO,NULL);
	
				
	LLayer=m_length_wave;
	DLayer=m_apertura;
	
	CSpectrumFrameLayers *m_image;
	CSpectrumFrameLayers *m_spectr;
	
	int i, j, k, Flag = 0;
	double a, u, v, fi, ph;
	int ImageSize=m_iDem_fasa;
	double step = 222./ImageSize;
	struct Complex z1, z2;
	char str[300];
	
	// массив изображения
	BYTE *Image_R =new BYTE[ImageSize*ImageSize];
	// спектр конечной реализации
	struct Complex *R=new struct Complex[ImageSize*ImageSize];
	// массив ЧХ
	struct Complex *W=new struct Complex[ImageSize*ImageSize];
	// временный комплексный массив
	struct Complex *TempComp=new struct Complex[ImageSize*ImageSize];     
	
	for(i=0; i<ImageSize; i++)
	{
		for(j=0; j<ImageSize; j++) 
		{
			R[i*ImageSize+j].re=1;
			R[i*ImageSize+j].re=0;
			Image_R[i*ImageSize+j] = 1;
		}
	}
	//вывод коментария
	sprintf(str,"Погодтовка частотной характеристики");
	m_wndStatusBar.SetPaneText(0,str,TRUE);
	
	DialogInfo->ShowWindow(SW_SHOW);
	DialogInfo->m_str.Format("Погодтовка частотной характеристики");
	DialogInfo->UpdateData(FALSE);
	
	//подготовка частотной характеристики
	a = (M_PI*m_length_wave*m_distance_layer*(-1))/(m_apertura*m_apertura);		
	
	for(i=0; i<ImageSize; i++) 
	{
		if (i<(int)ImageSize/2) 
			u = i*i;
		else                    
			u = (ImageSize-i)*(ImageSize-i);
		
		for(j=0; j<ImageSize; j++) 
		{
			if(j<(int)ImageSize/2) 
				v = j*j;
			else                   
				v = (ImageSize-j)*(ImageSize-j);
			fi = a*(u+v);
			cexp(fi, W[i*ImageSize+j]);
		}
	}
	//------------------------------------------------------------------------
	//  Начало реализации "слоевого" метода
	//------------------------------------------------------------------------
	//PntLayer количество слоев
	for(k=0; k<PntLayer; k++) 
	{
		sprintf(str,"Идет расчет слоя #%d из %d",k+1,PntLayer);
		m_wndStatusBar.SetPaneText(0,str,TRUE);

		DialogInfo->ShowWindow(SW_SHOW);
		DialogInfo->m_str.Format("Идет расчет слоя #%d из %d",k+1,PntLayer);
		DialogInfo->UpdateData(FALSE);


		//DifPhaseModul  глубина фазовой модуляции
		m_fasa->ReModeling(m_iDem_fasa,m_type_fasa,m_cd_fasa,0);
		m_ampl->ReModeling(m_iDem_ampl,m_type_ampl,m_cd_ampl,0);

		ph = 2.*M_PI*DifPhaseModul/(double)ImageSize;
		for(i=0; i<ImageSize; i++) 
		{
			for(j=0; j<ImageSize; j++) 
			{
				fi = (m_fasa->m_bArroy[i*ImageSize+j])*ph;
				z1.re =(float)(m_ampl->m_bArroy[i*ImageSize+j]*cos(fi)/(float)ImageSize);
				z1.im = (float)(m_ampl->m_bArroy[i*ImageSize+j]*sin(fi)/(float)ImageSize);
				z2 = R[i*ImageSize+j];
				cmul(z1, z2, R[i*ImageSize+j]);
				TempComp[i*ImageSize+j] = R[i*ImageSize+j];
			}
		}

		//преобразование фурье 1-ое
		Fft_forward(TempComp);
		// Умножение на частотную характеристику свободного пространства
		if (k != PntLayer-1) 
		{
			for(i=0; i<ImageSize; i++) 
			{
				for(j=0; j<ImageSize; j++) 
				{
					cmul(TempComp[i*ImageSize+j], W[i*ImageSize+j], z1);
					TempComp[i*ImageSize+j] = z1;
				}
			}
		}
		else 
		{
			for(i=0; i<ImageSize; i++) 
			{
				for(j=0; j<ImageSize; j++) 
				{
					z2 = TempComp[i*ImageSize+j];
					cmul(TempComp[i*ImageSize+j], W[i*ImageSize+j], z1);
					TempComp[i*ImageSize+j] = z1;
					W[i*ImageSize+j]        = z2;
				}			
			}
			sprintf(str,"Спектр изображения:");
			m_wndStatusBar.SetPaneText(0,str,TRUE);
			
			DialogInfo->ShowWindow(SW_SHOW);
			DialogInfo->m_str.Format("Погодтовка cпектра изображения.");
			DialogInfo->UpdateData(FALSE);

			
			m_spectr = new CSpectrumFrameLayers(m_iDem_ampl,TempComp);
		
			m_spectr->m_apertura=m_apertura;
			m_spectr->m_length_wave=m_length_wave;

			m_spectr->GetOptimumCoefficient();
			m_spectr->m_fPos_Const*=100000;
			m_spectr->ScaleView();			
			m_spectr->m_type_spectr=SPECTR;
			m_spectr->m_type_plant=PAM;
			sprintf(str,"Спектр изображения [%dx%d]",m_iDem_ampl,m_iDem_ampl);
			
			if (!m_spectr->Create(NULL,_TEXT(str),0, rectDefault, NULL))
				return;
			m_spectr->MoveWindow(120,120,10000,10000);
			
		}
		// Обратное преобразование Фурье
		Fft_back(TempComp);
	}
	sprintf(str,"Изображение:");
	m_wndStatusBar.SetPaneText(0,str,TRUE);
	DialogInfo->ShowWindow(SW_SHOW);
	DialogInfo->m_str.Format("Погодтовка изображения.");
	DialogInfo->UpdateData(FALSE);

	m_image = new CSpectrumFrameLayers(m_iDem_ampl,TempComp);
	m_image->Kvadrant=0;
	m_image->m_fPos_Const=0.00000000001;
	m_image->ScaleView();
	m_image->m_type_spectr=IMAGE;
	sprintf(str,"Изображение [%dx%d]",m_iDem_ampl,m_iDem_ampl);
	
	if (!m_image->Create(NULL,_TEXT(str),0, rectDefault, NULL))
		return;
	DialogInfo->DestroyWindow();
	m_image->MoveWindow(80,80,10000,10000);
	m_spectr->BringWindowToTop();
	
	delete[] W;
	delete[] R;
	delete[] TempComp;

}
Example #4
0
void HideInfoDialog()
{
  if (g_dlgInfo.GetSafeHwnd())
    g_dlgInfo.ShowWindow(SW_HIDE);
}