c语言循环输入坐标然后画点输出在同一个界面上
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <string.h>
#include <conio.h>
#include <graphics.h>
struct star
{
int num;//星号
float xd;//星等
float ra;//赤经
float de;//赤纬
}l,list[200];
int k;
void zzz(float j,float w)//先做坐标转化
{
float v;float z;int y;float n=-0.1;
v=3.1415926/180;
z=n*(((sin(j*v)*sin(j*v)*sin(j*v)*cos(w*v)*cos(w*v)*cos(w*v)*cos(j*v)+cos(j*v)*cos(j*v)*cos(j*v)*cos(w*v)*sin(j*v)*sin(j*v)*sin(w*v)*sin(w*v)+cos(j*v)*cos(j*v)*cos(j*v)*cos(w*v)*cos(w*v)*cos(w*v)*sin(w*v)*sin(w*v)-sin(j*v)*sin(j*v)*sin(j*v)*cos(j*v)*cos(w*v)*sin(w*v)-sin(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*cos(w*v)*cos(w*v)*sin(w*v)-cos(j*v)*cos(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*sin(w*v)*sin(w*v)*sin(w*v)-2*cos(j*v)*cos(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*cos(w*v)*cos(w*v)*sin(w*v)-sin(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*sin(w*v)*sin(w*v)-cos(j*v)+cos(j*v)*cos(j*v)*cos(j*v)*sin(j*v)*sin(j*v)*sin(w*v)*sin(w*v)*sin(w*v)-cos(j*v)*cos(j*v)*cos(j*v)*cos(j*v)*sin(j*v)*sin(j*v)*cos(w*v)*cos(w*v)*sin(w*v)-cos(j*v)*cos(j*v)*sin(j*v)*sin(j*v)*sin(j*v)*sin(w*v)*sin(w*v))/(cos(j*v)*cos(j*v)*cos(j*v)*sin(w*v)*sin(w*v)*cos(w*v)-cos(j*v)*cos(j*v)*sin(j*v)*sin(j*v)*sin(w*v)*sin(w*v))+sin(w*v)));
y=n*((cos(j*v)*cos(j*v)*sin(w*v)*sin(w*v)+cos(j*v)*cos(j*v)*cos(w*v)*cos(w*v))/(cos(j*v)*cos(w*v)-sin(j*v)*sin(j*v)*sin(w*v))+sin(j*v));
printf("%f\n%f\n\n",z,y);
int gd=DETECT,gm=0; /* 在VGA以上的显卡中和gd=VGA,gm=VGAHI是同样效果 */
initgraph(&gd,&gm,""); /* BGI初始化 */
putpixel(z, y, WHITE); /* 在屏幕的(320,200)的坐标位置用白色(WHITE)画一个点 */
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegraph(); /* 恢复TEXT屏幕模式 */
// return 0;
}
int main(void)
{
float hour;float min;float sec;char a[197];char fh;char b[197];char d[197];char e[197];char f[197];
float deg;float arcmin;float arcsec;float xd;
int sum=0;int i;char c[197];float ra;float de;
FILE*fp=fopen("F:\\STAR1.DAT","rt");//打开星表
if (fp==NULL)//若打开文件失败则退出
{
puts("不能打开文件!");
return 0;
}
for(k=0;k<9110;k++)
{
fread(a,sizeof(char),197,fp);
c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];
l.num=atoi(c);//星号
b[0]=a[76];b[1]=a[77];
hour=atoi(b);//时
b[0]=a[78];b[1]=a[79];
min=atoi(b);//分
d[0]=a[80];d[1]=a[81];d[2]=a[82];d[3]=a[83];
sec=atof(d);//秒
ra=(hour+min/60+sec/3600);
l.ra=ra;//赤经
fh=a[84];
e[0]=a[85];e[1]=a[86];
deg=atoi(e);//时
e[0]=a[87];e[1]=a[88];
arcmin=atoi(e);//分
e[0]=a[89];e[1]=a[90];
arcsec=atoi(e);//秒
de=(deg+arcmin/60+arcsec/3600);
if(fh==45)
de=-de;
l.de=de;
f[0]=a[103];f[1]=a[104];f[2]=a[105];f[3]=a[106];f[4]=a[107];
l.xd=atoi(f);
if(l.xd<5&&l.xd>=0)//星等范围
{
if(l.de>=-6&&l.de<=6)//视场范围大小为12度*12度
{
printf("%f\n%f\n%f\n\n",l.ra,l.de,l.xd);
zzz(l.ra,l.de);
}
}
}
}