当前位置: 首页>>代码示例>>C++>>正文


C++ CLine::GetStart方法代码示例

本文整理汇总了C++中CLine::GetStart方法的典型用法代码示例。如果您正苦于以下问题:C++ CLine::GetStart方法的具体用法?C++ CLine::GetStart怎么用?C++ CLine::GetStart使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CLine的用法示例。


在下文中一共展示了CLine::GetStart方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Intersects

// =============================================================================
// CLine::Intersects
// Does the given line intersect this line
// Returns the intersection point in a parameter
// -----------------------------------------------------------------------------
bool CLine::Intersects(CLine other, CVector2f *intersectionPoint)
{
    bool theResult = false;
    
    // First check that the lines would intersect if they were infinitely long
    // Use the equation from
    // http://devmag.org.za/2009/04/13/basic-collision-detection-in-2d-part-1/
    float otherDY = other.GetEnd().y - other.GetStart().y;
    float otherDX = other.GetEnd().x - other.GetStart().x;
    float thisDY = mEnd.y - mStart.y;
    float thisDX = mEnd.x - mStart.x;
    
    float denominator = (otherDY * thisDX) - (otherDX * thisDY);
    
    // If this denominator is 0 then the lines are parallel, any other value
    // and the lines would intersect at some point if they were of infinite
    // length
    if (denominator != 0.0f)
    {
        // Find the intersection point and make sure it lies between the start
        // and end of each respective line
        float otherToThisStartY = mStart.y - other.GetStart().y;
        float otherToThisStartX = mStart.x - other.GetStart().x;
        
        float percentageAlongThis =     (
                                            (otherDX * otherToThisStartY)
                                            - (otherDY * otherToThisStartX)
                                        )
                                        / denominator;
        float percentageAlongOther =    (
                                            (thisDX * otherToThisStartY)
                                            - (thisDY * otherToThisStartX)
                                        )
                                        / denominator;
        
        if (percentageAlongThis >= 0.0f
            && percentageAlongThis <= 1.0f
            && percentageAlongOther >= 0.0f
            && percentageAlongOther <= 1.0f)
        {
            // This point lies on both lines so we have an intersection
            theResult = true;
            
            // Populate the intersectinoPoint parameter
            CVector2f offsetToEnd = mDirection * GetLength();
            *intersectionPoint = mStart + (percentageAlongThis * offsetToEnd);
        }
    }
    
    return theResult;
}
开发者ID:sizlo,项目名称:TimGameLib,代码行数:56,代码来源:CLine.cpp

示例2:

// =============================================================================
// Operators
// -----------------------------------------------------------------------------
bool operator == (CLine lhs, CLine rhs)
{
    return lhs.GetStart() == rhs.GetStart() && lhs.GetEnd() == rhs.GetEnd();
}
开发者ID:sizlo,项目名称:TimGameLib,代码行数:7,代码来源:CLine.cpp


注:本文中的CLine::GetStart方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。