📄 profpat.c
字号:
/* program profpat.c - calculates coordinates for profile at chosen azimuth around the antenna */
/* 9/29/93 */
#include <stdio.h>
#include <math.h>
#include <string.h>
#include "findif.h"
FILE *fppar,*fpat;
/*main() */
short int xcoord[180],ycoord[180],zcoord[180];
void profpat()
{
short int i,j,k,radint,antx,anty,intz;
float y,x,a1,a2,alpha,delx,flarang,angrad;
float dist,radflt,pi,phi,theta;
pi=3.1415927;
if ((fppar=fopen("fdmenu.par","rb")) == NULL) {
printf("CAN'T OPEN fdmenu.PAR FILE\n");
}
else {
fread(&fd1,sizeof(struct fddat),1,fppar);
}
fclose(fppar);
if ((fpat=fopen("profpat.par","wb")) == NULL) {
printf("CAN'T OPEN profpat.par OUTPUT FILE: \n");
}
printf("field pattern profile parameters below: \n");
printf("dx = %f\n",fd1.dx);
antx=fd1.xcen/fd1.dx;
anty=fd1.ycen/fd1.dy;
intz=fd1.zinter/fd1.dz;
printf("TRANSMIT ANTENNA XCOORD = %d\n",antx);
printf("TRANSMIT ANTENNA YCOORD = %d\n",anty);
printf("INTERFACE ZCOORD = %d\n",intz);
printf("radius= %f\n",fd1.patrad);
printf("phi = %f\n",fd1.patphi);
radflt=fd1.patrad/fd1.dx;
printf("radius in pts= %f\n",radflt);
for(i=0;i<=90;i++) {
theta=(i+90.)*pi/180.;
phi=fd1.patphi*pi/180.;
xcoord[i]=antx+radflt*sin(theta)*cos(phi)+0.5;
ycoord[i]=anty+radflt*sin(theta)*sin(phi)+0.5;
zcoord[i]=intz+(-1.)*radflt*cos(theta)+0.5;
}
for(i=1;i<90;i++) {
theta=(180.-i)*pi/180.;
phi=(fd1.patphi-180.)*pi/180.;
xcoord[i+90]=antx+radflt*sin(theta)*cos(phi)+0.5;
ycoord[i+90]=anty+radflt*sin(theta)*sin(phi)+0.5;
zcoord[i+90]=intz+(-1.)*radflt*cos(theta)+0.5;
}
fwrite(xcoord,sizeof(short int),180,fpat);
fwrite(ycoord,sizeof(short int),180,fpat);
fwrite(zcoord,sizeof(short int),180,fpat);
fclose(fpat);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -