Скачиваний:
37
Добавлен:
06.05.2013
Размер:
17.52 Кб
Скачать
// Каркас приложения для Windows'95

#include <windows.h>
#include "resource.h"
#include <stdio.h>
#include <math.h>

LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);
BOOL CALLBACK DialogProc(HWND hwnd,UINT message, WPARAM wParam,LPARAM lParam);
DWORD WINAPI ThreadProc( LPVOID lpParameter);


float En,E,Eo,Eoo,Xao,Yao,Xbo,Ybo,Vxao,Vyao,Vxbo,Vybo,Fo,Vmx,Vmy,Vam;
float Xa,Xb,Ya,Yb,Qa,Qb,F,cosA,sinA,dt,Ma,Mb,R21,V21,gr,M;

float Xan,Yan,Xbn,Ybn,Xan1,Xbn1,Yan1,Ybn1,Vaxn1,Vayn1,Vbxn1,Vbyn1,Vaxn,Vayn,Vbxn,Vbyn;



char szWinName[] = "Мое Окно";

char str[80];


HWND hwnd;
HDC memdc;
PAINTSTRUCT paintstruct;
HINSTANCE ThisInst;

int i;

HANDLE hSem; // Семафор






float Vm(float V1,float V2,float Ma,float Mb);
float Force(float Xa ,float Xb,float Ya, float Yb,float Qa, float Qb);
float sinus(float Xa ,float Xb,float Ya, float Yb);
float cosinus(float Xa ,float Xb,float Ya, float Yb);
void drawing(float Xan,float Yan,float Xbn,float Ybn,float Xan1,float Xbn1,float Yan1,float Ybn1) ;



void drawing(float Xan,float Yan,float Xbn,float Ybn,float Xan1,float Xbn1,float Yan1,float Ybn1)
{MoveToEx(memdc,(int)Xan,(int)Yan,0);
LineTo(memdc,(int)Xan1,(int)Yan1);


MoveToEx(memdc,(int)Xbn,(int)Ybn,0);
LineTo(memdc,(int)Xbn1,(int)Ybn1);return;
}


float Force(float Xa ,float Ya,float Xb, float Yb,float Qa, float Qb)//сила
{ F=100000*(Qa*Qb)/((Xa-Xb)*(Xa-Xb)+(Ya-Yb)*(Ya-Yb));
return F; }

float cosinus(float Xa ,float Ya,float Xb, float Yb) //косинус угла
{cosA=((Xa-Xb)/sqrt((Xa-Xb)*(Xa-Xb)+(Ya-Yb)*(Ya-Yb)));
return cosA;}

float sinus(float Xa ,float Ya,float Xb, float Yb) //синус угла
{sinA=((Ya-Yb)/sqrt((Xa-Xb)*(Xa-Xb)+(Ya-Yb)*(Ya-Yb)));
return sinA;}

float Vm(float V1,float V2,float Ma,float Mb)
{Vam=(Ma*V1+Mb*V2)/(Ma+Mb);
return Vam;}


int WINAPI WinMain (HINSTANCE hThisInst,
HINSTANCE hPrevInst,
LPSTR lpszArgs,
int nWinMode)
{

MSG msg;
WNDCLASS wcl;

ThisInst = hThisInst;
// Определить класс окна

wcl.hInstance=hThisInst;
wcl.lpszClassName=szWinName; //имя класса окна
wcl.lpfnWndProc=WindowFunc; //функция окна
wcl.style=0; // стиль по умолчанию
wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION); //стандартная иконка
wcl.hCursor=LoadCursor(NULL,IDC_ARROW);
wcl.lpszMenuName= (LPSTR)MYMENU; //NULL - без меню
wcl.cbClsExtra=0;
wcl.cbWndExtra=0;
// Заполнить окно цветом
wcl.hbrBackground=(HBRUSH) GetStockObject(LTGRAY_BRUSH);

if (!RegisterClass (&wcl)) return 0;

// Создать окно
hwnd = CreateWindow(szWinName,"Моделирование движения 2-х зарядов в поле друг друга",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, // горизонтальное положение окна
CW_USEDEFAULT, // вертикальное положение окна
CW_USEDEFAULT, // ширина окна
CW_USEDEFAULT, // высота окна
HWND_DESKTOP,
NULL,
hThisInst,
NULL);

// Показать окно и нарисовать содержимое
ShowWindow(hwnd,nWinMode);
UpdateWindow (hwnd);

// Цикл обработки сообщений
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}

DeleteDC (memdc);
return msg.wParam;
}







#define MAX_THREAD_NUM 20

LRESULT CALLBACK WindowFunc(HWND hwnd,UINT message, WPARAM wParam,LPARAM lParam)
{
HDC hdc;
HBITMAP hbit;
HBRUSH hbrush;
// Thread
DWORD Tid;
static HANDLE hct;
//
static int maxX, maxY;

int i,j,t,Xc,Yc;

RECT rect;

switch (message)
{

case WM_CREATE: // событие, возникающее при создании окна

Xao=200.;Yao=100.;Xbo=400.;Ybo=300.;
Vxao=3.;Vyao=3.;Vxbo=-3.;Vybo=-3.;
Qa=1.;Qb=1.;Ma=1.;Mb=1.;
dt=0.05;


hSem = CreateSemaphore(NULL,1,1,"mysem");// создать семафор

maxX = GetSystemMetrics (SM_CXSCREEN); //размер экрана
maxY = GetSystemMetrics (SM_CYSCREEN);
hdc = GetDC(hwnd); //получить контекст устройства
memdc = CreateCompatibleDC(hdc); //совместимый контекст в ОЗУ
hbit = CreateCompatibleBitmap (hdc,maxX,maxY); //место в памяти
// для содержимого окна
SelectObject (memdc, hbit);
hbrush = GetStockObject (WHITE_BRUSH);//LTGRAY_BRUSH); //получить кисть
SelectObject (memdc, hbrush); // выбрать кисть
// SetBkColor(memdc,);
PatBlt (memdc, 0,0, maxX,maxY,PATCOPY); //закрасить кистью копию окна в ОЗУ
ReleaseDC (hwnd, hdc); //освободить контекст

// TextOut(memdc,50,40,"Вывод текста",12);
hbrush = GetStockObject (WHITE_BRUSH);
SelectObject (memdc, CreatePen (PS_SOLID,1 /*ширина пера*/,RGB(55,130,220)));
SelectObject (memdc,hbrush);
// Ellipse(memdc,1,2,50,300); //координаты прямоугольника


//Xao=100;Yao=100;Xbo=500;Ybo=500;
//Vxao=3;Vyao=3;Vxbo=3;Vybo=3;

SelectObject (memdc, CreatePen (PS_SOLID,2,/*ширина пера,*/RGB(0,0,255))) ;

MoveToEx(memdc,2,2,0); //Координатные оси
LineTo(memdc,2,768);
MoveToEx(memdc,2,2,0);
LineTo(memdc,1024,2);

TextOut(memdc,10,10,"(0,0)",5); //Начало координат
TextOut(memdc,1000,10,"x",1); //х
TextOut(memdc,10,680,"y",1);//y

SelectObject (memdc, CreatePen (PS_SOLID,2,/*ширина пера,*/RGB(255,0,0))) ;
MoveToEx(memdc,900,680,0);
LineTo(memdc,950,680);
TextOut(memdc,950,670,"тело а",6);

SelectObject (memdc, CreatePen (PS_SOLID,2,/*ширина пера,*/RGB(55,30,0))) ;
MoveToEx(memdc,900,700,0);
LineTo(memdc,950,700);
TextOut(memdc,950,690,"тело b",6);

break;

case WM_PAINT: //отображение в окне на экране
hdc = BeginPaint(hwnd,&paintstruct);
BitBlt (hdc, 0, 0, maxX,maxY, memdc,0,0,SRCCOPY);
EndPaint(hwnd,&paintstruct);
break;

case WM_COMMAND: // обработка выбора опций меню
switch (LOWORD(wParam))
{

case ID_RUN:


// Ellipse(memdc,1,2,50,300);
// UpdateWindow (hwnd);


hct = CreateThread(NULL, 0, ThreadProc, NULL, 0, &Tid);

EnableMenuItem( GetMenu(hwnd), ID_STOP, MF_ENABLED);
EnableMenuItem( GetMenu(hwnd), ID_RUN, MF_GRAYED);





break;

case ID_STOP:
TerminateThread(hct, 0);


Xan=Xao;Yan=Yao;Xbn=Xbo;Ybn=Ybo;Vaxn=Vxao;Vayn=Vyao;Vbxn=Vxbo;Vbyn=Vybo;

i=0;


EnableMenuItem( GetMenu(hwnd), ID_RUN, MF_ENABLED);


EnableMenuItem( GetMenu(hwnd), ID_STOP, MF_GRAYED);



break;


case Parab:
Xao=100.;Yao=100.;Xbo=400.;Ybo=300.;
Vxao=9.;Vyao=9.;Vxbo=-3.;Vybo=-3.;
Qa=-1.;Qb=1.;Ma=2.835;Mb=6.;
dt=0.05;
break;



case ID_ellips:

Xao=150.;Yao=200.;Xbo=550.;Ybo=650.;
Vxao=6.;Vyao=0.;Vxbo=-6.;Vybo=-0.;
Qa=-1.;Qb=1.;Ma=1.;Mb=1.;

break;

case ID_giperb:
Xao=500.;Yao=300.;Xbo=500.;Ybo=450.;
Vxao=6.;Vyao=20.;Vxbo=-6.;Vybo=-30.;
Qa=1.;Qb=1.;Ma=1.;Mb=1.;
break;

case ID_circle:

Xao=400.;Yao=200.;Xbo=400.;Ybo=500.;
Vxao=11.;Vyao=0.;Vxbo=-11.;Vybo=-0.;
Qa=-1.;Qb=1.;Ma=1.;Mb=1.;
break;

case ID_ster:

hbrush = GetStockObject (WHITE_BRUSH);//LTGRAY_BRUSH); //получить кисть
SelectObject (memdc, hbrush);
Rectangle(memdc,0,0,1100,730);


SelectObject (memdc, CreatePen (PS_SOLID,2,/*ширина пера,*/RGB(0,0,255))) ;
MoveToEx(memdc,2,2,0);
LineTo(memdc,2,768);
MoveToEx(memdc,2,2,0);
LineTo(memdc,1024,2);

TextOut(memdc,10,10,"(0,0)",5);
TextOut(memdc,1000,10,"x",1);
TextOut(memdc,10,680,"y",1);

SelectObject (memdc, CreatePen (PS_SOLID,2,/*ширина пера,*/RGB(255,0,0))) ;
MoveToEx(memdc,900,680,0);
LineTo(memdc,950,680);
TextOut(memdc,950,670,"тело а",6);

SelectObject (memdc, CreatePen (PS_SOLID,2,/*ширина пера,*/RGB(55,30,0))) ;
MoveToEx(memdc,900,700,0);
LineTo(memdc,950,700);
TextOut(memdc,950,690,"тело b",6);

rect.top=0;
rect.bottom=maxY;
rect.left=0;
rect.right=maxX;
InvalidateRect(hwnd,&rect,FALSE);
UpdateWindow (hwnd);
break;


case ID_SEMAPHORE:

WaitForSingleObject(hSem, INFINITE); //ждем зеленый

MessageBox(hwnd, "Нажми OK для переключения светофора",
"Горит красный",MB_OK | MB_ICONINFORMATION);

ReleaseSemaphore(hSem,1,NULL); // устанавливаем зеленый

break;



case ID_EXIT:
SendMessage(hwnd,WM_CLOSE, wParam, lParam);
break;

case ID_DIALOG:

DialogBox(ThisInst, MAKEINTRESOURCE(MYDIALOG),hwnd, DialogProc);
break;

}
break;

case WM_HELP:
{WinHelp(hwnd,"help.hlp",HELP_FINDER,0);

break;}


case WM_CLOSE: //завершение программы
if (MessageBox(hwnd, "Вы уверены?",
"Выход",MB_YESNO | MB_ICONQUESTION) == IDYES) DestroyWindow(hwnd);
break;

case WM_DESTROY: //завершение программы
CloseHandle(hSem);
PostQuitMessage(0);
break;

default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}


float dedit = 0.;

BOOL CALLBACK DialogProc(HWND hDlg,UINT uMsg, WPARAM wParam,LPARAM lParam)// диалог
{


switch (uMsg)
{
case (WM_INITDIALOG):
sprintf(str,"%5.2f",dt);
SetDlgItemText(hDlg,Sdt,str);
sprintf(str,"%5.2f",Xao);
SetDlgItemText(hDlg,SXao,str);

sprintf(str,"%5.2f",Yao);
SetDlgItemText(hDlg,SYao,str);

sprintf(str,"%5.2f",Xbo);
SetDlgItemText(hDlg,SXbo,str);

sprintf(str,"%5.2f",Ybo);
SetDlgItemText(hDlg,SYbo,str);

sprintf(str,"%5.2f",Vxao);
SetDlgItemText(hDlg,SVxao,str);

sprintf(str,"%5.2f",Vyao);
SetDlgItemText(hDlg,SVyao,str);

sprintf(str,"%5.2f",Vxbo);
SetDlgItemText(hDlg,SVxbo,str);

sprintf(str,"%5.2f",Vybo);
SetDlgItemText(hDlg,SVybo,str);


sprintf(str,"%5.2f",Qa);
SetDlgItemText(hDlg,sQa,str);

sprintf(str,"%5.2f",Qb);
SetDlgItemText(hDlg,sQb,str);

sprintf(str,"%5.2f",Ma);
SetDlgItemText(hDlg,sMa,str);

sprintf(str,"%5.2f",Mb);
SetDlgItemText(hDlg,sMb,str);



return TRUE;



case WM_COMMAND:
switch (LOWORD (wParam))
{
case IDOK:
GetDlgItemText(hDlg,Sdt,str,80);
dt = (float)atof(str);
GetDlgItemText(hDlg,SXao,str,80);
Xao = (float)atof(str);
GetDlgItemText(hDlg,SYao,str,80);
Yao = (float)atof(str);

GetDlgItemText(hDlg,SXbo,str,80);
Xbo = (float)atof(str);

GetDlgItemText(hDlg,SYbo,str,80);
Ybo = (float)atof(str);

GetDlgItemText(hDlg,SVxao,str,80);
Vxao = (float)atof(str);

GetDlgItemText(hDlg,SVyao,str,80);
Vyao = (float)atof(str);

GetDlgItemText(hDlg,SVxbo,str,80);
Vxbo = (float)atof(str);

GetDlgItemText(hDlg,SVybo,str,80);
Vybo = (float)atof(str);

GetDlgItemText(hDlg,sQa,str,20);
Qa=(float)atof(str);

GetDlgItemText(hDlg,sQb,str,20);
Qb=(float)atof(str);

GetDlgItemText(hDlg,sMa,str,20);
Ma=(float)atof(str);

GetDlgItemText(hDlg,sMb,str,20);
Mb=(float)atof(str);




//Xan=Xao;Yan=Yao;Xbn=Xbo;Ybn=Ybo;






EndDialog(hDlg, TRUE);
return TRUE;


case IDCANCEL:

EndDialog(hDlg, TRUE);
return TRUE;
}

}

return FALSE;
}

DWORD WINAPI ThreadProc( LPVOID lpParameter)
{









static int start=0;
RECT rect;



Xan=Xao;Yan=Yao;Xbn=Xbo;Ybn=Ybo;Vaxn=Vxao;Vayn=Vyao;Vbxn=Vxbo;Vbyn=Vybo;

/*F=Force(Xao,Yao,Xbo,Ybo,1.,1.); //(Qa*Qb)/((Xao-Xbo)*(Xao-Xbo)+(Yao-Ybo)*(Yao-Ybo));
sprintf(str,"%5.5f",1000000.*F);
TextOut(memdc,50,50,str,10);

rect.top=0;
rect.bottom=766;
rect.left=0;
rect.right=1025;
InvalidateRect(hwnd,&rect,FALSE);
UpdateWindow (hwnd);*/
Eoo=Ma*(Vaxn*Vaxn+Vayn*Vayn)/2+Mb*(Vbxn*Vbxn+Vbyn*Vbyn)/2+Force(Xan,Yan,Xbn,Ybn,Qa,Qb)*sqrt((Xan-Xbn)*(Xan-Xbn)+(Yan-Ybn)*(Yan-Ybn));
TextOut(memdc,350,14,"Eo в неподвижной с.о. начальное",30);
sprintf(str,"%5.2f",Eoo);
TextOut(memdc,600,14,str,5);

Vmx=Vm(Vaxn,Vbxn,Ma,Mb);
Vmy=Vm(Vayn,Vbyn,Ma,Mb);

En=0.5*(Ma*((Vmx-Vaxn)*(Vmx-Vaxn)+(Vmy-Vayn)*(Vmy-Vayn))+Mb*((Vmx-Vbxn)*(Vmx-Vbxn)+(Vmy-Vbyn)*(Vmy-Vbyn)))+Force(Xan,Yan,Xbn,Ybn,Qa,Qb)*sqrt((Xan-Xbn)*(Xan-Xbn)+(Yan-Ybn)*(Yan-Ybn));// в системе центра масс Sm начальное
TextOut(memdc,350,80,"Eo в с.о. центра масс начальное",31);
sprintf(str,"%5.2f",En);
TextOut(memdc,600,80,str,5);



if (abs(En)<1.)
{
TextOut(memdc,400,120,"Движение м точки по ПАРАБОЛЕ",28);
}

if (En<-1.)
{ TextOut(memdc,400,120,"Движение м точки по ЭЛЛИПСУ",27);}

if (En>1.) {
TextOut(memdc,400,120,"Движение м точки по ГИПЕРБОЛЕ",29);
}


for (i=0;i<50000;i++)
{
Sleep(1.);




SelectObject (memdc, CreatePen (PS_SOLID,2,/*ширина пера,*/RGB(255,0,0))) ;

Xan1=Xan+Vaxn*dt+0.5*dt*dt*(Force(Xan,Yan,Xbn,Ybn,Qa,Qb)/Ma)*(cosinus(Xan,Yan,Xbn,Ybn));
Xbn1=Xbn+Vbxn*dt-0.5*dt*dt*Force(Xan,Yan,Xbn,Ybn,Qa,Qb)*cosinus(Xan,Yan,Xbn,Ybn)/Mb;
Yan1=Yan+Vayn*dt+0.5*dt*dt*(Force(Xan,Yan,Xbn,Ybn,Qa,Qb)*(sinus(Xan,Yan,Xbn,Ybn))/Ma);
Ybn1=Ybn+Vbyn*dt-0.5*dt*dt*Force(Xan,Yan,Xbn,Ybn,Qa,Qb)*sinus(Xan,Yan,Xbn,Ybn)/Mb;


Vayn1=Vayn+0.5*dt*((Force(Xan1,Yan1,Xbn1,Ybn1,Qa,Qb)*sinus(Xan1,Yan1,Xbn1,Ybn1)+sinus(Xan,Yan,Xbn,Ybn)*Force(Xan,Yan,Xbn,Ybn,Qa,Qb)))/Ma;
Vaxn1=Vaxn+0.5*dt*((Force(Xan1,Yan1,Xbn1,Ybn1,Qa,Qb)*cosinus(Xan1,Yan1,Xbn1,Ybn1)+cosinus(Xan,Yan,Xbn,Ybn)*Force(Xan,Yan,Xbn,Ybn,Qa,Qb)))/Ma;
Vbxn1=Vbxn-0.5*dt*((Force(Xan1,Yan1,Xbn1,Ybn1,Qa,Qb)*cosinus(Xan1,Yan1,Xbn1,Ybn1)+cosinus(Xan,Yan,Xbn,Ybn)*Force(Xan,Yan,Xbn,Ybn,Qa,Qb)))/Mb;
Vbyn1=Vbyn-0.5*dt*((Force(Xan1,Yan1,Xbn1,Ybn1,Qa,Qb)*sinus(Xan1,Yan1,Xbn1,Ybn1)+sinus(Xan,Yan,Xbn,Ybn)*Force(Xan,Yan,Xbn,Ybn,Qa,Qb)))/Mb;



// if(Vaxn>10) {dt=0.01;}

MoveToEx(memdc,(int)Xan,(int)Yan,0);
LineTo(memdc,(int)Xan1,(int)Yan1);

SelectObject (memdc, CreatePen (PS_SOLID,2,/*ширина пера,*/RGB(55,30,0))) ;


MoveToEx(memdc,(int)Xbn,(int)Ybn,0);
LineTo(memdc,(int)Xbn1,(int)Ybn1);


// sprintf(str,"%5.2f",Xan);
// TextOut(memdc,30,30,str,10);

//i=i+1;
/* sprintf(str,"%5i",i);
TextOut(memdc,100,30,str,10);*/


Xan=Xan1;
Yan=Yan1;
Xbn=Xbn1;
Ybn=Ybn1;
Vaxn=Vaxn1;
Vayn=Vayn1;
Vbxn=Vbxn1;
Vbyn=Vbyn1;




Vmx=Vm(Vaxn,Vbxn,Ma,Mb);
Vmy=Vm(Vayn,Vbyn,Ma,Mb);
E=0.5*(Ma*((Vmx-Vaxn)*(Vmx-Vaxn)+(Vmy-Vayn)*(Vmy-Vayn))+Mb*((Vmx-Vbxn)*(Vmx-Vbxn)+(Vmy-Vbyn)*(Vmy-Vbyn)))+Force(Xan,Yan,Xbn,Ybn,Qa,Qb)*sqrt((Xan-Xbn)*(Xan-Xbn)+(Yan-Ybn)*(Yan-Ybn));// в системе центра масс Sm
TextOut(memdc,350,60,"Eo в с.о. центра масс",21);
sprintf(str,"%5.2f",E);
TextOut(memdc,600,60,str,5);



Eo=Ma*(Vaxn*Vaxn+Vayn*Vayn)/2+Mb*(Vbxn*Vbxn+Vbyn*Vbyn)/2+Force(Xan,Yan,Xbn,Ybn,Qa,Qb)*sqrt((Xan-Xbn)*(Xan-Xbn)+(Yan-Ybn)*(Yan-Ybn));//полная энергия в S
TextOut(memdc,350,30,"Eo в неподвижной с.о.",20);
sprintf(str,"%5.2f",Eo);
TextOut(memdc,600,30,str,5);


/*R21=sqrt((Xan-Xbn)*(Xan-Xbn)+(Yan-Ybn)*(Yan-Ybn));//sqrt((Xan*Xan+Yan*Yan)+(Xbn*Xbn+Ybn*Ybn)-2*sqrt((Xan*Xan+Yan*Yan)*(Xbn*Xbn+Ybn*Ybn)));
V21=sqrt((Vaxn-Vbxn)*(Vaxn-Vbxn)+(Vayn-Vbyn)*(Vayn-Vbyn));//sqrt((Vaxn*Vaxn+Vayn*Vayn)+(Vbxn*Vbxn+Vbyn*Vbyn)-2*sqrt((Vaxn*Vaxn+Vayn*Vayn)*(Vbxn*Vbxn+Vbyn*Vbyn)));
gr=abs(atan(((Ybn-Yan)/(Xbn-Xan)))-atan(((Vbyn-Vayn)/(Vbxn-Vaxn))));
M=abs(Ma*Mb/(Ma+Mb)*R21*V21*sin(gr));*/



/*//TextOut(memdc,350,30,"Eo в неподвижной с.о.",20);
sprintf(str,"%5.2f",M);
TextOut(memdc,600,100,str,5);*/



/* rect.top=Yan+2;
rect.bottom=Yan1-2;
rect.left=Xan+2;
rect.right=Xan1-2;
InvalidateRect(hwnd,&rect,FALSE);
UpdateWindow (hwnd);

rect.top=Ybn+2;
rect.bottom=Ybn1-2;
rect.left=Xbn+2;
rect.right=Xbn1-2;
InvalidateRect(hwnd,&rect,FALSE);
UpdateWindow (hwnd);*/

rect.top=0;
rect.bottom=768;
rect.left=0;
rect.right=1024;
InvalidateRect(hwnd,&rect,FALSE);
UpdateWindow (hwnd);




if ((sqrt((Xan-Xbn)*(Xan-Xbn)+(Yan-Ybn)*(Yan-Ybn)))>1600) { TextOut(memdc,20,600,"Частицы удалились слишком далеко друг от друга",45)

;rect.top=0;
rect.bottom=1024;
rect.left=0;
rect.right=768;
InvalidateRect(hwnd,&rect,FALSE);
UpdateWindow (hwnd);
break;
}

if ((sqrt((Xan-Xbn)*(Xan-Xbn)+(Yan-Ybn)*(Yan-Ybn)))<8) {TextOut(memdc,100,10,"Частицы столкнулись",19);





Ellipse(memdc,(int)Xan-8,(int)Yan-8,(int)Xan+8,(int)Yan+8);
rect.top=0;
rect.bottom=768;
rect.left=0;
rect.right=1024;
InvalidateRect(hwnd,&rect,FALSE);
UpdateWindow (hwnd);
break;}
if (abs(Eoo-Eo)>100) { TextOut(memdc,80,30,"ВНИМАНИЕ! БОЛЬШАЯ ПОГРЕШНОСТЬ",29);
rect.top=0;
rect.bottom=768;
rect.left=0;
rect.right=1024;
InvalidateRect(hwnd,&rect,FALSE);
UpdateWindow (hwnd);}




}
//while ((sqrt((Xan-Xbn)*(Xan-Xbn)+(Yan-Ybn)*(Yan-Ybn)))>3);// or (Xan>1200);

}
Соседние файлы в папке Прога