两正点电荷产生电场线

原创 2007年09月27日 21:45:00
我的网站http://www.tigerion.cn
 /* 两异号电荷产生电场线 */
#include "stdio.h"
#include "graphics.h"
#include "math.h"

#define K 300.0
#define PI 3.141592653
typedef struct  /*点元素*/
   {
         double x;
         double y;
   }dotxy;    
void main()
  {
     dotxy p1,p2;
     int gd=DETECT,gm;
     char c=0;
     void drel(dotxy p1,dotxy p2);
     void dreball(dotxy p1,dotxy p2);
     void message();
       registerbgidriver(EGAVGA_driver);
        initgraph(&gd,&gm,"");
        p1.x=170;p2.x=470;
        p1.y=p2.y=240;
        do
           {  
                 cleardevice();
                 message();
                 switch (c)
                    {
                       case 'u':
                         case 'U': p2.y-=2;break;
                       case 'd':
                       case 'D': p2.y+=2;break;
                       case 'l':
                       case 'L': p2.x-=2;break;
                       case 'r':
                       case 'R': p2.x+=2;break;
                    }
                 dreball(p1,p2);
              drel(p1,p2);
              drel(p2,p1);
           }
        while((c=getch())!='e'&&c!='E');
        getch();
        closegraph();
     
  }
void dreball(dotxy p1,dotxy p2)   /*画‘p2’一侧的电场线 */
  {
          setcolor(15);
          circle(p1.x,p1.y,10);
        circle(p2.x,p2.y,10);
        line(p1.x-5,p1.y,p1.x+5,p1.y);
        line(p2.x-5,p2.y,p2.x+5,p2.y);
       /* line(p1.x,p1.y-5,p1.x,p1.y+5);*/
       line(p2.x,p2.y-5,p2.x,p2.y+5);
  }
void drel(dotxy p1,dotxy p2)
  {
       int i;
       dotxy p3;
       double b,r1,r2,fx,fy,dx,dy;/*r1,r2为平面内一点到两电荷距离的立方*/
                                  /*fx,fy分别是X方向和Y方向受力*/
        setcolor(4);
          for(b=0.1;b<=2*PI;b+=PI/6)
             {
                   p3.x=p2.x+12*cos(b);
                   p3.y=p2.y+12*sin(b);
                   for(i=0;i<500;i++)
                      {
                          putpixel(p3.x,p3.y,1+i/20%15);
                          r1=pow((p3.x-p1.x)*(p3.x-p1.x)+(p3.y-p1.y)*(p3.y-p1.y),1.5);
                          r2=pow((p3.x-p2.x)*(p3.x-p2.x)+(p3.y-p2.y)*(p3.y-p2.y),1.5);
                          fx=-K/r1*(p3.x-p1.x)+K/r2*(p3.x-p2.x);
                          fy=-K/r1*(p3.y-p1.y)+K/r2*(p3.y-p2.y);
                          dx=fx/sqrt(fx*fx+fy*fy);/*由fx,fy算出切线方向的单位向量*/
                          dy=fy/sqrt(fx*fx+fy*fy);
                          p3.x+=dx;
                          p3.y+=dy;
                      }
             }
  }  
void message()
  {  
       setcolor(15);
       outtextxy(40,40,"U->up");
       outtextxy(240,40,"D->down");
       outtextxy(40,100,"L->left");
       outtextxy(240,100,"R->right");
       outtextxy(140,70,"E->exit");
  }



我的网站http://www.tigerion.cn


相关文章推荐

MATLAB中使用streamline函数绘制正负点电荷及它们构成的电偶极子的电场线分布图

电场强度等于电势梯度乘以-1,而这些代码在调用gradient函数求偏导后并没有乘以-1。     先把上一篇博客中不严谨的代码拿出来: % 在二维平面上绘制一个正点电荷的电场线图。 k = 8...

使用PHP绘制电场线

使用PHP语言绘制电场线

3维空间电场线绘制演示

  • 2011年12月31日 12:03
  • 3.45MB
  • 下载

有限元方法编程计算电场中各个区域分布的电势

用有限元方法解二维的拉普拉斯方程,求出有边缘二维面上的电势分布

使用大数据技术处理风电场机组采集数据

测试背景本次测试背景为对某大型风电厂的机组采集数据进行处理,业务需求如下: 将采集到的设备的实时数据存入持久化存储 对数值超出上下限的测点进行实时告警 计算采集数据不同时间段内的均值,一并存入持久化存...
  • ZHBR_F1
  • ZHBR_F1
  • 2017年05月18日 10:43
  • 597

电场与磁场

电场是电荷及变化磁场周围空间里存在的一种特殊物质。电场这种物质与通常的实物不同,它不是由分子原子所组成,但它是客观存在的。电场具有通常物质所具有的力和能量等客观属性。电场的力的性质表现为:电场对放入其...

用几何画板演示涡旋电场的方法

人教版高二物理第十九章第三节介绍了麦克斯韦的电磁场理论:变化的电场产生磁场,变化的磁场产生电场。并且在书的右侧附了一幅关于“变化的磁场产生电场(磁场增强时)”的情形图,学生学到这里时往往会产生疑问:电...

我的第五个C++上机报告(求两个数的正差值)

/* * 程序的版权和版本声明部分: * Copyright (c) 2011, 烟台大学计算机学院 * All rights reserved. * 文件名称:最大数...
  • sdzbwxt
  • sdzbwxt
  • 2012年10月11日 09:37
  • 997
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:两正点电荷产生电场线
举报原因:
原因补充:

(最多只允许输入30个字)