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

📄 pov.y

📁 [Game.Programming].Academic - Graphics Gems (6 books source code)
💻 Y
📖 第 1 页 / 共 2 页
字号:
        |       expr '+' expr                        {$$=new vector; *$$=*$1+*$3; delete $1; delete $3;}        |       expr '-' expr                        {$$=new vector; *$$=*$1-*$3; delete $1; delete $3;}        |       expr '*' expr                        {$$=new vector; *$$=*$1*(*$3); delete $1; delete $3;}        |       expr '/' expr                        {$$=new vector; *$$=*$1/(*$3); delete $1; delete $3;}        |       '-' expr %prec UMINUS                        {$$=new vector; *$$=-*$2; delete $2;}        |       '(' expr ')'                        {$$=$2;}        ;/**               CAMERA DEFINITION*/camera          :       CAMERA '{' cameraitems '}'                                {$$=$3;}                ;cameraitems     :       /* empty */                                {$$=new camera;}                |       cameraitems identifier                                {$$=$1; *$$=actcamera /* *camdecls[$2] */ ; delete $2;}                |       cameraitems LOCATION expr                                {$$=$1; $$->setl(*$3); delete $3;}                |       cameraitems SKY expr                                {$$=$1; $$->sets(*$3); delete $3;}                |       cameraitems DIRECTION expr                                {$$=$1; $$->setd(*$3); delete $3;}                |       cameraitems UP expr                                {$$=$1; $$->setu(*$3); delete $3;}                |       cameraitems RIGHT expr                                {$$=$1; $$->setr(*$3); delete $3;}                |       cameraitems LOOK_AT expr                                {$$=$1; $$->seta(*$3); delete $3;}                |       cameraitems TRANSLATE expr                                {$$=$1; $$->traT(*$3); delete $3;}                |       cameraitems ROTATE expr                                {$$=$1; $$->rotT(*$3); delete $3;}                |       cameraitems SCALE expr                                {$$=$1; $$->scaT(*$3); delete $3;}                ;/**               LIGHTSOURCE*/lightsource     :       LIGHT_SOURCE '{' expr color lightsrcitems '}'                                {$$=$5; $$->setp(*$3); $$->setc(*$4);                                 delete $3; delete $4;}                ;lightsrcitems   :       /* empty */                                {$$=new lightsource;}                |       lightsrcitems lightsrctype                                {$$=$2; *$$=*$1; delete $1;}                |       lightsrcitems TRANSLATE expr                                {$$=$1; $$->traT(*$3); delete $3;}                |       lightsrcitems ROTATE expr                                {$$=$1; $$->rotT(*$3); delete $3;}                |       lightsrcitems SCALE expr                                {$$=$1; $$->scaT(*$3); delete $3;}                ;lightsrctype    :       spotlight                                {$$=$1;}                ;spotlight       :       SPOTLIGHT                        POINT_AT expr RADIUS expr FALLOFF expr tightness                                {$$=new spotlight(*$3,(double)*$5,(double)*$7,                                                  (double)*$8);                                 delete $3; delete $5; delete $7; delete $8;}                ;tightness       :       /* empty */                                {$$=new vector(10.,10.,10.);}                |       TIGHTNESS expr                                {$$=$2;}                ;/**               OBJECT GEOMETRY*/object          :       OBJECT '{' identifier objopts '}'                                {$$=odecls[$3]->copy(); *$$=*$4;                                 delete $3; delete $4;}                |       SPHERE '{' expr ',' expr objopts '}'                                {$$=new sphere(*$3,(double)*$5); *$$=*$6;                                 delete $3; delete $5; delete $6;}                |       UNION '{' objects objopts '}'                                {$$=new csguni($3); *$$=*$4; delete $4;}                |       MERGE '{' objects objopts '}'                                {$$=new csgmer($3); *$$=*$4; delete $4;}                |       INTERSECTION '{' objects objopts '}'                                {$$=new csgint($3); *$$=*$4; delete $4;}                |       DIFFERENCE '{' objects objopts '}'                                {$$=new csgdif($3); *$$=*$4; delete $4;}                ;objects         :       object object moreobjects                                {$$=$3; *$$+=$2; *$$+=$1;}                ;                moreobjects     :       /* empty */                                {$$=new list<object*>;}                |       moreobjects object                                {$$=$1; *$$+=$2;}                ;/**               OBJECT OPTIONS*/objopts         :       /* empty */                                {$$=new object; $$->sett(*deftexture);}                |       objopts texture                                {$$=$1; $$->sett(*$2); delete $2;}                |       objopts pigment                                {$$=$1; $$->setp(*$2); delete $2;}                |       objopts normal                                {$$=$1; $$->setn(*$2); delete $2;}                |       objopts finish                                {$$=$1; $$->setf(*$2); delete $2;}                |       objopts TRANSLATE expr                                {$$=$1; $$->traT(*$3); delete $3;}                |       objopts ROTATE expr                                {$$=$1; $$->rotT(*$3); delete $3;}                |       objopts SCALE expr                                {$$=$1; $$->scaT(*$3); delete $3;}                ;/**               TEXTURES*/texture         :       TEXTURE '{' textureitems '}'                                {$$=$3;}                |       texture TEXTURE '{' textureitems '}'                                {$$=$1; *$$+=$4;}                ;textureitems    :       /* empty */                                {$$=new texture; *$$=*deftexture;}                |       textureitems identifier                                {delete $1; $$=tdecls[$2]->copy(); delete $2;}                |       textureitems PIGMENT '{' pigmentitems '}'                                {$$=$1; $$->setp(*$4); delete $4;}                |       textureitems NORMAL '{' normalitems '}'                                {$$=$1; $$->setn(*$4); delete $4;}                |       textureitems FINISH '{' finishitems '}'                                {$$=$1; $$->setf(*$4); delete $4;}                |       textureitems TRANSLATE expr                                {$$=$1; $$->traT(*$3); delete $3;}                |       textureitems ROTATE expr                                {$$=$1; $$->rotT(*$3); delete $3;}                |       textureitems SCALE expr                                {$$=$1; $$->scaT(*$3); delete $3;}                ;/**               PIGMENT*/pigment         :       PIGMENT '{' pigmentitems '}'                                {$$=$3;}                ;pigmentitems    :       /* empty */                                {$$=deftexture->copyp();}                |       pigmentitems identifier                                {delete $1; $$=pdecls[$2]->copy(); delete $2;}                |       pigmentitems pigmentpatt                                {$$=$2; *$$|=*$1; delete $1;}                |       pigmentitems TURBULENCE expr                                {$$=$1; $$->sett(*$3); delete $3;}                |       pigmentitems OCTAVES expr                                {$$=$1;$$->seto((int)((double)*$3));delete $3;}                |       pigmentitems OMEGA expr                                {$$=$1; $$->setm((double)*$3); delete $3;}                |       pigmentitems LAMBDA expr                                {$$=$1; $$->setl((double)*$3); delete $3;}                |       pigmentitems FREQUENCY expr                                {$$=$1; $$->setf((double)*$3); delete $3;}                |       pigmentitems PHASE expr                                {$$=$1; $$->setp((double)*$3); delete $3;}                |       pigmentitems TRANSLATE expr                                {$$=$1; $$->traT(*$3); delete $3;}                |       pigmentitems ROTATE expr                                {$$=$1; $$->rotT(*$3); delete $3;}                |       pigmentitems SCALE expr                                {$$=$1; $$->scaT(*$3); delete $3;}                ;pigmentpatt     :       color                                {$$=new solid(*$1); delete $1;}                |       CHECKER                                {$$=new checker;}                |       CHECKER color                                {$$=new checker(*$2); delete $2;}                |       CHECKER color color                                {$$=new checker(*$2,*$3);delete $2;delete $3;}                ;color           :       COLOR identifier                                {$$=new color; *$$=*cdecls[$2]; delete $2;}                |       COLOR RGB '<' expr ',' expr ',' expr '>'                                {$$=new color((double)*$4,(double)*$6,                                              (double)*$8);                                  delete $4; delete $6; delete $8;}                |       COLOR RGBF '<' expr ',' expr ',' expr ',' expr '>'                                {$$=new color((double)*$4,(double)*$6,                                              (double)*$8,(double)*$10);                                  delete $4; delete $6; delete $8; delete $10;}                |       COLOR colorvalues                                {$$=$2;}                ;colorvalues     :       RED expr                                {$$=new color;$$->setr((double)*$2);delete $2;}                |       GREEN expr                                {$$=new color;$$->setg((double)*$2);delete $2;}                |       BLUE expr                                {$$=new color;$$->setb((double)*$2);delete $2;}                |       FILTER expr                                {$$=new color;$$->setf((double)*$2);delete $2;}                |       colorvalues RED expr                                {$$=$1; $$->setr((double)*$3); delete $3;}                |       colorvalues GREEN expr                                {$$=$1; $$->setg((double)*$3); delete $3;}                |       colorvalues BLUE expr                                {$$=$1; $$->setb((double)*$3); delete $3;}                |       colorvalues FILTER expr                                {$$=$1; $$->setf((double)*$3); delete $3;}                ;colormap        :       COLOR_MAP '{' identifier colormapitems '}'                                {$$=cmdecls[$3]->copy(); delete $3; delete $4;}                |       COLOR_MAP '{' colormapitems '}'                                {$$=$3;}                ;colormapitems   :       /* empty */                                {$$=new colormap;}                ;/**               NORMAL*/normal          :       NORMAL '{' normalitems '}'                                {$$=$3;}                ;normalitems     :       /* empty */                                {$$=deftexture->copyn();}                |       normalitems identifier                                {delete $1; $$=ndecls[$2]->copy(); delete $2;}                |       normalitems normalpatt                                {$$=$2; *$$|=*$1; delete $1;}                |       normalitems TURBULENCE expr                                {$$=$1; $$->sett(*$3); delete $3;}                |       normalitems FREQUENCY expr                                {$$=$1; $$->setf((double)*$3); delete $3;}                |       normalitems PHASE expr                                {$$=$1; $$->setp((double)*$3); delete $3;}                |       normalitems TRANSLATE expr                                {$$=$1; $$->traT(*$3); delete $3;}                |       normalitems ROTATE expr                                {$$=$1; $$->rotT(*$3); delete $3;}                |       normalitems SCALE expr                                {$$=$1; $$->scaT(*$3); delete $3;}                ;normalpatt      :       BUMPS expr                                {$$=new bumps((double)*$2); delete $2;}                |       DENTS expr                                {$$=new dents((double)*$2); delete $2;}                ;/**               FINISH*/finish          :       FINISH '{' finishitems '}'                                {$$=$3;}                ;finishitems     :       /* empty */                                {$$=deftexture->copyf();}                |       finishitems identifier                                {delete $1; $$=fdecls[$2]->copy(); delete $2;}                |       finishitems DIFFUSE expr                                {$$=$1; $$->setkd((double)*$3); delete $3;}                |       finishitems BRILLIANCE expr                                {$$=$1; $$->setkb((double)*$3); delete $3;}                |       finishitems CRAND expr                                {$$=$1; $$->setkc((double)*$3); delete $3;}                |       finishitems AMBIENT expr                                {$$=$1; $$->setka((double)*$3); delete $3;}                |       finishitems REFLECTION expr                                {$$=$1; $$->setkr((double)*$3); delete $3;}                |       finishitems PHONG expr                                {$$=$1; $$->setks((double)*$3); delete $3;}                |       finishitems PHONG_SIZE expr                                {$$=$1; $$->setkp((double)*$3); delete $3;}                |       finishitems SPECULAR expr                                {$$=$1; $$->setkh((double)*$3); delete $3;}                |       finishitems ROUGHNESS expr                                {$$=$1; $$->setkg((double)*$3); delete $3;}                |       finishitems METALLIC                                {$$=$1; $$->setkm(1);}                |       finishitems REFRACTION expr                                {$$=$1; $$->setkt((double)*$3); delete $3;}                |       finishitems IOR expr                                {$$=$1; $$->setki((double)*$3); delete $3;}                ;%%void yyerror(char* s) {cout<<s<<"\n";}

⌨️ 快捷键说明

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