阿尔法粒子散射的模拟实验c语言程序

阿尔法粒子散射的模拟实验c语言程序,第1张

#include<graphics.h>

#include<stdlib.h>

#include<stdio.h>

#include<math.h>

main()

{

int graphdrv=VGA

int graphmode=VGAHI

int i

float k=0.75,dt=0.05,x0,y0,x,y,vx,vy,ax,ay,r1,r2

initgraph(&graphdrv,&graphmode,"\\tc\\bgi")

line(400,0,400,480)line(0,240,640,240)

fillellipse(400,160,20,20)settextstyle(1,0,0)

fillellipse(400,320,20,20)settextstyle(1,0,0)

outtextxy(180,0,"SCATTERED")

outtextxy(180,25,"ALPHA RAY")

settextstyle(3,0,0)

for(i=0i<11i++)

{

y0=80+20*i

y=y0

x=x0=2

vx=1.5

vy=0

r1=sqrt(pow(x/10-40,2)+pow(y/10-16,2))

r2=sqrt(pow(x/10-40,2)+pow(y/10-32,2))

ax=k*((x/10-40)/pow(r1,3)+(x/10-40)/pow(r2,3))

ay=k*((x/10-16)/pow(r1,3)+(y/10-32)/pow(r2,3))

vx=vx+0.5*ax*dt

vy=vy+0.5*ay*dt

loop:x=x+vx*dt

y=y+vy*dt

r1=sqrt(pow(x/10-40,2)+pow(y/10-16,2))

r2=sqrt(pow(x/10-40,2)+pow(y/10-32,2))

ax=k*((x/10-40)/pow(r1,3)+(x/10-40)/pow(r2,3))

ay=k*((y/10-16)/pow(r1,3)+(y/10-32)/pow(r2,3))

vx=vx+0.5*ax*dt

vy=vy+0.5*ay*dt

if(x>639){goto end}

if(x<2){goto end}

if(y<2){goto end}

line(x0,y0,x,y)

line(x0,480-y0,x,480-y)

x0=x

y0=y

goto loop

end:continue

}

while(!kbhit())

closegraph()

}

找一个绘图api,每帧遍历所有种子对象按位置进行绘制即可

考虑到涉及大量粒子,可以采用支持硬件加速的库,并且通过批处理进行优化

不嫌烦可以直接从opengl底层写起,否则诸如allegro,csfml等都是可以考虑的选项


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12191939.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存