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

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

?? ogreopcodeline.h

?? opcode是功能強大
?? H
字號:
///////////////////////////////////////////////////////////////////////////////
///  @file OgreLine.h
///  @brief TODO.
///
///  @author The OgreOpcode Team @date 23-02-2005
///  
///////////////////////////////////////////////////////////////////////////////
///  
///  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 __OgreOpcodeLineClass_h__
#define __OgreOpcodeLineClass_h__

#include "OgreOpcodeMath.h"

namespace OgreOpcode
{
	namespace Details
    {
		/// Represents a Line segment defined by 2 endpoints.
		/// TODO: add methods to this class.
		class _OgreOpcode_Export Line
		{
		public:

			/** Default contructor, making start=end=ZERO
			 */
			Line():start(),end()
			{
			}

			/** Complete contructor
			 */
			Line( const Ogre::Vector3& p0, const Ogre::Vector3& p1 ):start(p0),end(p1)
			{
			}

			/** Complete, headache contructor
		 	 */
			Line( Ogre::Real x0, Ogre::Real y0, Ogre::Real z0,
				  Ogre::Real x1, Ogre::Real y1, Ogre::Real z1 ):start(x0,y0,z0),end(x1,y1,z1)
			{
			}

			/** Copy-contructor
			 */
			Line( const Line& line ):start(line.start),end(line.end)
			{
			}

			/// Setups this line
			void set( const Line& line )
			{
				start = line.start;
				end   = line.end;
			}

			/// Sets this line segment
			void set( Ogre::Real x0, Ogre::Real y0, Ogre::Real z0,
						Ogre::Real x1, Ogre::Real y1, Ogre::Real z1 )
			{
				start.x = x0;
				start.y = y0;
				start.z = z0;
				end.x = x1;
				end.y = y1;
				end.z = z1;
			}

			/// Setups this line
			void set( const Ogre::Vector3& p0, const Ogre::Vector3& p1 )
			{
				start = p0;
				end   = p1;
			}

			/** Computes the <em>squared</em> distance from this line to the given point.
			 *  The linear delta will be stored in t, if not null.
			 */
			Ogre::Real squaredDistance( const Ogre::Vector3& point, Ogre::Real *t =NULL ) const;

			/** Computes the distance from this line to the given point.
			 *  The linear delta will be stored in t, if not null.
			 */
			Ogre::Real distance( const Ogre::Vector3& point, Ogre::Real *t =NULL ) const;

			/** Computes the <em>squared</em> distance from this line to the given one.
			 *  The vector pointers p0 and p1 will hold the linear deltas to obtain the
			 *  closest points in the respective line segments.
			 */
			Ogre::Real squaredDistance( const Line& line, Ogre::Real* p0 = NULL, Ogre::Real* p1 = NULL ) const;

			/** Computes the distance from this line to the given one.
			 *  The vector pointers p0 and p1 will hold the linear deltas to obtain the
			 *  closest points in the respective line segments.
			 */
			Ogre::Real distance( const Line& line, Ogre::Real* p0 = NULL, Ogre::Real* p1 = NULL ) const;


			/** Computes the <em>squared</em> distance from this line segment to the given Oriented Bounding Box.				 
			 */
			Ogre::Real squaredDistance( const OrientedBox& obb ) const;

			/** Computes the distance from this line segment to the given Oriented Bounding Box.				 
			 */
			Ogre::Real distance( const OrientedBox& obb ) const;

			///Sets the starting point
			void setStart( Ogre::Real x, Ogre::Real y, Ogre::Real z )
			{
				start.x = x;
				start.y = y;
				start.z = z;
			}
			///Sets the starting point
			void setStart( const Ogre::Vector3& v )			  { start = v;		 }

			///Sets the ending point
			void setEnd( Ogre::Real x, Ogre::Real y, Ogre::Real z )
			{
				end.x = x;
				end.y = y;
				end.z = z;
			}
			///Sets the ending point
			void setEnd( const Ogre::Vector3& v )			{ end = v;		  }

			/// Gets the length of this line segment
			Ogre::Real length() const {  return (start-end).length(); }
			/// Gets the squared length of this line segment
			Ogre::Real length2() const {  return (start-end).squaredLength(); }

			/// Gets the non-normalized direction of this line segment
			Ogre::Vector3 getDirection()	const {   return end - start;   }
// --------------------------------------------------------------------
// Intersection methods

			/** Intersection test between this line and the given AABB.
			 */
			bool intersect( const Aabb& aabb ) const;

			/** Intersection test between this line and the given OBB.
			 */
			bool intersect( const OrientedBox& obb ) const;

			/** Intersection test between this line and the given Sphere.
			 */
			bool intersect( const Ogre::Sphere& sphere ) const;

			/** Intersection test between this line and the given Capsule.
			 */
			bool intersect( const Capsule& capsule ) const;

			/** Generates the parametric point at a given parametric value, using the linear combination.
			 *  @return v = start*(1-delta) + end*delta
			 */
			Ogre::Vector3 getPointAt( Ogre::Real delta ) const
			{
				return start + delta*(start-end);
			}

// --------------------------------------------------------------------
// Picking methods

			/** Picking test between this line and the given AABB.
			 *  @param dist Reference to a floating point representing the closest
			 *				intersection point trough the distance from the ray origin.
			 */
			bool pick( const Aabb& aabb, Ogre::Real& dist ) const;

			/** Picking test between this line and the given OBB.
			 *  @param dist Reference to a floating point representing the closest
			 *				intersection point trough the distance from the ray origin.
			 */
			bool pick( const OrientedBox& obb, Ogre::Real& dist ) const;

			/** Picking test between this line and the given Sphere.
			 *  @param dist Reference to a floating point representing the closest
			 *				intersection point trough the distance from the ray origin.
			 */
			bool pick( const Ogre::Sphere& sphere, Ogre::Real& dist ) const;

			/** The start point of this line.
			 */
			Ogre::Vector3 start;
			/** The end point of this line.
			 */
			Ogre::Vector3 end;
		};
	}
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清在线不卡| 欧美日韩精品一二三区| 欧美专区日韩专区| 日韩精品一区二区三区在线观看 | 欧美乱熟臀69xxxxxx| 国产三级一区二区三区| 天堂va蜜桃一区二区三区漫画版| 粉嫩aⅴ一区二区三区四区 | 91成人网在线| 久久久久久99久久久精品网站| 亚洲一区视频在线| 不卡一区二区中文字幕| 亚洲精品在线三区| 久久国产精品99久久久久久老狼| 欧美亚洲国产怡红院影院| 欧美国产一区在线| 国产一区二区福利视频| 91精品国产综合久久久久久久久久 | 久久99国内精品| 欧美日韩日日摸| 亚洲欧美激情在线| a在线欧美一区| 国产欧美精品一区二区色综合| 国内精品国产成人国产三级粉色 | 成人免费毛片嘿嘿连载视频| 日韩一区二区三区四区| 日韩av网站在线观看| 欧美日韩精品二区第二页| 亚洲女人的天堂| 99免费精品在线| 综合久久综合久久| 91无套直看片红桃| 亚洲色大成网站www久久九九| eeuss鲁片一区二区三区在线观看| 久久久精品免费免费| 国产高清一区日本| 国产精品久久久久一区| 99国产精品99久久久久久| 综合久久国产九一剧情麻豆| 99re这里只有精品6| 一区二区三区资源| 欧美日韩国产大片| 麻豆传媒一区二区三区| 精品成人一区二区| 成人一二三区视频| 又紧又大又爽精品一区二区| 欧美视频一区二区三区四区| 日韩激情中文字幕| 久久综合999| 成人毛片老司机大片| 一区二区三区欧美久久| 欧美丰满少妇xxxxx高潮对白| 视频一区二区不卡| 精品欧美一区二区在线观看| 丁香亚洲综合激情啪啪综合| 亚洲乱码一区二区三区在线观看| 91国偷自产一区二区三区观看| 婷婷综合久久一区二区三区| 精品黑人一区二区三区久久| 成人综合在线观看| 亚洲午夜三级在线| 2欧美一区二区三区在线观看视频| 国产精品一区二区视频| 亚洲免费伊人电影| 日韩午夜激情视频| 成人va在线观看| 天天综合色天天综合色h| 2021中文字幕一区亚洲| 色综合天天综合网天天狠天天| 午夜亚洲福利老司机| 国产婷婷色一区二区三区在线| 不卡一卡二卡三乱码免费网站| 亚洲成av人片www| 国产午夜精品一区二区三区视频 | 日本女人一区二区三区| 国产女人水真多18毛片18精品视频| 91久久精品一区二区| 激情文学综合网| 亚洲一区二区精品久久av| 久久久久久久综合日本| 欧美区一区二区三区| 成人午夜在线免费| 日本视频免费一区| 一区二区成人在线| 日本一区二区三区在线不卡| 在线不卡欧美精品一区二区三区| 国产成人免费视| 蜜桃一区二区三区在线观看| 亚洲欧洲韩国日本视频| 久久久三级国产网站| 欧美男男青年gay1069videost| av电影在线观看完整版一区二区 | 免费成人在线视频观看| 亚洲欧美中日韩| 久久精品亚洲一区二区三区浴池| 欧美剧在线免费观看网站 | 亚洲一区二区欧美| 亚洲欧洲精品一区二区三区不卡| xvideos.蜜桃一区二区| 欧美精品亚洲一区二区在线播放| 91丝袜呻吟高潮美腿白嫩在线观看| 韩国欧美国产1区| 亚洲第一福利一区| 亚洲综合成人在线视频| 中文字幕日韩一区| 国产精品欧美久久久久一区二区| 精品久久久久久综合日本欧美| 欧美久久久久久久久| 欧美亚洲高清一区| 在线亚洲+欧美+日本专区| 91丝袜美女网| 91视频国产观看| 91啦中文在线观看| 91麻豆免费在线观看| 91日韩精品一区| 色综合久久久久网| 91久久香蕉国产日韩欧美9色| a美女胸又www黄视频久久| av动漫一区二区| 欧美在线一二三| 欧美日本在线播放| 欧美一区二区三区在线电影| 91精品国产黑色紧身裤美女| 3atv一区二区三区| 精品国产成人系列| 国产欧美精品在线观看| 国产精品灌醉下药二区| 亚洲一区精品在线| 日韩综合一区二区| 久久国产三级精品| 国产精品456| 91亚洲精品久久久蜜桃| 欧美日韩在线播| 日韩欧美一级片| 国产精品天天看| 亚洲精品成人悠悠色影视| 性欧美大战久久久久久久久| 日韩国产精品大片| 国产电影精品久久禁18| 91丝袜美腿高跟国产极品老师| 欧美天堂亚洲电影院在线播放| 欧美剧在线免费观看网站 | 亚洲欧美视频在线观看视频| 夜夜嗨av一区二区三区四季av| 午夜精品福利视频网站 | 亚洲免费在线看| 男男视频亚洲欧美| 岛国一区二区在线观看| 色88888久久久久久影院按摩| 国产日韩欧美精品综合| 亚洲人成精品久久久久| 日本成人在线视频网站| 懂色av中文一区二区三区| 欧美精品欧美精品系列| 国产日韩欧美不卡在线| 亚洲国产人成综合网站| 国产精品一区二区男女羞羞无遮挡 | 国产麻豆91精品| 欧美日韩一卡二卡三卡| 久久先锋影音av鲁色资源网| 国产精品久久影院| 日本在线不卡视频一二三区| 波多野结衣一区二区三区| 在线播放中文一区| 国产精品成人一区二区三区夜夜夜| 婷婷夜色潮精品综合在线| 一区二区欧美视频| 婷婷久久综合九色综合绿巨人| 国产福利精品导航| 欧美精品高清视频| 中文字幕日韩欧美一区二区三区| 蜜桃视频在线观看一区二区| 色哟哟国产精品| 欧美精彩视频一区二区三区| 肉丝袜脚交视频一区二区| 97久久超碰精品国产| 久久久国际精品| 麻豆精品在线观看| 欧美性色综合网| 亚洲欧美日韩国产综合在线| 国产精品一级片| 日韩视频一区二区三区| 亚洲v中文字幕| 在线视频亚洲一区| 亚洲青青青在线视频| 粉嫩av一区二区三区在线播放| 精品免费国产一区二区三区四区| 亚洲一区二区av在线| 97精品超碰一区二区三区| 日本一区二区三区高清不卡| 国产一区二区三区免费播放| 日韩欧美另类在线| 天堂蜜桃91精品| 欧美日韩国产美| 亚洲成av人影院| 91精品国产综合久久精品app| 亚洲va欧美va人人爽| 欧美性大战久久| 午夜精品福利视频网站 | 色www精品视频在线观看|