⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "astro.h"char*	solstr[] ={	"Fall equinox",	"Winter solstice",	"Spring equinox",	"Summer solstice",};struct{	double	beta;	int	rta;	int	dec;	char	*betstr;} bettab[] ={	-1.3572, 231,	50,	"Quadrantid",	 0.7620, 336,	0,	"Eta aquarid",	 1.5497, 260,	-20,	"Ophiuchid",	 2.1324, 315,	-15,	"Capricornid",	 2.1991, 339,	-17,	"Delta aquarid",	 2.2158, 340,	-30,	"Pisces australid",	 2.4331, 46,	58,	"Perseid",	-2.6578, 95,	15,	"Orionid",	-1.8678, 15,	-55,	"Phoenicid",	-1.7260, 113,	32,	"Geminid",	0};voidsearch(void){	Obj2 *p, *q;	int i, j;	double t;	for(i=0; objlst[i]; i++) {		p = objlst[i];		if(p == &oshad)			continue;		t = rise(p, -.833);		if(t >= 0.)			event("%s rises at ", p->name, "", t,				i==0? PTIME: PTIME|DARK);		t = set(p, -.833);		if(t >= 0.)			event("%s sets at ", p->name, "", t,				i==0? PTIME: PTIME|DARK);		if(p == &osun) {			for(j=0; j<4; j++) {				t = solstice(j);				if(t >= 0)					event("%s at ", solstr[j], "", t,						SIGNIF|PTIME);			}			for(j=0; bettab[j].beta!=0; j++) {				t = betcross(bettab[j].beta);				if(t >= 0)					event("%s  meeteeor shouwer",					bettab[j].betstr, "", t, SIGNIF);			}			t = rise(p, -18);			if(t >= 0)				event("Twilight starts at ", "", "", t, PTIME);			t = set(p, -18);			if(t >= 0)				event("Twilight ends at ", "", "", t, PTIME);		}		if(p == &omoon)		for(j=0; j<NPTS; j++) {			if(p->point[j].mag > .75 && p->point[j+1].mag < .25)				event("New moon", "", "", 0, 0);			if(p->point[j].mag <= .25 && p->point[j+1].mag > .25)				event("First quarter moon", "", "", 0, 0);			if(p->point[j].mag <= .50 && p->point[j+1].mag > .50)				event("Full moon", "", "", 0, 0);			if(p->point[j].mag <= .75 && p->point[j+1].mag > .75)				event("Last quarter moon", "", "", 0, 0);		}		if(p == &omerc || p == &ovenus) {			t = melong(p);			if(t >= 0) {				t = rise(p, 0) - rise(&osun, 0);				if(t < 0)					t += NPTS;				if(t > NPTS)					t -= NPTS;				if(t > NPTS/2)				event("Morning elongation of %s", p->name,					"", 0, SIGNIF);				else				event("Evening elongation of %s", p->name,					"", 0, SIGNIF);			}		}		for(j=i; objlst[j]; j++) {			if(i == j)				continue;			q = objlst[j];			if(p == &omoon || q == &omoon) {				occult(p, q, 0);				if(occ.t3 < 0)					continue;				if(p == &osun || q == &oshad) {					if(occ.t1 >= 0)					event("Partial eclipse of %s begins at ", p->name, "",						occ.t1, SIGNIF|PTIME);					if(occ.t2 >= 0)					event("Total eclipse of %s begins at ", p->name, "",						occ.t2, SIGNIF|PTIME);					if(occ.t4 >= 0)					event("Total eclipse of %s ends at ", p->name, "",						occ.t4, SIGNIF|PTIME);					if(occ.t5 >= 0)					event("Partial eclipse of %s ends at ", p->name, "",						occ.t5, SIGNIF|PTIME);				} else {					if(occ.t1 >= 0)					event("Occultation of %s begins at ", q->name, "",						occ.t1, SIGNIF|PTIME);					if(occ.t5 >= 0)					event("Occultation of %s ends at ", q->name, "",						occ.t5, SIGNIF|PTIME);				}				continue;			}			if(p == &osun) {				if(q != &omerc && q != &ovenus)					continue;				occult(p, q, -1);				if(occ.t3 >= 0.) {					if(occ.t1 >= 0)					event("Transit of %s begins at ", q->name, "",						occ.t1, SIGNIF|LIGHT|PTIME);					if(occ.t5 >= 0)					event("Transit of %s ends at ", q->name, "",						occ.t5, SIGNIF|LIGHT|PTIME);				}				continue;			}			t = dist(&p->point[0], &q->point[0]);			if(t > 5000)				continue;			event("%s is in the house of %s",				p->name, q->name, 0, 0);		}	}	if(flags['o'])		stars();	if(flags['a'])		satels();	evflush();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -