亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? algebra3.h

?? This contains Graphic gems code
?? H
字號:
/*****************************************************************								** C++ Vector and Matrix Algebra routines			** Author: Jean-Francois DOUE					** Version 3.1 --- October 1993					**								*****************************************************************/#include <stream.h>#include <stdlib.h>// this line defines a new type: pointer to a function which returns a// double and takes as argument a doubletypedef double (*V_FCT_PTR)(double);// min-max macros#define MIN(A,B) ((A) < (B) ? (A) : (B))#define MAX(A,B) ((A) > (B) ? (A) : (B))// error handling macro#define V_ERROR(E) { cerr << E; exit(1); }class vec2;class vec3;class vec4;class mat3;class mat4;enum {VX, VY, VZ, VW};		    // axesenum {PA, PB, PC, PD};		    // planesenum {RED, GREEN, BLUE};	    // colorsenum {KA, KD, KS, ES};		    // phong coefficients/*****************************************************************								**			    2D Vector				**								*****************************************************************/class vec2{protected: double n[2];public:// Constructorsvec2();vec2(const double x, const double y);vec2(const double d);vec2(const vec2& v);			// copy constructorvec2(const vec3& v);			// cast v3 to v2vec2(const vec3& v, int dropAxis);	// cast v3 to v2// Assignment operatorsvec2& operator	= ( const vec2& v );	// assignment of a vec2vec2& operator += ( const vec2& v );	// incrementation by a vec2vec2& operator -= ( const vec2& v );	// decrementation by a vec2vec2& operator *= ( const double d );	// multiplication by a constantvec2& operator /= ( const double d );	// division by a constantdouble& operator [] ( int i);		// indexing// special functionsdouble length();			// length of a vec2double length2();			// squared length of a vec2vec2& normalize();			// normalize a vec2vec2& apply(V_FCT_PTR fct);		// apply a func. to each component// friendsfriend vec2 operator - (const vec2& v);			    // -v1friend vec2 operator + (const vec2& a, const vec2& b);	    // v1 + v2friend vec2 operator - (const vec2& a, const vec2& b);	    // v1 - v2friend vec2 operator * (const vec2& a, const double d);	    // v1 * 3.0friend vec2 operator * (const double d, const vec2& a);	    // 3.0 * v1friend vec2 operator * (const mat3& a, const vec2& v);	    // M . vfriend vec2 operator * (const vec2& v, mat3& a);	    // v . Mfriend double operator * (const vec2& a, const vec2& b);    // dot productfriend vec2 operator / (const vec2& a, const double d);	    // v1 / 3.0friend vec3 operator ^ (const vec2& a, const vec2& b);	    // cross productfriend int operator == (const vec2& a, const vec2& b);	    // v1 == v2 ?friend int operator != (const vec2& a, const vec2& b);	    // v1 != v2 ?friend ostream& operator << (ostream& s, vec2& v);	    // output to streamfriend istream& operator >> (istream& s, vec2& v);	    // input from strm.friend void swap(vec2& a, vec2& b);			    // swap v1 & v2friend vec2 min(const vec2& a, const vec2& b);		    // min(v1, v2)friend vec2 max(const vec2& a, const vec2& b);		    // max(v1, v2)friend vec2 prod(const vec2& a, const vec2& b);		    // term by term *// necessary friend declarationsfriend class vec3;};/*****************************************************************								**			    3D Vector				**								*****************************************************************/class vec3{protected: double n[3];public:// Constructorsvec3();vec3(const double x, const double y, const double z);vec3(const double d);vec3(const vec3& v);			    // copy constructorvec3(const vec2& v);			    // cast v2 to v3vec3(const vec2& v, double d);		    // cast v2 to v3vec3(const vec4& v);			    // cast v4 to v3vec3(const vec4& v, int dropAxis);	    // cast v4 to v3// Assignment operatorsvec3& operator	= ( const vec3& v );	    // assignment of a vec3vec3& operator += ( const vec3& v );	    // incrementation by a vec3vec3& operator -= ( const vec3& v );	    // decrementation by a vec3vec3& operator *= ( const double d );	    // multiplication by a constantvec3& operator /= ( const double d );	    // division by a constantdouble& operator [] ( int i);		    // indexing// special functionsdouble length();			    // length of a vec3double length2();			    // squared length of a vec3vec3& normalize();			    // normalize a vec3vec3& apply(V_FCT_PTR fct);		    // apply a func. to each component// friendsfriend vec3 operator - (const vec3& v);			    // -v1friend vec3 operator + (const vec3& a, const vec3& b);	    // v1 + v2friend vec3 operator - (const vec3& a, const vec3& b);	    // v1 - v2friend vec3 operator * (const vec3& a, const double d);	    // v1 * 3.0friend vec3 operator * (const double d, const vec3& a);	    // 3.0 * v1friend vec3 operator * (const mat4& a, const vec3& v);	    // M . vfriend vec3 operator * (const vec3& v, mat4& a);	    // v . Mfriend double operator * (const vec3& a, const vec3& b);    // dot productfriend vec3 operator / (const vec3& a, const double d);	    // v1 / 3.0friend vec3 operator ^ (const vec3& a, const vec3& b);	    // cross productfriend int operator == (const vec3& a, const vec3& b);	    // v1 == v2 ?friend int operator != (const vec3& a, const vec3& b);	    // v1 != v2 ?friend ostream& operator << (ostream& s, vec3& v);	    // output to streamfriend istream& operator >> (istream& s, vec3& v);	    // input from strm.friend void swap(vec3& a, vec3& b);			    // swap v1 & v2friend vec3 min(const vec3& a, const vec3& b);		    // min(v1, v2)friend vec3 max(const vec3& a, const vec3& b);		    // max(v1, v2)friend vec3 prod(const vec3& a, const vec3& b);		    // term by term *// necessary friend declarationsfriend class vec2;friend class vec4;friend class mat3;friend vec2 operator * (const mat3& a, const vec2& v);	    // linear transformfriend mat3 operator * (mat3& a, mat3& b);		    // matrix 3 product};/*****************************************************************								**			    4D Vector				**								*****************************************************************/class vec4{protected: double n[4];public:// Constructorsvec4();vec4(const double x, const double y, const double z, const double w);vec4(const double d);vec4(const vec4& v);			    // copy constructorvec4(const vec3& v);			    // cast vec3 to vec4vec4(const vec3& v, const double d);	    // cast vec3 to vec4// Assignment operatorsvec4& operator	= ( const vec4& v );	    // assignment of a vec4vec4& operator += ( const vec4& v );	    // incrementation by a vec4vec4& operator -= ( const vec4& v );	    // decrementation by a vec4vec4& operator *= ( const double d );	    // multiplication by a constantvec4& operator /= ( const double d );	    // division by a constantdouble& operator [] ( int i);		    // indexing// special functionsdouble length();			    // length of a vec4double length2();			    // squared length of a vec4vec4& normalize();			    // normalize a vec4vec4& apply(V_FCT_PTR fct);		    // apply a func. to each component// friendsfriend vec4 operator - (const vec4& v);			    // -v1friend vec4 operator + (const vec4& a, const vec4& b);	    // v1 + v2friend vec4 operator - (const vec4& a, const vec4& b);	    // v1 - v2friend vec4 operator * (const vec4& a, const double d);	    // v1 * 3.0friend vec4 operator * (const double d, const vec4& a);	    // 3.0 * v1friend vec4 operator * (const mat4& a, const vec4& v);	    // M . vfriend vec4 operator * (const vec4& v, mat4& a);	    // v . Mfriend double operator * (const vec4& a, const vec4& b);    // dot productfriend vec4 operator / (const vec4& a, const double d);	    // v1 / 3.0friend int operator == (const vec4& a, const vec4& b);	    // v1 == v2 ?friend int operator != (const vec4& a, const vec4& b);	    // v1 != v2 ?friend ostream& operator << (ostream& s, vec4& v);	    // output to streamfriend istream& operator >> (istream& s, vec4& v);	    // input from strm.friend void swap(vec4& a, vec4& b);			    // swap v1 & v2friend vec4 min(const vec4& a, const vec4& b);		    // min(v1, v2)friend vec4 max(const vec4& a, const vec4& b);		    // max(v1, v2)friend vec4 prod(const vec4& a, const vec4& b);		    // term by term *// necessary friend declarationsfriend class vec3;friend class mat4;friend vec3 operator * (const mat4& a, const vec3& v);	    // linear transformfriend mat4 operator * (mat4& a, mat4& b);		    // matrix 4 product};/*****************************************************************								**			   3x3 Matrix				**								*****************************************************************/class mat3{protected: vec3 v[3];public:// Constructorsmat3();mat3(const vec3& v0, const vec3& v1, const vec3& v2);mat3(const double d);mat3(const mat3& m);// Assignment operatorsmat3& operator	= ( const mat3& m );	    // assignment of a mat3mat3& operator += ( const mat3& m );	    // incrementation by a mat3mat3& operator -= ( const mat3& m );	    // decrementation by a mat3mat3& operator *= ( const double d );	    // multiplication by a constantmat3& operator /= ( const double d );	    // division by a constantvec3& operator [] ( int i);		    // indexing// special functionsmat3 transpose();			    // transposemat3 inverse();				    // inversemat3& apply(V_FCT_PTR fct);		    // apply a func. to each element// friendsfriend mat3 operator - (const mat3& a);			    // -m1friend mat3 operator + (const mat3& a, const mat3& b);	    // m1 + m2friend mat3 operator - (const mat3& a, const mat3& b);	    // m1 - m2friend mat3 operator * (mat3& a, mat3& b);		    // m1 * m2friend mat3 operator * (const mat3& a, const double d);	    // m1 * 3.0friend mat3 operator * (const double d, const mat3& a);	    // 3.0 * m1friend mat3 operator / (const mat3& a, const double d);	    // m1 / 3.0friend int operator == (const mat3& a, const mat3& b);	    // m1 == m2 ?friend int operator != (const mat3& a, const mat3& b);	    // m1 != m2 ?friend ostream& operator << (ostream& s, mat3& m);	    // output to streamfriend istream& operator >> (istream& s, mat3& m);	    // input from strm.friend void swap(mat3& a, mat3& b);			    // swap m1 & m2// necessary friend declarationsfriend vec3 operator * (const mat3& a, const vec3& v);	    // linear transformfriend vec2 operator * (const mat3& a, const vec2& v);	    // linear transform};/*****************************************************************								**			   4x4 Matrix				**								*****************************************************************/class mat4{protected: vec4 v[4];public:// Constructorsmat4();mat4(const vec4& v0, const vec4& v1, const vec4& v2, const vec4& v3);mat4(const double d);mat4(const mat4& m);// Assignment operatorsmat4& operator	= ( const mat4& m );	    // assignment of a mat4mat4& operator += ( const mat4& m );	    // incrementation by a mat4mat4& operator -= ( const mat4& m );	    // decrementation by a mat4mat4& operator *= ( const double d );	    // multiplication by a constantmat4& operator /= ( const double d );	    // division by a constantvec4& operator [] ( int i);		    // indexing// special functionsmat4 transpose();			    // transposemat4 inverse();				    // inversemat4& apply(V_FCT_PTR fct);		    // apply a func. to each element// friendsfriend mat4 operator - (const mat4& a);			    // -m1friend mat4 operator + (const mat4& a, const mat4& b);	    // m1 + m2friend mat4 operator - (const mat4& a, const mat4& b);	    // m1 - m2friend mat4 operator * (mat4& a, mat4& b);		    // m1 * m2friend mat4 operator * (const mat4& a, const double d);	    // m1 * 4.0friend mat4 operator * (const double d, const mat4& a);	    // 4.0 * m1friend mat4 operator / (const mat4& a, const double d);	    // m1 / 3.0friend int operator == (const mat4& a, const mat4& b);	    // m1 == m2 ?friend int operator != (const mat4& a, const mat4& b);	    // m1 != m2 ?friend ostream& operator << (ostream& s, mat4& m);	    // output to streamfriend istream& operator >> (istream& s, mat4& m);	    // input from strm.friend void swap(mat4& a, mat4& b);			    // swap m1 & m2// necessary friend declarationsfriend vec4 operator * (const mat4& a, const vec4& v);	    // linear transformfriend vec3 operator * (const mat4& a, const vec3& v);	    // linear transform};/*****************************************************************								**	       2D functions and 3D functions			**								*****************************************************************/mat3 identity2D();					    // identity 2Dmat3 translation2D(vec2& v);				    // translation 2Dmat3 rotation2D(vec2& Center, const double angleDeg);	    // rotation 2Dmat3 scaling2D(vec2& scaleVector);			    // scaling 2Dmat4 identity3D();					    // identity 3Dmat4 translation3D(vec3& v);				    // translation 3Dmat4 rotation3D(vec3& Axis, const double angleDeg);	    // rotation 3Dmat4 scaling3D(vec3& scaleVector);			    // scaling 3Dmat4 perspective3D(const double d);			    // perspective 3D

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
经典三级视频一区| 夜色激情一区二区| 国产福利91精品一区二区三区| 日韩亚洲欧美综合| 免费成人在线网站| 2020国产精品| 99riav一区二区三区| 亚洲另类在线制服丝袜| 欧美日韩成人一区| 91蜜桃视频在线| 亚洲成精国产精品女| 精品久久久久久久久久久院品网| 国产老肥熟一区二区三区| 国产精品―色哟哟| 欧美日韩在线播放三区四区| 日日夜夜精品视频免费| 精品国偷自产国产一区| 波多野结衣一区二区三区| 亚洲一二三四在线观看| 欧美大尺度电影在线| 成人免费不卡视频| 午夜精品一区二区三区免费视频| 精品久久久久久久久久久久久久久 | 久久久久久毛片| 91视频国产观看| 久久精品国产亚洲aⅴ| 国产精品免费丝袜| 欧美一区二区三区成人| 成人短视频下载| 日韩—二三区免费观看av| 欧美激情中文字幕一区二区| 欧美三级视频在线| 成人一区二区视频| 免费观看久久久4p| 亚洲愉拍自拍另类高清精品| 久久精品这里都是精品| 欧美日韩你懂得| www.66久久| 国产福利精品导航| 日本伊人色综合网| 亚洲免费观看在线视频| 精品国产污网站| 欧美日韩情趣电影| 91老师片黄在线观看| 国产在线精品免费av| 亚洲 欧美综合在线网络| 亚洲欧美一区二区视频| 欧美mv和日韩mv的网站| 欧美日韩国产片| 色婷婷综合久久久中文一区二区 | 色婷婷狠狠综合| 欧美一区二区视频观看视频| 欧美色图在线观看| 本田岬高潮一区二区三区| 日本成人在线不卡视频| 一区二区三区日本| 国产精品久久久99| 久久久久久黄色| 精品日产卡一卡二卡麻豆| 欧美精品高清视频| 欧美亚日韩国产aⅴ精品中极品| 99精品欧美一区二区三区小说 | 欧美日韩日日骚| 一本色道久久加勒比精品| 丁香一区二区三区| 国产高清视频一区| 国产精华液一区二区三区| 国产一区二区成人久久免费影院 | 亚洲国产精品传媒在线观看| 精品乱码亚洲一区二区不卡| 日韩一区二区免费在线观看| 欧美高清性hdvideosex| 欧美日韩高清在线播放| 欧美午夜不卡视频| 精品视频1区2区| 欧美裸体bbwbbwbbw| 精品1区2区3区| 欧美群妇大交群中文字幕| 欧美日韩电影在线| 欧美一区二区在线免费观看| 91精品婷婷国产综合久久| 91精品国产色综合久久不卡蜜臀 | 日本三级亚洲精品| 青草av.久久免费一区| 另类的小说在线视频另类成人小视频在线| 视频一区在线视频| 裸体健美xxxx欧美裸体表演| 看片网站欧美日韩| 国产成人av一区| 99免费精品视频| 欧美性猛片xxxx免费看久爱| 欧美日韩成人一区二区| 精品三级在线观看| 久久九九久精品国产免费直播| 日本一区二区免费在线观看视频| 国产三级精品三级| 亚洲欧美视频在线观看视频| 亚洲精品久久嫩草网站秘色| 亚洲成人7777| 极品少妇一区二区三区精品视频| 福利91精品一区二区三区| 色综合天天综合色综合av| 欧美三级日韩三级| 精品日韩一区二区三区免费视频| 国产精品三级在线观看| 一区二区三区精密机械公司| 蜜臀a∨国产成人精品| 福利一区二区在线| 欧美群妇大交群中文字幕| 久久精品人人爽人人爽| 亚洲午夜免费电影| 黑人巨大精品欧美一区| av不卡一区二区三区| 91精品久久久久久久久99蜜臂| 国产网站一区二区三区| 亚洲一卡二卡三卡四卡无卡久久 | 日韩精品一区二区三区在线观看| 欧美高清在线一区二区| 亚洲一区在线免费观看| 国内精品伊人久久久久av一坑 | 精品国产电影一区二区| 国产精品二三区| 美日韩一级片在线观看| 97久久精品人人澡人人爽| 欧美一区二区三区喷汁尤物| 国产精品久久精品日日| 九九热在线视频观看这里只有精品| 99久久久无码国产精品| 日韩欧美三级在线| 亚洲国产欧美在线人成| 国产999精品久久久久久绿帽| 欧美日韩亚州综合| 中文字幕视频一区二区三区久| 日韩精品亚洲一区二区三区免费| 不卡影院免费观看| 精品国产3级a| 日韩av二区在线播放| 91美女视频网站| 中文字幕精品一区二区精品绿巨人| 视频一区二区欧美| 91原创在线视频| 国产精品区一区二区三| 久久99在线观看| 欧美浪妇xxxx高跟鞋交| 亚洲色欲色欲www| 国产精品综合一区二区三区| 91精品婷婷国产综合久久性色| 亚洲小说欧美激情另类| 91丨porny丨户外露出| 国产日韩高清在线| 国产一区日韩二区欧美三区| 欧美一级xxx| 日韩主播视频在线| 欧美色精品在线视频| 亚洲精品成人在线| 91美女片黄在线| 亚洲另类色综合网站| 91免费看视频| 日韩美女视频一区二区 | 久久在线免费观看| 久久精品国产精品亚洲红杏| 777久久久精品| 日韩电影在线一区二区三区| 欧美男同性恋视频网站| 亚洲午夜久久久久久久久电影院| 91蜜桃传媒精品久久久一区二区| 最新久久zyz资源站| www.亚洲免费av| 亚洲日本青草视频在线怡红院| proumb性欧美在线观看| 国产精品不卡在线观看| 91在线观看地址| 亚洲成a人片在线不卡一二三区| 欧美色视频一区| 毛片av一区二区| 久久久久久久久一| 成人sese在线| 伊人婷婷欧美激情| 欧美日韩高清一区| 国产一区二区三区电影在线观看| www久久精品| 高清在线不卡av| 亚洲精品免费一二三区| 欧美日韩一级二级| 激情亚洲综合在线| 国产精品美女久久久久久久久久久 | 欧美精品在线一区二区| 日本在线不卡一区| 国产欧美综合色| 色呦呦日韩精品| 美女脱光内衣内裤视频久久影院| 国产亚洲精久久久久久| 99国产欧美久久久精品| 亚洲成人手机在线| 久久亚洲综合色| 色老汉av一区二区三区| 久久草av在线| 亚洲乱码国产乱码精品精可以看| 欧美美女网站色| 成人高清视频在线观看|