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

📄 input.c

📁 source code to compute the visibility polygon of a point in a polygon.
💻 C
字号:
/* Brian O'Connor *  * input.c: file to encapsulate file input routines. */#include <stdio.h>#include <assert.h>#include "input.h"#include "pursuer.h"#include "cell.h"static FILE *OpenInputFile(char *filename);static Obstacle *ReadOneObstacle(FILE *file);static void ReadObstacles(FILE *file, WorldInfo *wInfo);void ReadInputFile( char *filename, WorldInfo *wInfo ){	int ch, i;	FILE *file;	if( (file = OpenInputFile(filename)) == NULL) return;	wInfo->obs = new (Obstacle *)[MAX_OBS]; 	assert(wInfo->obs != NULL);		wInfo->border = NULL;	wInfo->robot = NULL;	wInfo->nObs = 0;	ch ='0';	while( ch != EOF ) {	   if( (ch = getc(file)) == 'O' ) {                while( (ch = getc(file)) != '\n');				ReadObstacles(file, wInfo);           } else if( ch == 'B' ) {                while( (ch = getc(file)) != '\n');			        wInfo->border = ReadOneObstacle(file);	   } else if( ch == 'R' ) {	     /* read in a robot as if it was an obstacle */	        while( (ch = getc(file)) != '\n');		wInfo->robot = ReadOneObstacle(file);	   }        }}/* for now, this function is making the simplifying assumption that  * all obstacles occur sequentially and at the start of the file. *//* assumed format: #vertexes *	           x1 y1 * 		   x2 y2     etc.... */static Obstacle *ReadOneObstacle(FILE *file){	int i;	char buffer[160];	float x, y;	Obstacle *ob;	ob = new Obstacle;	/* how many points do we have?*/	fgets(buffer, 80, file);	sscanf(buffer, "%d", &(ob->nPts));	ob->pts = new Point[ob->nPts]; 	assert(ob->pts != NULL);		for( i = 0; i < ob->nPts; i++ ) {		fgets(buffer, 80, file);		sscanf(buffer, "%f %f", &x, &y);		ob->pts[i].x = x; 		ob->pts[i].y = y;		ob->pts[i].w = 1;	/*	printf("point: %f, %f\n", ob->pts[i].x, ob->pts[i].y); */	}	return(ob);}static FILE *OpenInputFile(char *filename){	FILE *newfile;	newfile = fopen(filename, "r");	if( newfile == NULL ) {		printf("Input file %s does not exist\n", filename);		exit(0);	}	return( newfile );}static void ReadObstacles(FILE *file, WorldInfo *wInfo){  int i = 0;  char ch;  while( (ch = getc(file)) != EOF && ch != '\n') {    ungetc(ch, file);    wInfo->obs[i++] = ReadOneObstacle(file);    assert( i < MAX_OBS);  }  wInfo->nObs = i;}

⌨️ 快捷键说明

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