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

📄 singleview.c

📁 Intro/: Directory containing introductory examples. HelloWorld.c A simple program that draws a bo
💻 C
字号:
#include <phigs.h>			/* get HP-PHIGS definitions for C */#include <stdio.h>			/* get standard I/O definitions */#include <math.h>			/* compile with library "-lm" */#define	 deg		*3.1415926535897/180.	/* convert deg to rad */main()					/* file "SingleView.c" */{    Pint	WorkstnID = 1;		/* workstation identifier */    Pint	ConnID;			/* connection identifier */    Pint	WorkstnType = POIDDX;	/* out/in, direct, dbl bfr, Xwindow */    Pint	Scene = 1, Cube = 2;	/* structure IDs */    float	Angle;			/* rotation angle */    Pint	Error;			/* error indicator */    int		I, J;			/* loop control variables */    /*--- viewing parameters -----------------------------------------------*/    static Pview_map3	ViewMapping = {	/* sent to "peval_view_map_matrix3" */      {-1.75, 1.75, -1.75, 1.75},	/* window limits */      {0.0, 1.0, 0.0, 1.0, 0.0, 1.0},	/* projection viewport limits */      PTYPE_PERSPECT,			/* perspective projection */      {0.0, 0.0, 10.0},			/* projection reference point */      0.0, -5.0, 5.0};			/* view/back/front plane distances */    static Ppoint3	ViewRefPt = {0.0, 0.0, 0.0};    static Pvec3	ViewNormVec = {0.4, 0.3, 1.0};    static Pvec3	ViewUpVec = {0.0, 1.0, 0.0};    Pmatrix3		ViewMapMatrix;	/* from "peval_view_map_matrix3" */    Pmatrix3		ViewOriMatrix;	/* from "peval_view_ori_matrix3" */    static Plimit3	ClipLimits = {0.0, 1.0, 0.0, 1.0, 0.0, 1.0};    Pview_rep3		ViewRep;    /*--- define other sundries --------------------------------------------*/    static Prgb		Black = {0.0, 0.0, 0.0};    static Prgb		White = {1.0, 1.0, 1.0};    Pmatrix3		Xmatrix, Ymatrix, Transform;			    popen_phigs((char *) stderr, 0);	/* errors go to "stderr" */    pescape_u4("/dev/screen/phigs_window", &ConnID);    popen_ws(WorkstnID, (void *) ConnID, WorkstnType);    peval_view_map_matrix3(&ViewMapping, &Error, ViewMapMatrix);    if (Error) {	fprintf(stderr, "Error %d in peval_view_map_matrix3; terminating.\n",	  Error);	exit(1);    }    peval_view_ori_matrix3(&ViewRefPt, &ViewNormVec, &ViewUpVec, &Error,      ViewOriMatrix);    if (Error) {	fprintf(stderr, "Error %d in peval_view_ori_matrix3; terminating.\n",	  Error);	exit(1);    }    for (I = 0; I < 4; I++)	for (J = 0; J < 4; J++)	    ViewRep.ori_matrix[I][J] = ViewOriMatrix[I][J],	    ViewRep.map_matrix[I][J] = ViewMapMatrix[I][J];    ViewRep.clip_limit = ClipLimits;    ViewRep.xy_clip = ViewRep.back_clip = ViewRep.front_clip = PIND_CLIP;    pset_view_rep3(WorkstnID, 1, &ViewRep);    pset_colr_rep(WorkstnID, 0, (void *) &Black);    pset_colr_rep(WorkstnID, 1, (void *) &White);    BuildCube(Cube);    protate_x(0.0, &Error, Transform);	/* create an identity matrix */    popen_struct(Scene);    pset_view_ind(1);    pset_local_tran3(Transform, PTYPE_REPLACE);    pexec_struct(Cube);    pclose_struct();    ppost_struct(WorkstnID, Scene, 1.0);    pupd_ws(WorkstnID, PFLAG_PERFORM);    protate_x(0.0, &Error, Xmatrix);	/* create identity matrices */    protate_x(0.0, &Error, Ymatrix);    protate_x(0.0, &Error, Transform);    pset_edit_mode(PEDIT_REPLACE);    popen_struct(Scene);    for (I = 0; I <= 1440; I++) {	Angle = (I * 0.25) deg;        protate_y(Angle, &Error, Ymatrix);        protate_x(Angle, &Error, Xmatrix);        pcompose_matrix3(Xmatrix, Ymatrix, &Error, Transform);        pset_elem_ptr(2);        pset_local_tran3(Transform, PTYPE_REPLACE);        predraw_all_structs(WorkstnID, PFLAG_ALWAYS);    }    pclose_struct();    pclose_ws(WorkstnID);    pclose_phigs();}/****************************************************************************/BuildCube(StructID)int	StructID;			/* structure ID for cube structure */{    static Ppoint3 TopPoints[5]    = {-1,1,-1, -1,1,1, 0,1,1, 1,1,0, 1,1,-1};    static Ppoint_list3	Top        = {5, TopPoints};    static Ppoint3 BottomPoints[4] = {-1,-1,1, -1,-1,-1, 1,-1,-1, 1,-1,1};    static Ppoint_list3	Bottom     = {4, BottomPoints};    static Ppoint3 RightPoints[5]  = {1,-1,-1, 1,1,-1, 1,1,0, 1,0,1, 1,-1,1};    static Ppoint_list3	Right      = {5, RightPoints};    static Ppoint3 LeftPoints[4]   = {-1,-1,1, -1,1,1, -1,1,-1, -1,-1,-1};    static Ppoint_list3	Left       = {4, LeftPoints};    static Ppoint3 FrontPoints[5]  = {1,-1,1, 1,0,1, 0,1,1, -1,1,1, -1,-1,1};    static Ppoint_list3	Front      = {5, FrontPoints};    static Ppoint3 BackPoints[4]   = {-1,-1,-1, -1,1,-1, 1,1,-1, 1,-1,-1};    static Ppoint_list3	Back       = {4, BackPoints};    static Ppoint3 CornerPoints[3] = {1,0,1, 1,1,0, 0,1,1};    static Ppoint_list3	Corner     = {3, CornerPoints};    static Ppoint_list3 CubePoints[7];    Ppoint_list_list3	Cube;    /*--- text locations and orientations ----------------------------------*/    static Ppoint3	TopTextPos = {-0.75, 1.0, 0.0};    static Pvec3	TopTextOri[2] = {1,0,0,  0,0,-1};    static Ppoint3	RightTextPos = {1.0, -0.75, 0.75};    static Pvec3	RightTextOri[2] = {0,0,-1,  0,1,0};    static Ppoint3	FrontTextPos = {-0.75, -0.75, 1.0};    static Pvec3	FrontTextOri[2] = {1,0,0,  0,1,0};    int			I;		/* loop control variable */    CubePoints[0] = Top;	CubePoints[1] = Bottom;    CubePoints[2] = Right;	CubePoints[3] = Left;    CubePoints[4] = Front;	CubePoints[5] = Back;    CubePoints[6] = Corner;    popen_struct(StructID);    pset_facet_cull_mode(PFACET_CULL_BACKFACING);    Cube.num_point_lists = 1;    for (I = 0; I < 7; I++) {	Cube.point_lists = &(CubePoints[I]);	pfill_area_set3(&Cube);    }    pset_char_ht(0.4);    pset_char_expan(0.7);    ptext3(&TopTextPos, TopTextOri, "Top");    ptext3(&RightTextPos, RightTextOri, "Right");    ptext3(&FrontTextPos, FrontTextOri, "Front");    pclose_struct();}

⌨️ 快捷键说明

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