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

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

?? geometry.cpp

?? 一個C編寫的足球機器人比賽程序
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
// Geometry.cpp: implementation of the Geometry class.
//
//////////////////////////////////////////////////////////////////////

//#include "stdafx.h"
#include "Geometry.h"
#include <stdio.h>    // needed for sprintf


/*! This function returns the sign of a give double.
1 is positive, -1 is negative
\param d1 first parameter
\return the sign of this double */
int sign( double d1 )
{
	return (d1>0)?1:-1;
}

/*! This function returns the maximum of two given doubles.
\param d1 first parameter
\param d2 second parameter
\return the maximum of these two parameters */
/*
double max( double d1, double d2 )
{
return (d1>d2)?d1:d2;
}
*/

/*! This function returns the minimum of two given doubles.
\param d1 first parameter
\param d2 second parameter
\return the minimum of these two parameters */
/*
double min( double d1, double d2 )
{
return (d1<d2)?d1:d2;
}
*/

/*! This function converts an angle in radians to the corresponding angle in
degrees.
\param x an angle in radians
\return the corresponding angle in degrees */
AngDeg Rad2Deg( AngRad x )
{
	return ( x * 180 / M_PI );
}

/*! This function converts an angle in degrees to the corresponding angle in
radians.
\param x an angle in degrees
\return the corresponding angle in radians */
AngRad Deg2Rad( AngDeg x )
{
	return ( x * M_PI / 180 );
}

/*! This function returns the cosine of a given angle in degrees using the
built-in cosine function that works with angles in radians.
\param x an angle in degrees
\return the cosine of the given angle */
double cosDeg( AngDeg x )
{
	return ( cos( Deg2Rad( x ) ) );
}

/*! This function returns the sine of a given angle in degrees using the
built-in sine function that works with angles in radians.
\param x an angle in degrees
\return the sine of the given angle */
double sinDeg( AngDeg x )
{
	return ( sin( Deg2Rad( x ) ) );
}

/*! This function returns the tangent of a given angle in degrees using the
built-in tangent function that works with angles in radians.
\param x an angle in degrees
\return the tangent of the given angle */
double tanDeg( AngDeg x )
{
	return ( tan( Deg2Rad( x ) ) );
}

/*! This function returns the principal value of the arc tangent of x
in degrees using the built-in arc tangent function which returns
this value in radians.
\param x a double value
\return the arc tangent of the given value in degrees */
AngDeg atanDeg( double x )
{
	return ( Rad2Deg( atan( x ) ) );
}

/*! This function returns the principal value of the arc tangent of y/x in
degrees using the signs of both arguments to determine the quadrant of the
return value. For this the built-in 'atan2' function is used which returns
this value in radians.
\param x a double value
\param y a double value
\return the arc tangent of y/x in degrees taking the signs of x and y into
account */
double atan2Deg( double x, double y )
{
	if( fabs( x ) < EPSILON && fabs( y ) < EPSILON )
		return ( 0.0 );
	
	return ( Rad2Deg( atan2( x, y ) ) );
}

/*! This function returns the principal value of the arc cosine of x in degrees
using the built-in arc cosine function which returns this value in radians.
\param x a double value
\return the arc cosine of the given value in degrees */
AngDeg acosDeg( double x )
{
	if( x >= 1 )
		return ( 0.0 );
	else if( x <= -1 )
		return ( 180.0 );
	
	return ( Rad2Deg( acos( x ) ) );
}

/*! This function returns the principal value of the arc sine of x in degrees
using the built-in arc sine function which returns this value in radians.
\param x a double value
\return the arc sine of the given value in degrees */
AngDeg asinDeg( double x )
{
	if( x >= 1 )
		return ( 90.0 );
	else if ( x <= -1 )
		return ( -90.0 );
	
	return ( Rad2Deg( asin( x ) ) );
}

/*! This function returns a boolean value which indicates whether the value
'ang' (from interval [-180..180] lies in the interval [angMin..angMax].
Examples: isAngInInterval( -100, 4, -150) returns false
isAngInInterval(   45, 4, -150) returns true
\param ang angle that should be checked
\param angMin minimum angle in interval
\param angMax maximum angle in interval
\return boolean indicating whether ang lies in [angMin..angMax] */
bool isAngInInterval( AngDeg ang, AngDeg angMin, AngDeg angMax )
{
	// convert all angles to interval 0..360
	if( ( ang    + 360 ) < 360 ) ang    += 360;
	if( ( angMin + 360 ) < 360 ) angMin += 360;
	if( ( angMax + 360 ) < 360 ) angMax += 360;
	
	if( angMin < angMax ) // 0 ---false-- angMin ---true-----angMax---false--360
		return angMin < ang && ang < angMax ;
	else                  // 0 ---true--- angMax ---false----angMin---true---360
		return !( angMax < ang && ang < angMin );
}

/*! This method returns the bisector (average) of two angles. It deals
with the boundary problem, thus when 'angMin' equals 170 and 'angMax'
equals -100, -145 is returned.
\param angMin minimum angle [-180,180]
\param angMax maximum angle [-180,180]
\return average of angMin and angMax. */
AngDeg getBisectorTwoAngles( AngDeg angMin, AngDeg angMax )
{
	// separate sine and cosine part to circumvent boundary problem
	return VecPosition::normalizeAngle(
		atan2Deg( (sinDeg( angMin) + sinDeg( angMax ) )/2.0,
		(cosDeg( angMin) + cosDeg( angMax ) )/2.0 ) );
}

/*****************************************************************************/
/*******************   CLASS VECPOSITION   ***********************************/
/*****************************************************************************/

/*! Constructor for the VecPosition class. When the supplied
Coordinate System type equals CARTESIAN, the arguments x and y
denote the x- and y-coordinates of the new position. When it
equals POLAR however, the arguments x and y denote the polar
coordinates of the new position; in this case x is thus equal to
the distance r from the origin and y is equal to the angle phi
that the polar vector makes with the x-axis.
\param x the x-coordinate of the new position when cs == CARTESIAN; the
distance of the new position from the origin when cs = POLAR
\param y the y-coordinate of the new position when cs = CARTESIAN; the
angle that the polar vector makes with the x-axis when cs = POLAR
\param cs a CoordSystemT indicating whether x and y denote cartesian
coordinates or polar coordinates
\return the VecPosition corresponding to the given arguments */
VecPosition::VecPosition( double x, double y, CoordSystemT cs )
{
	setVecPosition( x, y, cs );
}

/*! Overloaded version of unary minus operator for VecPositions. It returns the
negative VecPosition, i.e. both the x- and y-coordinates are multiplied by
-1. The current VecPosition itself is left unchanged.
\return a negated version of the current VecPosition */
VecPosition VecPosition::operator - ( )
{
	return ( VecPosition( -m_x, -m_y ) );
}

/*! Overloaded version of the binary plus operator for adding a given double
value to a VecPosition. The double value is added to both the x- and
y-coordinates of the current VecPosition. The current VecPosition itself is
left unchanged.
\param d a double value which has to be added to both the x- and
y-coordinates of the current VecPosition
\return the result of adding the given double value to the current
VecPosition */
VecPosition VecPosition::operator + ( const double &d )
{
	return ( VecPosition( m_x + d, m_y + d ) );
}

/*! Overloaded version of the binary plus operator for VecPositions. It returns
the sum of the current VecPosition and the given VecPosition by adding their
x- and y-coordinates. The VecPositions themselves are left unchanged.
\param p a VecPosition
\return the sum of the current VecPosition and the given VecPosition */
VecPosition VecPosition::operator + ( const VecPosition &p )
{
	return ( VecPosition( m_x + p.m_x, m_y + p.m_y ) );
}

/*! Overloaded version of the binary minus operator for subtracting a
given double value from a VecPosition. The double value is
subtracted from both the x- and y-coordinates of the current
VecPosition. The current VecPosition itself is left unchanged.
\param d a double value which has to be subtracted from both the x- and
y-coordinates of the current VecPosition
\return the result of subtracting the given double value from the current
VecPosition */
VecPosition VecPosition::operator - ( const double &d )
{
	return ( VecPosition( m_x - d, m_y - d ) );
}

/*! Overloaded version of the binary minus operator for
VecPositions. It returns the difference between the current
VecPosition and the given VecPosition by subtracting their x- and
y-coordinates. The VecPositions themselves are left unchanged.

  \param p a VecPosition
  \return the difference between the current VecPosition and the given
VecPosition */
VecPosition VecPosition::operator - ( const VecPosition &p )
{
	return ( VecPosition( m_x - p.m_x, m_y - p.m_y ) );
}

/*! Overloaded version of the multiplication operator for multiplying a
VecPosition by a given double value. Both the x- and y-coordinates of the
current VecPosition are multiplied by this value. The current VecPosition
itself is left unchanged.
\param d the multiplication factor
\return the result of multiplying the current VecPosition by the given
double value */
VecPosition VecPosition::operator * ( const double &d  )
{
	return ( VecPosition( m_x * d, m_y * d  ) );
}

/*! Overloaded version of the multiplication operator for
VecPositions. It returns the product of the current VecPosition
and the given VecPosition by multiplying their x- and
y-coordinates. The VecPositions themselves are left unchanged.

  \param p a VecPosition
\return the product of the current VecPosition and the given VecPosition */
VecPosition VecPosition::operator * ( const VecPosition &p )
{
	return ( VecPosition( m_x * p.m_x, m_y * p.m_y ) );
}

/*! Overloaded version of the division operator for dividing a
VecPosition by a given double value. Both the x- and y-coordinates
of the current VecPosition are divided by this value. The current
VecPosition itself is left unchanged.

  \param d the division factor
  \return the result of dividing the current VecPosition by the given double
value */
VecPosition VecPosition::operator / ( const double &d )
{
	return ( VecPosition( m_x / d, m_y / d  ) );
}

/*! Overloaded version of the division operator for VecPositions. It
returns the quotient of the current VecPosition and the given
VecPosition by dividing their x- and y-coordinates. The
VecPositions themselves are left unchanged.

  \param p a VecPosition
\return the quotient of the current VecPosition and the given one */
VecPosition VecPosition::operator / ( const VecPosition &p )
{
	return ( VecPosition( m_x / p.m_x, m_y / p.m_y ) );
}

/*! Overloaded version of the assignment operator for assigning a given double
value to both the x- and y-coordinates of the current VecPosition. This
changes the current VecPosition itself.
\param d a double value which has to be assigned to both the x- and
y-coordinates of the current VecPosition */
void VecPosition::operator = ( const double &d )
{
	m_x = d;
	m_y = d;
}

/*! Overloaded version of the sum-assignment operator for VecPositions. It
returns the sum of the current VecPosition and the given VecPosition by
adding their x- and y-coordinates. This changes the current VecPosition
itself.
\param p a VecPosition which has to be added to the current VecPosition */
void VecPosition::operator +=( const VecPosition &p )
{
	m_x += p.m_x;
	m_y += p.m_y;
}

/*! Overloaded version of the sum-assignment operator for adding a given double
value to a VecPosition. The double value is added to both the x- and
y-coordinates of the current VecPosition. This changes the current
VecPosition itself.
\param d a double value which has to be added to both the x- and
y-coordinates of the current VecPosition */
void VecPosition::operator += ( const double &d )
{
	m_x += d;
	m_y += d;
}

/*! Overloaded version of the difference-assignment operator for
VecPositions.  It returns the difference between the current
VecPosition and the given VecPosition by subtracting their x- and
y-coordinates. This changes the current VecPosition itself.

  \param p a VecPosition which has to be subtracted from the current
VecPosition */
void VecPosition::operator -=( const VecPosition &p )
{
	m_x -= p.m_x;
	m_y -= p.m_y;
}

/*! Overloaded version of the difference-assignment operator for
subtracting a given double value from a VecPosition. The double
value is subtracted from both the x- and y-coordinates of the
current VecPosition. This changes the current VecPosition itself.

  \param d a double value which has to be subtracted from both the x- and
y-coordinates of the current VecPosition */
void VecPosition::operator -=( const double &d )
{
	m_x -= d;
	m_y -= d;
}

/*! Overloaded version of the multiplication-assignment operator for
VecPositions. It returns the product of the current VecPosition
and the given VecPosition by multiplying their x- and
y-coordinates. This changes the current VecPosition itself.

  \param p a VecPosition by which the current VecPosition has to be
multiplied */
void VecPosition::operator *=( const VecPosition &p )
{
	m_x *= p.m_x;
	m_y *= p.m_y;
}

/*! Overloaded version of the multiplication-assignment operator for
multiplying a VecPosition by a given double value. Both the x- and
y-coordinates of the current VecPosition are multiplied by this
value. This changes the current VecPosition itself.

  \param d a double value by which both the x- and y-coordinates of the
current VecPosition have to be multiplied */
void VecPosition::operator *=( const double &d )
{
	m_x *= d;
	m_y *= d;
}

/*! Overloaded version of the division-assignment operator for
VecPositions. It returns the quotient of the current VecPosition
and the given VecPosition by dividing their x- and
y-coordinates. This changes the current VecPosition itself.

\param p a VecPosition by which the current VecPosition is divided */
void VecPosition::operator /=( const VecPosition &p )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国在线观看| 亚洲色图色小说| 4438亚洲最大| 91精品在线免费观看| 亚洲视频一区在线| 99re成人精品视频| 狠狠狠色丁香婷婷综合激情| 亚洲综合久久av| 国产午夜精品美女毛片视频| 成人动漫一区二区在线| 国产综合色在线视频区| 蜜桃av噜噜一区| 亚洲欧美偷拍卡通变态| 91精品欧美一区二区三区综合在 | 久久九九久精品国产免费直播| 91亚洲资源网| 国产精华液一区二区三区| 激情六月婷婷久久| 韩国精品主播一区二区在线观看 | 自拍偷拍国产亚洲| 国产精品乱码人人做人人爱 | 久久精品国产免费看久久精品| 亚洲午夜一二三区视频| 一级中文字幕一区二区| 国产亚洲女人久久久久毛片| 国产日产欧美一区二区三区| 国产精品国产三级国产aⅴ原创| 国产精品毛片大码女人| 一区av在线播放| 日韩高清在线不卡| 精品一区二区日韩| 大胆亚洲人体视频| 精品视频在线免费观看| 欧美精品高清视频| 欧美成人伊人久久综合网| 日本一区二区视频在线观看| 亚洲最大的成人av| 免费高清在线视频一区·| 国产一区 二区 三区一级| 91天堂素人约啪| 色欧美88888久久久久久影院| 国内精品国产成人国产三级粉色| 午夜精品久久久久久久蜜桃app| 91黄色免费网站| 亚洲成人资源在线| 在线观看一区不卡| 久久精品国产久精国产爱| 亚洲成人av福利| 国产精品毛片a∨一区二区三区 | 国产色产综合色产在线视频| 欧美色视频在线观看| 日韩精品视频网站| 欧美精品一区二区在线观看| 国产欧美一区二区精品忘忧草| 在线电影国产精品| 欧美丰满嫩嫩电影| 亚洲成人精品影院| 日韩中文字幕区一区有砖一区| 一区av在线播放| 久久综合狠狠综合久久综合88| 国产成人在线观看| 国产精品久久久久国产精品日日| 久久亚洲综合色| 欧美色精品在线视频| 91 com成人网| 久久夜色精品国产噜噜av| 成人午夜激情视频| 91在线看国产| 日韩欧美一级在线播放| 日韩午夜小视频| 亚洲大片精品永久免费| 午夜精品爽啪视频| 日韩免费高清电影| 一区二区在线观看不卡| 亚洲日本成人在线观看| 毛片av一区二区三区| 在线不卡的av| 亚洲图片有声小说| 狠狠网亚洲精品| 日韩视频永久免费| 亚洲四区在线观看| av中文一区二区三区| 久久 天天综合| 日本亚洲免费观看| 亚洲激情成人在线| 同产精品九九九| 国产日韩欧美高清在线| 日韩avvvv在线播放| 欧美高清你懂得| 亚洲小说欧美激情另类| 欧美亚一区二区| 亚洲高清一区二区三区| 91久久精品国产91性色tv| 亚洲日本免费电影| 91精品91久久久中77777| 亚洲精品国产视频| 欧美午夜寂寞影院| 亚洲一卡二卡三卡四卡无卡久久| 精品三级在线看| 精品一区在线看| 国产精品少妇自拍| 六月丁香综合在线视频| 欧美三级资源在线| 精品少妇一区二区三区日产乱码| 日韩综合小视频| 色88888久久久久久影院按摩| 中文字幕精品在线不卡| 国产一区二区三区视频在线播放| 日韩精品中文字幕一区二区三区| 麻豆视频一区二区| 日韩欧美一区二区免费| 麻豆视频观看网址久久| 2022国产精品视频| 国产专区综合网| 国产精品久久毛片| 成人动漫一区二区在线| 波多野结衣精品在线| 久久精品水蜜桃av综合天堂| 亚洲电影你懂得| 日韩高清不卡一区二区三区| 高清成人在线观看| 综合网在线视频| 99riav久久精品riav| 亚洲色图在线看| 91久久精品一区二区三区| 亚洲六月丁香色婷婷综合久久| 7777精品伊人久久久大香线蕉完整版 | 国产成人综合亚洲网站| 欧美www视频| 国产成人午夜精品5599| 亚洲三级久久久| 911精品国产一区二区在线| 久久夜色精品国产欧美乱极品| 日韩在线观看一区二区| 欧美日韩色一区| 日本最新不卡在线| 日本一区二区成人| 91首页免费视频| 亚洲国产美女搞黄色| 亚洲精品一区二区精华| 成人一区二区视频| 日本亚洲三级在线| 亚洲自拍偷拍九九九| 亚洲国产成人一区二区三区| 欧美精品久久99| 91视频91自| 国产福利91精品一区| 日韩精品成人一区二区三区| 亚洲色图欧美偷拍| 国产人妖乱国产精品人妖| 欧美一级欧美三级在线观看| 91在线观看美女| 国产成人在线观看免费网站| 天堂蜜桃91精品| 久久精品综合网| 色乱码一区二区三区88| 亚洲高清一区二区三区| 国产亚洲综合在线| 欧美高清dvd| 成人午夜电影小说| 九九热在线视频观看这里只有精品| 亚洲柠檬福利资源导航| 国产亚洲自拍一区| 91精品国产综合久久精品app| 国产精品白丝jk白祙喷水网站| 日本在线播放一区二区三区| 一区二区三区在线观看动漫| 国产欧美视频在线观看| 精品国产一区二区在线观看| 秋霞影院一区二区| 国产精品久久久久影院亚瑟| 久久日韩精品一区二区五区| 日韩视频免费观看高清完整版在线观看| 欧美另类变人与禽xxxxx| 波多野洁衣一区| 偷窥国产亚洲免费视频| 亚洲一区二区三区视频在线| 国产午夜精品久久| 日韩视频免费观看高清完整版| 欧美日韩一区二区欧美激情| 国产91富婆露脸刺激对白| 石原莉奈一区二区三区在线观看| 中文字幕欧美一区| 国产精品高潮呻吟| 国产日韩v精品一区二区| 日韩一区二区视频在线观看| 3d动漫精品啪啪1区2区免费| 成人动漫视频在线| 亚洲一区二区三区四区的| 亚洲精品免费播放| 国产亚洲欧美激情| 久久精品人人做人人综合| 久久久不卡网国产精品一区| 久久久亚洲精华液精华液精华液| 欧美一区二区视频在线观看| 欧美体内she精视频| 欧美亚洲国产一区在线观看网站 | 国产精品久久久久一区二区三区| 国产91清纯白嫩初高中在线观看| 国产精品一级黄|