本文整理汇总了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;
}
示例2:
// =============================================================================
// Operators
// -----------------------------------------------------------------------------
bool operator == (CLine lhs, CLine rhs)
{
return lhs.GetStart() == rhs.GetStart() && lhs.GetEnd() == rhs.GetEnd();
}