geometry_8c-source.html
来自「仿真人工智能是指用人工的方法和技术」· HTML 代码 · 共 754 行 · 第 1/5 页
HTML
754 行
00552 <a class="code" href="classVecPosition.html#o1">m_y</a> = dY;00553 <font class="keywordflow">return</font> ( true );00554 }00555 <a name="l00558"></a><a class="code" href="classVecPosition.html#a28">00558</a> <font class="keywordtype">double</font> <a class="code" href="classVecPosition.html#a28">VecPosition::getY</a>( )<font class="keyword"> const</font>00559 <font class="keyword"></font>{00560 <font class="keywordflow">return</font> ( m_y );00561 }00562 <a name="l00572"></a><a class="code" href="classVecPosition.html#a29">00572</a> <font class="keywordtype">void</font> <a class="code" href="classVecPosition.html#a29">VecPosition::setVecPosition</a>( <font class="keywordtype">double</font> dX = 0, <font class="keywordtype">double</font> dY = 0, <a class="code" href="Geometry_8h.html#a19">CoordSystemT</a> cs)00573 {00574 <font class="keywordflow">if</font>( cs == CARTESIAN )00575 {00576 <a class="code" href="classVecPosition.html#o0">m_x</a> = dX;00577 <a class="code" href="classVecPosition.html#o1">m_y</a> = dY;00578 }00579 <font class="keywordflow">else</font>00580 *<font class="keyword">this</font> = <a class="code" href="classVecPosition.html#d0">getVecPositionFromPolar</a>( dX, dY );00581 }00582 <a name="l00589"></a><a class="code" href="classVecPosition.html#a30">00589</a> <font class="keywordtype">double</font> <a class="code" href="classVecPosition.html#a30">VecPosition::getDistanceTo</a>( <font class="keyword">const</font> <a class="code" href="classVecPosition.html">VecPosition</a> p )00590 {00591 <font class="keywordflow">return</font> ( ( *<font class="keyword">this</font> - p ).getMagnitude( ) );00592 }00593 <a name="l00602"></a><a class="code" href="classVecPosition.html#a31">00602</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classVecPosition.html#a31">VecPosition::setMagnitude</a>( <font class="keywordtype">double</font> d )00603 {00604 <font class="keywordflow">if</font>( <a class="code" href="classVecPosition.html#a32">getMagnitude</a>( ) > <a class="code" href="Geometry_8h.html#a0">EPSILON</a> )00605 ( *this ) *= ( d / <a class="code" href="classVecPosition.html#a32">getMagnitude</a>( ) );00606 00607 <font class="keywordflow">return</font> ( *this );00608 }00609 <a name="l00614"></a><a class="code" href="classVecPosition.html#a32">00614</a> <font class="keywordtype">double</font> <a class="code" href="classVecPosition.html#a32">VecPosition::getMagnitude</a>( )<font class="keyword"> const</font>00615 <font class="keyword"></font>{00616 <font class="keywordflow">return</font> ( sqrt( <a class="code" href="classVecPosition.html#o0">m_x</a> * <a class="code" href="classVecPosition.html#o0">m_x</a> + <a class="code" href="classVecPosition.html#o1">m_y</a> * <a class="code" href="classVecPosition.html#o1">m_y</a> ) );00617 }00618 <a name="l00625"></a><a class="code" href="classVecPosition.html#a33">00625</a> <a class="code" href="Geometry_8h.html#a2">AngDeg</a> <a class="code" href="classVecPosition.html#a33">VecPosition::getDirection</a>( )<font class="keyword"> const</font>00626 <font class="keyword"></font>{00627 <font class="keywordflow">return</font> ( <a class="code" href="Geometry_8h.html#a9">atan2Deg</a>( <a class="code" href="classVecPosition.html#o1">m_y</a>, <a class="code" href="classVecPosition.html#o0">m_x</a> ) );00628 }00629 <a name="l00636"></a><a class="code" href="classVecPosition.html#a34">00636</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a34">VecPosition::isInFrontOf</a>( <font class="keyword">const</font> <a class="code" href="classVecPosition.html">VecPosition</a> &p )00637 {00638 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#o0">m_x</a> > p.<a class="code" href="classVecPosition.html#a26">getX</a>( ) ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00639 }00640 <a name="l00646"></a><a class="code" href="classVecPosition.html#a35">00646</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a34">VecPosition::isInFrontOf</a>( <font class="keyword">const</font> <font class="keywordtype">double</font> &d )00647 {00648 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#o0">m_x</a> > d ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00649 }00650 <a name="l00657"></a><a class="code" href="classVecPosition.html#a36">00657</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a36">VecPosition::isBehindOf</a>( <font class="keyword">const</font> <a class="code" href="classVecPosition.html">VecPosition</a> &p )00658 {00659 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#o0">m_x</a> < p.<a class="code" href="classVecPosition.html#a26">getX</a>( ) ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00660 }00661 <a name="l00667"></a><a class="code" href="classVecPosition.html#a37">00667</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a36">VecPosition::isBehindOf</a>( <font class="keyword">const</font> <font class="keywordtype">double</font> &d )00668 {00669 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#o0">m_x</a> < d ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00670 }00671 <a name="l00678"></a><a class="code" href="classVecPosition.html#a38">00678</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a38">VecPosition::isLeftOf</a>( <font class="keyword">const</font> <a class="code" href="classVecPosition.html">VecPosition</a> &p )00679 {00680 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#o1">m_y</a> < p.<a class="code" href="classVecPosition.html#a28">getY</a>( ) ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00681 }00682 <a name="l00688"></a><a class="code" href="classVecPosition.html#a39">00688</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a38">VecPosition::isLeftOf</a>( <font class="keyword">const</font> <font class="keywordtype">double</font> &d )00689 {00690 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#o1">m_y</a> < d ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00691 }00692 <a name="l00699"></a><a class="code" href="classVecPosition.html#a40">00699</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a40">VecPosition::isRightOf</a>( <font class="keyword">const</font> <a class="code" href="classVecPosition.html">VecPosition</a> &p )00700 {00701 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#o1">m_y</a> > p.<a class="code" href="classVecPosition.html#a28">getY</a>( ) ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00702 }00703 <a name="l00709"></a><a class="code" href="classVecPosition.html#a41">00709</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a40">VecPosition::isRightOf</a>( <font class="keyword">const</font> <font class="keywordtype">double</font> &d )00710 {00711 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#o1">m_y</a> > d ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00712 }00713 <a name="l00721"></a><a class="code" href="classVecPosition.html#a42">00721</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a42">VecPosition::isBetweenX</a>( <font class="keyword">const</font> <a class="code" href="classVecPosition.html">VecPosition</a> &p1, <font class="keyword">const</font> <a class="code" href="classVecPosition.html">VecPosition</a> &p2 )00722 {00723 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#a34">isInFrontOf</a>( p1 ) && <a class="code" href="classVecPosition.html#a36">isBehindOf</a>( p2 ) ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00724 }00725 <a name="l00733"></a><a class="code" href="classVecPosition.html#a43">00733</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a42">VecPosition::isBetweenX</a>( <font class="keyword">const</font> <font class="keywordtype">double</font> &d1, <font class="keyword">const</font> <font class="keywordtype">double</font> &d2 )00734 {00735 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#a34">isInFrontOf</a>( d1 ) && <a class="code" href="classVecPosition.html#a36">isBehindOf</a>( d2 ) ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00736 }00737 <a name="l00746"></a><a class="code" href="classVecPosition.html#a44">00746</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a44">VecPosition::isBetweenY</a>( <font class="keyword">const</font> <a class="code" href="classVecPosition.html">VecPosition</a> &p1, <font class="keyword">const</font> <a class="code" href="classVecPosition.html">VecPosition</a> &p2 )00747 {00748 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#a40">isRightOf</a>( p1 ) && <a class="code" href="classVecPosition.html#a38">isLeftOf</a>( p2 ) ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00749 }00750 <a name="l00759"></a><a class="code" href="classVecPosition.html#a45">00759</a> <font class="keywordtype">bool</font> <a class="code" href="classVecPosition.html#a44">VecPosition::isBetweenY</a>( <font class="keyword">const</font> <font class="keywordtype">double</font> &d1, <font class="keyword">const</font> <font class="keywordtype">double</font> &d2 )00760 {00761 <font class="keywordflow">return</font> ( ( <a class="code" href="classVecPosition.html#a40">isRightOf</a>( d1 ) && <a class="code" href="classVecPosition.html#a38">isLeftOf</a>( d2 ) ) ? <font class="keyword">true</font> : <font class="keyword">false</font> );00762 }00763 <a name="l00768"></a><a class="code" href="classVecPosition.html#a46">00768</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classVecPosition.html#a46">VecPosition::normalize</a>( )00769 {00770 <font class="keywordflow">return</font> ( <a class="code" href="classVecPosition.html#a31">setMagnitude</a>( 1.0 ) );00771 }00772 <a name="l00783"></a><a class="code" href="classVecPosition.html#a47">00783</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classVecPosition.html#a47">VecPosition::rotate</a>( <a class="code" href="Geometry_8h.html#a2">AngDeg</a> angle )00784 {00785 <font class="comment">// determine the polar representation of the current VecPosition</font>00786 <font class="keywordtype">double</font> dMag = this-><a class="code" href="classVecPosition.html#a32">getMagnitude</a>( );00787 <font class="keywordtype">double</font> dNewDir = this-><a class="code" href="classVecPosition.html#a33">getDirection</a>( ) + angle; <font class="comment">// add rotation angle to phi</font>00788 <a class="code" href="classVecPosition.html#a29">setVecPosition</a>( dMag, dNewDir, POLAR ); <font class="comment">// convert back to Cartesian</font>00789 <font class="keywordflow">return</font> ( *this );00790 }00791 <a name="l00804"></a><a class="code" href="classVecPosition.html#a48">00804</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classVecPosition.html#a48">VecPosition::globalToRelative</a>( <a class="code" href="classVecPosition.html">VecPosition</a> origin, <a class="code" href="Geometry_8h.html#a2">AngDeg</a> ang )00805 {00806 <font class="comment">// convert global coordinates into relative coordinates by aligning relative</font>00807 <font class="comment">// frame and world frame. First perform translation to make origins of both</font>00808 <font class="comment">// frames coincide. Then perform rotation to make axes of both frames coincide</font>00809 <font class="comment">// (use negative angle since you rotate relative frame to world frame).</font>00810 *<font class="keyword">this</font> -= origin;00811 <font class="keywordflow">return</font> ( <a class="code" href="classVecPosition.html#a47">rotate</a>( -ang ) );00812 }00813 <a name="l00826"></a><a class="code" href="classVecPosition.html#a49">00826</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classVecPosition.html#a49">VecPosition::relativeToGlobal</a>( <a class="code" href="classVecPosition.html">VecPosition</a> origin, <a class="code" href="Geometry_8h.html#a2">AngDeg</a> ang )00827 {00828 <font class="comment">// convert relative coordinates into global coordinates by aligning world</font>00829 <font class="comment">// frame and relative frame. First perform rotation to make axes of both</font>00830 <font class="comment">// frames coincide (use positive angle since you rotate world frame to</font>00831 <font class="comment">// relative frame). Then perform translation to make origins of both frames</font>00832 <font class="comment">// coincide.</font>00833 <a class="code" href="classVecPosition.html#a47">rotate</a>( ang );00834 *<font class="keyword">this</font> += origin;00835 <font class="keywordflow">return</font> ( *this );00836 }00837 <a name="l00847"></a><a class="code" href="classVecPosition.html#a50">00847</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classVecPosition.html#a50">VecPosition::getVecPositionOnLineFraction</a>( <a class="code" href="classVecPosition.html">VecPosition</a> &p,00848 <font class="keywordtype">double</font> dFrac )00849 {00850 <font class="comment">// determine point on line that lies at fraction dFrac of whole line</font>00851 <font class="comment">// example: this --- 0.25 --------- p</font>00852 <font class="comment">// formula: this + dFrac * ( p - this ) = this - dFrac * this + dFrac * p =</font>00853 <font class="comment">// ( 1 - dFrac ) * this + dFrac * p</font>00854 <font class="keywordflow">return</font> ( ( *this ) * ( 1.0 - dFrac ) + ( p * dFrac ) );00855 }00856 <a name="l00865"></a><a class="code" href="classVecPosition.html#d0">00865</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classVecPosition.html#d0">VecPosition::getVecPositionFromPolar</a>( <font class="keywordtype">double</font> dMag, <a class="code" href="Geometry_8h.html#a2">AngDeg</a> ang )00866 {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?