📄 showme.c
字号:
);
printf(
" switch), partitioned meshes will always be drawn exploded. The output\n"
);
printf(
" file name depends on the image being viewed. If you want several\n");
printf(
" different snapshots (zooming in on different parts) of the same object,\n"
);
printf(
" you'll have to rename each file after Show Me creates it so that it\n");
printf(" isn't overwritten by the next snapshot.\n");
printf(
" EPS: Creates an encapsulated PostScript file, suitable for inclusion in\n"
);
printf(
" documents. Otherwise, this button is just like the PS button. (The\n");
printf(
" main difference is that .eps files lack a `showpage' command at the\n");
printf(" end.)\n\n");
printf(
" There are two nearly-identical rows of buttons that load different images\n"
);
printf(" from disk. Each row contains the following buttons:\n\n");
printf(" node: Loads a .node file.\n");
printf(
" poly: Loads a .poly file (and possibly an associated .node file).\n");
printf(" ele: Loads an .ele file (and associated .node file).\n");
printf(" edge: Loads an .edge file (and associated .node file).\n");
printf(
" part: Loads a .part file (and associated .node and .ele files).\n");
printf(
" adj: Loads an .adj file (and associated .node, .ele, and .part files).\n");
printf(" voro: Loads a .v.node and .v.edge file for a Voronoi diagram.\n");
printf("\n");
printf(
" Each row represents a different iteration number of the geometry files.\n");
printf(
" For a full explanation of iteration numbers, read the instructions for\n");
printf(
" Triangle. Briefly, iteration numbers are used to allow a user to easily\n"
);
printf(
" represent a sequence of related triangulations. Iteration numbers are\n");
printf(
" used in the names of geometry files; for instance, mymesh.3.ele is a\n");
printf(
" triangle file with iteration number three, and mymesh.ele has an implicit\n"
);
printf(" iteration number of zero.\n\n");
printf(
" The control buttons at the right end of each row display the two\n");
printf(
" iterations currently under view. These buttons can be clicked to\n");
printf(
" increase or decrease the iteration numbers, and thus conveniently view\n");
printf(" a sequence of meshes.\n\n");
printf(
" Show Me keeps each file in memory after loading it, but you can force\n");
printf(
" Show Me to reread a set of files (for one iteration number) by reclicking\n"
);
printf(
" the button that corresponds to the current image. This is convenient if\n"
);
printf(" you have changed a geometry file.\n\n");
printf("File Formats:\n\n");
printf(
" All files may contain comments prefixed by the character '#'. Points,\n");
printf(
" segments, holes, triangles, edges, and subdomains must be numbered\n");
printf(
" consecutively, starting from either 1 or 0. Whichever you choose, all\n");
printf(
" input files must be consistent (for any single iteration number); if the\n"
);
printf(
" nodes are numbered from 1, so must be all other objects. Show Me\n");
printf(
" automatically detects your choice while reading a .node (or .poly) file.\n"
);
printf(" Examples of these file formats are given below.\n\n");
printf(" .node files:\n");
printf(
" First line: <# of points> <dimension (must be 2)> <# of attributes>\n");
printf(
" <# of boundary markers (0 or 1)>\n"
);
printf(
" Remaining lines: <point #> <x> <y> [attributes] [boundary marker]\n");
printf("\n");
printf(
" The attributes, which are typically floating-point values of physical\n");
printf(
" quantities (such as mass or conductivity) associated with the nodes of\n"
);
printf(
" a finite element mesh, are ignored by Show Me. Show Me also ignores\n");
printf(
" boundary markers. See the instructions for Triangle to find out what\n");
printf(" attributes and boundary markers are.\n\n");
printf(" .poly files:\n");
printf(
" First line: <# of points> <dimension (must be 2)> <# of attributes>\n");
printf(
" <# of boundary markers (0 or 1)>\n"
);
printf(
" Following lines: <point #> <x> <y> [attributes] [boundary marker]\n");
printf(" One line: <# of segments> <# of boundary markers (0 or 1)>\n");
printf(
" Following lines: <segment #> <endpoint> <endpoint> [boundary marker]\n");
printf(" One line: <# of holes>\n");
printf(" Following lines: <hole #> <x> <y>\n");
printf(" [Optional additional lines that are ignored]\n\n");
printf(
" A .poly file represents a Planar Straight Line Graph (PSLG), an idea\n");
printf(
" familiar to computational geometers. By definition, a PSLG is just a\n");
printf(
" list of points and edges. A .poly file also contains some additional\n");
printf(" information.\n\n");
printf(
" The first section lists all the points, and is identical to the format\n"
);
printf(
" of .node files. <# of points> may be set to zero to indicate that the\n"
);
printf(
" points are listed in a separate .node file; .poly files produced by\n");
printf(
" Triangle always have this format. When Show Me reads such a file, it\n");
printf(" also reads the corresponding .node file.\n\n");
printf(
" The second section lists the segments. Segments are edges whose\n");
printf(
" presence in a triangulation produced from the PSLG is enforced. Each\n");
printf(
" segment is specified by listing the indices of its two endpoints. This\n"
);
printf(
" means that its endpoints must be included in the point list. Each\n");
printf(
" segment, like each point, may have a boundary marker, which is ignored\n"
);
printf(" by Show Me.\n\n");
printf(
" The third section lists holes and concavities that are desired in any\n");
printf(
" triangulation generated from the PSLG. Holes are specified by\n");
printf(" identifying a point inside each hole.\n\n");
printf(" .ele files:\n");
printf(
" First line: <# of triangles> <points per triangle> <# of attributes>\n");
printf(
" Remaining lines: <triangle #> <point> <point> <point> ... [attributes]\n"
);
printf("\n");
printf(
" Points are indices into the corresponding .node file. Show Me ignores\n"
);
printf(
" all but the first three points of each triangle; these should be the\n");
printf(
" corners listed in counterclockwise order around the triangle. The\n");
printf(" attributes are ignored by Show Me.\n\n");
printf(" .edge files:\n");
printf(" First line: <# of edges> <# of boundary markers (0 or 1)>\n");
printf(
" Following lines: <edge #> <endpoint> <endpoint> [boundary marker]\n");
printf("\n");
printf(
" Endpoints are indices into the corresponding .node file. The boundary\n"
);
printf(" markers are ignored by Show Me.\n\n");
printf(
" In Voronoi diagrams, one also finds a special kind of edge that is an\n");
printf(
" infinite ray with only one endpoint. For these edges, a different\n");
printf(" format is used:\n\n");
printf(" <edge #> <endpoint> -1 <direction x> <direction y>\n\n");
printf(
" The `direction' is a floating-point vector that indicates the direction\n"
);
printf(" of the infinite ray.\n\n");
printf(" .part files:\n");
printf(" First line: <# of triangles> <# of subdomains>\n");
printf(" Remaining lines: <triangle #> <subdomain #>\n\n");
printf(
" The set of triangles is partitioned by a .part file; each triangle is\n");
printf(" mapped to a subdomain.\n\n");
printf(" .adj files:\n");
printf(" First line: <# of subdomains>\n");
printf(" Remaining lines: <adjacency matrix entry>\n\n");
printf(
" An .adj file represents adjacencies between subdomains (presumably\n");
printf(" computed by a partitioner). The first line is followed by\n");
printf(
" (subdomains X subdomains) lines, each containing one entry of the\n");
printf(
" adjacency matrix. A nonzero entry indicates that two subdomains are\n");
printf(" adjacent (share a point).\n\n");
printf("Example:\n\n");
printf(
" Here is a sample file `box.poly' describing a square with a square hole:\n"
);
printf("\n");
printf(
" # A box with eight points in 2D, no attributes, no boundary marker.\n");
printf(" 8 2 0 0\n");
printf(" # Outer box has these vertices:\n");
printf(" 1 0 0\n");
printf(" 2 0 3\n");
printf(" 3 3 0\n");
printf(" 4 3 3\n");
printf(" # Inner square has these vertices:\n");
printf(" 5 1 1\n");
printf(" 6 1 2\n");
printf(" 7 2 1\n");
printf(" 8 2 2\n");
printf(" # Five segments without boundary markers.\n");
printf(" 5 0\n");
printf(" 1 1 2 # Left side of outer box.\n");
printf(" 2 5 7 # Segments 2 through 5 enclose the hole.\n");
printf(" 3 7 8\n");
printf(" 4 8 6\n");
printf(" 5 6 5\n");
printf(" # One hole in the middle of the inner square.\n");
printf(" 1\n");
printf(" 1 1.5 1.5\n\n");
printf(
" After this PSLG is triangulated by Triangle, the resulting triangulation\n"
);
printf(
" consists of a .node and .ele file. Here is the former, `box.1.node',\n");
printf(" which duplicates the points of the PSLG:\n\n");
printf(" 8 2 0 0\n");
printf(" 1 0 0\n");
printf(" 2 0 3\n");
printf(" 3 3 0\n");
printf(" 4 3 3\n");
printf(" 5 1 1\n");
printf(" 6 1 2\n");
printf(" 7 2 1\n");
printf(" 8 2 2\n");
printf(" # Generated by triangle -pcBev box\n");
printf("\n");
printf(" Here is the triangulation file, `box.1.ele'.\n");
printf("\n");
printf(" 8 3 0\n");
printf(" 1 1 5 6\n");
printf(" 2 5 1 3\n");
printf(" 3 2 6 8\n");
printf(" 4 6 2 1\n");
printf(" 5 7 3 4\n");
printf(" 6 3 7 5\n");
printf(" 7 8 4 2\n");
printf(" 8 4 8 7\n");
printf(" # Generated by triangle -pcBev box\n\n");
printf(" Here is the edge file for the triangulation, `box.1.edge'.\n\n");
printf(" 16 0\n");
printf(" 1 1 5\n");
printf(" 2 5 6\n");
printf(" 3 6 1\n");
printf(" 4 1 3\n");
printf(" 5 3 5\n");
printf(" 6 2 6\n");
printf(" 7 6 8\n");
printf(" 8 8 2\n");
printf(" 9 2 1\n");
printf(" 10 7 3\n");
printf(" 11 3 4\n");
printf(" 12 4 7\n");
printf(" 13 7 5\n");
printf(" 14 8 4\n");
printf(" 15 4 2\n");
printf(" 16 8 7\n");
printf(" # Generated by triangle -pcBev box\n");
printf("\n");
printf(
" Here's a file `box.1.part' that partitions the mesh into four subdomains.\n"
);
printf("\n");
printf(" 8 4\n");
printf(" 1 3\n");
printf(" 2 3\n");
printf(" 3 4\n");
printf(" 4 4\n");
printf(" 5 1\n");
printf(" 6 1\n");
printf(" 7 2\n");
printf(" 8 2\n");
printf(" # Generated by slice -s4 box.1\n\n");
printf(
" Here's a file `box.1.adj' that represents the resulting adjacencies.\n");
printf("\n");
printf(" 4\n");
printf(" 9\n");
printf(" 2\n");
printf(" 2\n");
printf(" 0\n");
printf(" 2\n");
printf(" 9\n");
printf(" 0\n");
printf(" 2\n");
printf(" 2\n");
printf(" 0\n");
printf(" 9\n");
printf(" 2\n");
printf(" 0\n");
printf(" 2\n");
printf(" 2\n");
printf(" 9\n");
printf("\n");
printf("Display Speed:\n");
printf("\n");
printf(
" It is worthwhile to note that .edge files typically plot and print twice\n"
);
printf(
" as quickly as .ele files, because .ele files cause each internal edge to\n"
);
printf(
" be drawn twice. For the same reason, PostScript files created from edge\n"
);
printf(" sets are smaller than those created from triangulations.\n\n");
printf("Show Me on the Web:\n\n");
printf(
" To see an illustrated, updated version of these instructions, check out\n");
printf("\n");
printf(" http://www.cs.cmu.edu/~quake/showme.html\n");
printf("\n");
printf("A Brief Plea:\n");
printf("\n");
printf(
" If you use Show Me (or Triangle), and especially if you use it to\n");
printf(
" accomplish real work, I would like very much to hear from you. A short\n");
printf(
" letter or email (to jrs@cs.cmu.edu) describing how you use Show Me (and\n");
printf(
" its sister programs) will mean a lot to me. The more people I know\n");
printf(
" are using my programs, the more easily I can justify spending time on\n");
printf(
" improvements, which in turn will benefit you. Also, I can put you\n");
printf(
" on a list to receive email whenever new versions are available.\n");
printf("\n");
printf(
" If you use a PostScript file generated by Show Me in a publication,\n");
printf(" please include an acknowledgment as well.\n\n");
exit(0);
}
void set_filenames(filename, lowermeshnumber)
char *filename;
int lowermeshnumber;
{
char numberstring[100];
int i;
for (i = 0; i < 2; i++) {
strcpy(nodefilename[i], filename);
strcpy(polyfilename[i], filename);
strcpy(elefilename[i], filename);
strcpy(edgefilename[i], filename);
strcpy(partfilename[i], filename);
strcpy(adjfilename[i], filename);
strcpy(vnodefilename[i], filename);
strcpy(vedgefilename[i], filename);
if (lowermeshnumber + i > 0) {
sprintf(numberstring, ".%d", lowermeshnumber + i);
strcat(nodefilename[i], numberstring);
strcat(polyfilename[i], numberstring);
strcat(elefilename[i], numberstring);
strcat(edgefilename[i], numberstring);
strcat(partfilename[i], numberstring);
strcat(adjfilename[i], numberstring);
strcat(vnodefilename[i], numberstring);
strcat(vedgefilename[i], numberstring);
}
strcat(nodefilename[i], ".node");
strcat(polyfilename[i], ".poly");
strcat(elefilename[i], ".ele");
strcat(edgefilename[i], ".edge");
strcat(partfilename[i], ".part");
strcat(adjfilename[i], ".adj");
strcat(vnodefilename[i], ".v.node");
strcat(vedgefilename[i], ".v.edge");
}
}
void parsecommandline(argc, argv)
int argc;
char **argv;
{
int increment;
int meshnumber;
int i, j;
quiet = 0;
fillelem = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -