- // 直線靜電場.cpp : 定義控制臺應用程序的入口點。
- //
- #include "stdafx.h"
- #include <graphics.h>
- #include <math.h>
- #define PI 3.1415926535
- #define L 200
- #define R 100
- #define N 1000
- #define M 50000
- #define LINE 12
- double Bx(double O,double x,double y)
- {
- double r1,r2;
- r1=sqrt(pow(x,2)+pow(y,2)+R*R-2*y*R*cos(O));
- r2=sqrt(pow(L-x,2)+y*y+R*R-2*y*R*cos(O));
- return((R*R-y*R*cos(O))/pow(r1,3)+(R*R-y*R*cos(O))/pow(r2,3));
- }
- double By(double O,double x,double y)
- {
- double r1,r2;
- r1=sqrt(pow(x,2)+pow(y,2)+R*R-2*y*R*cos(O));
- r2=sqrt(pow(L-x,2)+y*y+R*R-2*y*R*cos(O));
- return(x*R*cos(O)/pow(r1,3)+(x-L)*R*cos(O)/pow(r2,3));
- }
- int main()
- {
- initgraph(800,800,SHOWCONSOLE);
- setbkcolor(WHITE);
- cleardevice();
- setorigin(400,400);
- setlinestyle(PS_DASH|PS_ENDCAP_SQUARE,2);
- setlinecolor(RED);
- line(0,-400,0,400);
- ellipse(-30,R,30,-R);
- ellipse(170,R,230,-R);
- setlinestyle(PS_SOLID|PS_ENDCAP_SQUARE,2);
- setlinecolor(BLACK);
- line(-400,0,400,0);
- double r,x,y,O,dO,bx,by,BBx,BBy,B,x0,y0,a[LINE-1];
- dO=2*PI/N;
- for(int i=1;i<LINE;i++)
- {
- a[i-1]=R-i*2*R/LINE;
- }
- for(int i=0;i<LINE;i++)
- {
- x=0;
- y=a[i];
- if(y==0)
- {
- continue;
- }
- for(int j=0;j<M;j++)
- {
- bx=(Bx(0,x,y)+Bx(2*PI,x,y))/2;
- by=(By(0,x,y)+By(2*PI,x,y))/2;
- for(int k=1;k<=N-1;k++)
- {
- O=k*dO;
- bx=bx+Bx(O,x,y);
- by=by+By(O,x,y);
- }
- BBx=bx*dO;
- BBy=by*dO;
- B=sqrt(pow(BBx,2)+pow(BBy,2));
- x0=x+BBx/B;
- y0=y+BBy/B;
- line(x,y,x0,y0);
- if(pow(x0+1,2)<=1&&pow(y0-a[i],2)<=4)
- {
- break;
- }
- x=x0;
- y=y0;
- }
- }
- system("pause");
- }
復制代碼
全部資料51hei下載地址:
line.rar
(4.2 KB, 下載次數: 14)
2020-3-3 19:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|