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

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

?? ogretriangle.h

?? opcode是功能強大
?? H
字號:
///////////////////////////////////////////////////////////////////////////////
///  @file OgreTriangle.h
///  @brief This class represents a Triangle, which is composed by
///
///  @author The OgreOpcode Team
///  
///////////////////////////////////////////////////////////////////////////////
///  
///  This file is part of OgreOpcode.
///  
///  A lot of the code is based on the Nebula Opcode Collision module, see docs/Nebula_license.txt
///  
///  OgreOpcode is free software; you can redistribute it and/or
///  modify it under the terms of the GNU Lesser General Public
///  License as published by the Free Software Foundation; either
///  version 2.1 of the License, or (at your option) any later version.
///  
///  OgreOpcode is distributed in the hope that it will be useful,
///  but WITHOUT ANY WARRANTY; without even the implied warranty of
///  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
///  Lesser General Public License for more details.
///  
///  You should have received a copy of the GNU Lesser General Public
///  License along with OgreOpcode; if not, write to the Free Software
///  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
///  
///////////////////////////////////////////////////////////////////////////////
#ifndef __OgreOpcodeTriangle_h__
#define __OgreOpcodeTriangle_h__

namespace OgreOpcode
{
	namespace Details
    {
		/// Represents a Triangle defined by three points (vertices).
		/// This class is <em>strongly</em> based on OPCODE's triangle class, but is
		/// designed to work with Ogre's vectors and haves more utility methods.
		/// There are methods for computing distances and for intersection detection.
		/// Most code is inlined. INL files implementing the inlined methods can be added later,
		/// allowing for easier reading of this class.
		class _OgreOpcode_Export Triangle
		{
		public:

			/** Fast, but <em>unsafe</em> default constructor
             */
			Triangle() { }

            /** Constructor
			 */
            Triangle( const Ogre::Vector3& p0, const Ogre::Vector3& p1, const Ogre::Vector3& p2 )
			{
				vertices[0] = p0;
				vertices[1] = p1;
				vertices[2] = p2;
			}
			
			/** Copy-constructor
			 */
			Triangle( const Triangle& tri )
			{
				vertices[0] = tri.vertices[0];
                vertices[1] = tri.vertices[1];
                vertices[2] = tri.vertices[2];
			}
			
			/// Dummy destructor :P
			~Triangle() {}
			
			/** Flips the orientation of this triangle.
			 */
			void flip()
			{
				Ogre::Vector3 temp = vertices[2];
				vertices[2] = vertices[1];
				vertices[1] = temp;
			}
			
			/** Computes the area of this triangle
			 */
			Ogre::Real area() const
			{
				const Ogre::Vector3& v0 = vertices[0];
				const Ogre::Vector3& v1 = vertices[1];
				const Ogre::Vector3& v2 = vertices[2];				
				
				return (v1 - v0).crossProduct((v2 - v0)).length() * 0.5;
			}
			
			/** Computes the perimeter of this triangle
			 */
			Ogre::Real perimeter() const
			{
				Ogre::Vector3 d0 = vertices[0] - vertices[1];
				Ogre::Vector3 d1 = vertices[1] - vertices[2];
				Ogre::Vector3 d2 = vertices[2] - vertices[0];

				return d0.length() + d1.length() + d2.length();
			}
			
			/** Computes the normal of this triangle.
			 *  @param N Output vector to hold the computed normal
			 *  @param normalize Boolean flag telling whether the normal must be normalized
			 */
			void normal( Ogre::Vector3& N, bool normalize = true ) const
			{
				const Ogre::Vector3& v0 = vertices[0];
				const Ogre::Vector3& v1 = vertices[1];
				const Ogre::Vector3& v2 = vertices[2];

				N = (v1 - v0).crossProduct((v2 - v0));

				// normalizes the vector, if required
				if( normalize )
					N.normalise();
			}
			
			/** Computes the center of this triangle
			 * @param center Output vector parameter to hold the result
			 */
			void center( Ogre::Vector3& center ) const
			{
				center = (vertices[0] + vertices[1] + vertices[2])/3.0;
			}
			
			/** Gets the plane where this triangle lies on.
			 * @param plane Output parameter
			 */
			Ogre::Plane plane() const
			{
				return Ogre::Plane(vertices[0],vertices[1],vertices[2]);
			};
			
			/** Gets the point with given baricentric uv coordinates
			 */
			Ogre::Vector3 getPoint( Ogre::Real U, Ogre::Real V ) const
			{
				const Ogre::Vector3& v0 = vertices[0];
				const Ogre::Vector3& v1 = vertices[1];
				const Ogre::Vector3& v2 = vertices[2];

				// convex combination
				return (1.0 - U - V)*v0 + U*v1 + V*v2;
			}
			
			/** Inflates this triangle in order to produce a larger one with the same center
			 *  @param rate The rate this triangle will be inflated.
			 *  @param isRelative When this flag is set to true, the triangle will be inflated
			 *					  proportional to its size.
			 */
			void inflate( Ogre::Real rate, bool isRelative = false )
			{
				Ogre::Vector3 center = (vertices[0] + vertices[1] + vertices[2])/3.0;

				for( int i=0;i<3;++i)
				{
					Ogre::Vector3 delta = vertices[i] - center;
					if( !isRelative )
						delta.normalise();

					vertices[i] += rate*delta;
				}
			}
			
			/** Computes the <em>squared</em> distance from this triangle to a given point
			 *  @remarks Follows code from Magic-Software at http://www.magic-software.com
			 */
			Ogre::Real squaredDistance( const Ogre::Vector3& point ) const;
			
			/** Computes the distance from this triangle to a given point
			 */
			Ogre::Real distance( const Ogre::Vector3& point ) const
			{
				return Ogre::Math::Sqrt( squaredDistance(point) );
			}

			/** Checks collision against a sphere.
			 *  @param center The sphere's center 
			 *  @param radius The sphere's radius
			 */
			bool overlapsSphere( const Ogre::Vector3& center, Ogre::Real radius )
			{
				return squaredDistance(center) <= radius*radius;
			}
			
			/// The three vertices defining this triangle
			Ogre::Vector3 vertices[3];
		};
	}
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产免费| 777色狠狠一区二区三区| 美国十次了思思久久精品导航| 亚洲一区二区三区视频在线播放 | 国产福利一区二区三区| 美女看a上一区| 经典三级视频一区| 国产一区二区在线影院| 大胆亚洲人体视频| 91色在线porny| 在线精品观看国产| 欧美一级夜夜爽| 精品国产露脸精彩对白| 国产亚洲精久久久久久| 亚洲精品视频一区二区| 亚洲成人免费在线| 久久成人免费网| jlzzjlzz欧美大全| 欧美日本不卡视频| 精品久久久久久久久久久久久久久久久| www国产精品av| 亚洲婷婷在线视频| 午夜精品久久久久久久99水蜜桃 | 亚洲最大成人综合| 男男gaygay亚洲| 国产不卡免费视频| 日本韩国一区二区三区视频| 日韩免费在线观看| 亚洲色图一区二区三区| 日韩综合小视频| 不卡在线视频中文字幕| 日韩一区二区在线观看视频| 日本一区二区视频在线| 五月婷婷综合在线| 99riav久久精品riav| 欧美精品在线观看播放| 国产午夜精品久久久久久久| 亚洲综合激情小说| 国产成人av电影在线观看| 欧美伊人精品成人久久综合97| 欧美电视剧免费全集观看| 亚洲精品日日夜夜| 国产成a人无v码亚洲福利| 欧美精品少妇一区二区三区| 亚洲桃色在线一区| 国产一区高清在线| 欧美高清性hdvideosex| 亚洲私人黄色宅男| 国产精品一线二线三线| 欧美日韩国产一级二级| 亚洲人精品午夜| 国产ts人妖一区二区| 日韩视频一区二区| 日韩在线一区二区三区| 91在线免费视频观看| 国产欧美一区二区精品久导航 | 国产综合色在线视频区| 91精品国产一区二区人妖| 最好看的中文字幕久久| 国产一区 二区 三区一级| 欧美一区二区三区婷婷月色| 亚洲国产一区二区a毛片| 91麻豆产精品久久久久久| 中文字幕在线观看一区二区| 国产精品一二三| 中文在线一区二区| 成人精品免费看| 国产精品视频看| 99久久精品免费看| 国产精品成人免费| 成人av小说网| 亚洲天堂福利av| 色素色在线综合| 亚洲国产综合人成综合网站| 在线观看免费亚洲| 亚洲福利一区二区三区| 欧美人妇做爰xxxⅹ性高电影 | 欧美成人精品3d动漫h| 秋霞国产午夜精品免费视频| 日韩视频123| 老司机精品视频一区二区三区| 日韩一区二区三区观看| 久久爱www久久做| 国产日韩欧美亚洲| 99在线热播精品免费| 亚洲一区二区三区在线播放| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | eeuss国产一区二区三区| 亚洲视频一区在线观看| 欧美少妇一区二区| 蜜臀久久99精品久久久画质超高清| 亚洲精品在线免费观看视频| 成人免费视频网站在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 色噜噜狠狠色综合中国| 亚洲h动漫在线| 久久女同互慰一区二区三区| 成人免费毛片app| 亚洲成人动漫精品| 精品国产99国产精品| av动漫一区二区| 日本中文一区二区三区| 国产精品麻豆视频| 欧美日韩久久一区| 国产成人亚洲综合a∨猫咪| 亚洲精品少妇30p| 欧美精品一区二区三区高清aⅴ| 成人一区二区在线观看| 日韩中文欧美在线| 国产精品污www在线观看| 欧美三级日本三级少妇99| 国产乱码一区二区三区| 亚洲123区在线观看| 国产欧美精品一区二区色综合朱莉| 欧美日韩一区二区在线观看视频| 国产一区二区三区在线观看精品| 亚洲一区二区三区美女| 久久久99免费| 宅男在线国产精品| 92精品国产成人观看免费| 寂寞少妇一区二区三区| 亚洲在线视频一区| 国产精品久线观看视频| 精品久久久久久久久久久久久久久 | 亚洲成av人片在线观看| 久久日一线二线三线suv| 欧美日韩视频在线一区二区| 不卡视频在线看| 国产成人啪午夜精品网站男同| 同产精品九九九| 亚洲乱码精品一二三四区日韩在线| 久久综合九色综合97_久久久 | 国产激情91久久精品导航| 日韩电影免费在线观看网站| 1024成人网| 国产午夜精品福利| 久久久久久免费| 精品毛片乱码1区2区3区| 欧美一区二区三区日韩| 欧美日韩三级一区| 欧美日韩一区中文字幕| 欧美在线看片a免费观看| 91香蕉视频在线| 成人免费视频视频| 国产成人亚洲综合a∨猫咪 | 日韩伦理av电影| 国产精品白丝在线| 国产精品每日更新在线播放网址 | 亚洲国产精品影院| 亚洲一区免费在线观看| 亚洲电影激情视频网站| 久久精品久久99精品久久| 日本中文字幕一区| 老司机午夜精品99久久| 国产一区二区三区美女| 国产成人精品免费在线| 成人精品一区二区三区四区 | 不卡的av网站| eeuss国产一区二区三区| 91色porny蝌蚪| 欧美揉bbbbb揉bbbbb| 91精品国产入口| 欧美精品一区在线观看| 国产清纯白嫩初高生在线观看91| 国产精品免费av| 一区二区不卡在线视频 午夜欧美不卡在| 有坂深雪av一区二区精品| 亚洲国产日韩一区二区| 美国十次了思思久久精品导航| 国产福利91精品一区| 成人91在线观看| 欧美日本一道本在线视频| 日韩欧美国产一区二区三区| 久久久精品tv| 亚洲一区二区三区视频在线播放| 秋霞成人午夜伦在线观看| 国产精品自拍毛片| 色94色欧美sute亚洲线路二| 日韩欧美一区二区在线视频| 国产欧美一区二区三区鸳鸯浴| 亚洲精品成人精品456| 蜜桃精品在线观看| 成人精品视频网站| 欧美日韩国产综合视频在线观看| 欧美sm极限捆绑bd| 亚洲色图视频网站| 国模套图日韩精品一区二区| 99riav久久精品riav| 91精品国产综合久久香蕉的特点| 国产精品午夜久久| 五月天精品一区二区三区| 国产 欧美在线| 337p亚洲精品色噜噜| 国产精品久久久久久福利一牛影视| 日韩精品电影在线| 99精品视频免费在线观看| 精品久久国产字幕高潮| 亚洲国产一区二区三区青草影视 | 欧美在线视频你懂得| 国产三级欧美三级|