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

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

?? geometry.c

?? 機器足球2D比賽程序 對trlen_base_2002的改進
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*Copyright (c) 2000-2002, Jelle Kok, University of AmsterdamAll rights reserved.Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Amsterdam nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*//*! \file Geometry.C<pre><b>File:</b>          Geometry.C<b>Project:</b>       Robocup Soccer Simulation Team: UvA Trilearn<b>Authors:</b>       Jelle Kok<b>Created:</b>       13/02/2001<b>Last Revision:</b> $ID$<b>Contents:</b>      class declarations of different geometry classes:<BR>                       - VecPosition: representation of a point                       - Line:        representation of a line                       - Rectangle:   representation of a rectangle                       - Circle:      representation of a circle                       - Geometry:    different geometry methodsFurthermore it contains some goniometric functions to work with sine, cosineand tangent functions using degrees and some utility functions to returnthe maximum and the minimum of two values.<hr size=2><h2><b>Changes</b></h2><b>Date</b>             <b>Author</b>          <b>Comment</b>12/02/2001       Jelle Kok       Initial version created</pre>*/#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  ) );}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品久久天天躁| 国产乱码精品1区2区3区| 91在线一区二区| 中文字幕av免费专区久久| 成人丝袜视频网| 亚洲激情图片小说视频| 色999日韩国产欧美一区二区| 一区二区三区在线观看国产| 欧美视频一区在线| 久久精品国产99国产精品| 国产亚洲精品中文字幕| av一区二区三区黑人| 亚洲五月六月丁香激情| 日韩一级完整毛片| 成人做爰69片免费看网站| 亚洲欧美aⅴ...| 91精品国产免费| 韩国三级电影一区二区| 自拍偷自拍亚洲精品播放| 欧美丝袜丝交足nylons| 蜜桃一区二区三区在线观看| 国产欧美日产一区| 欧美性视频一区二区三区| 麻豆精品在线播放| 中文字幕中文字幕中文字幕亚洲无线 | 国产天堂亚洲国产碰碰| 91麻豆6部合集magnet| 日本sm残虐另类| 国产无人区一区二区三区| 一本一道久久a久久精品综合蜜臀| 日韩高清欧美激情| 国产精品久久久久7777按摩 | 国产一区不卡视频| 亚洲欧美另类久久久精品2019| 91精品国产麻豆国产自产在线 | 国产精品美女久久久久aⅴ| 欧美四级电影网| 粉嫩av一区二区三区| 亚洲va国产va欧美va观看| xfplay精品久久| 欧美日韩一区中文字幕| www.欧美日韩| 久久精品国产一区二区| 亚洲卡通动漫在线| 久久久久青草大香线综合精品| 欧美日韩一区在线| 成人av资源在线观看| 美女视频一区二区三区| 一区二区三区精品视频在线| 国产日韩欧美麻豆| 欧美成人vr18sexvr| 欧美日韩国产欧美日美国产精品| 国产风韵犹存在线视精品| 午夜精品福利一区二区三区av | 亚洲狠狠爱一区二区三区| 亚洲国产精品成人久久综合一区 | 在线观看中文字幕不卡| 成人va在线观看| 国产黄色成人av| 国精产品一区一区三区mba视频| 一区二区三区四区精品在线视频| 日本一区二区三区在线观看| 亚洲精品一区二区精华| 欧美一区二区三区四区五区 | 色偷偷一区二区三区| 成人黄色av电影| 国产福利一区在线| 极品少妇xxxx偷拍精品少妇| 天天影视涩香欲综合网| 午夜天堂影视香蕉久久| 亚洲电影视频在线| 亚洲国产cao| 亚洲午夜电影在线观看| 亚洲一区二区黄色| 亚洲国产一区二区视频| 亚洲国产成人porn| 亚洲制服丝袜在线| 午夜久久电影网| 三级精品在线观看| 免费成人在线观看视频| 久久国产成人午夜av影院| 蜜臀久久99精品久久久画质超高清| 性欧美疯狂xxxxbbbb| 五月天亚洲精品| 蜜桃久久精品一区二区| 久久精品二区亚洲w码| 国产一区二区在线观看视频| 国产成人精品一区二区三区四区 | 国产69精品久久777的优势| 丰满白嫩尤物一区二区| 成人国产在线观看| 色94色欧美sute亚洲线路一ni | 91亚洲男人天堂| 日本韩国精品在线| 欧美三级电影网| 欧美大片在线观看| 国产精品视频看| 亚洲国产综合人成综合网站| 蜜臀av国产精品久久久久| 国产老女人精品毛片久久| 99久久99久久精品国产片果冻 | 另类小说综合欧美亚洲| 高清成人免费视频| 91亚洲精品乱码久久久久久蜜桃| 精品视频在线免费看| 欧美α欧美αv大片| ...中文天堂在线一区| 亚洲成人一区在线| 国产一区二区三区免费播放| 99re这里只有精品6| 91精品国产品国语在线不卡 | 亚洲另类一区二区| 日韩国产精品久久| 成人黄色小视频| 欧美三级电影在线看| 国产亚洲欧美日韩俺去了| 亚洲精品国产精品乱码不99| 蜜臀va亚洲va欧美va天堂| av资源站一区| 精品欧美一区二区久久| 亚洲三级在线看| 蜜臀久久99精品久久久画质超高清 | 国产精品成人在线观看| 日本不卡一二三区黄网| 不卡的av网站| 日韩精品一区二区三区三区免费 | 欧美日韩黄色影视| 国产欧美一区视频| 日韩精品亚洲专区| 色综合咪咪久久| 国产亚洲人成网站| 免费成人你懂的| 欧美性感一区二区三区| 欧美国产精品专区| 国产在线观看一区二区 | 日韩免费高清视频| 一二三区精品福利视频| 成人av在线网| 久久久亚洲精品石原莉奈| 天天影视网天天综合色在线播放| av一二三不卡影片| 国产欧美一区二区三区网站| 日韩电影免费在线观看网站| 欧美亚洲愉拍一区二区| 国产精品国产三级国产普通话蜜臀 | 欧美一区二区三区影视| 一区二区久久久| 99re在线视频这里只有精品| 国产亚洲综合色| 韩国欧美国产一区| 日韩一区二区精品在线观看| 亚洲午夜影视影院在线观看| 91色综合久久久久婷婷| 国产午夜精品在线观看| 国产一区二区三区观看| 日韩一区二区视频在线观看| 亚洲成年人影院| 欧洲精品中文字幕| 依依成人精品视频| 一本色道久久加勒比精品 | 91官网在线免费观看| 亚洲视频免费在线| 成人综合在线视频| 国产精品妹子av| 99久久国产免费看| 亚洲免费av观看| 欧美在线免费观看视频| 亚洲一区av在线| 欧美三级日韩在线| 日本女优在线视频一区二区| 欧美疯狂做受xxxx富婆| 日韩激情视频在线观看| 51精品秘密在线观看| 青娱乐精品视频| 日韩精品综合一本久道在线视频| 久久99精品久久久久| 久久在线免费观看| 国产成a人亚洲精| 亚洲日本欧美天堂| 欧美日韩亚洲丝袜制服| 免费观看在线综合| 精品国产一区二区精华| 粉嫩久久99精品久久久久久夜| 国产三级久久久| 99精品视频免费在线观看| 亚洲国产一区二区在线播放| 欧美一级片在线看| 国产白丝精品91爽爽久久| 国产精品高潮呻吟久久| 日本福利一区二区| 日本在线播放一区二区三区| 久久五月婷婷丁香社区| 91伊人久久大香线蕉| 午夜精品aaa| 国产欧美一区二区精品忘忧草| 99热在这里有精品免费| 性欧美大战久久久久久久久| 久久香蕉国产线看观看99| 99精品视频中文字幕| 日本美女视频一区二区|