本文整理汇总了C#中Ray.Intersect方法的典型用法代码示例。如果您正苦于以下问题:C# Ray.Intersect方法的具体用法?C# Ray.Intersect怎么用?C# Ray.Intersect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Ray
的用法示例。
在下文中一共展示了Ray.Intersect方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LineSegmentIntersectsPlane
/// <summary>
/// Determines the intersection of a line segment between v1 and v2 and the given plane.
/// Returns false if the plane is outside the line segment or parallel to it.
/// </summary>
public static bool LineSegmentIntersectsPlane(Vector3 v1, Vector3 v2, Plane plane, out Vector3 pos)
{
var vector = v2 - v1;
var direction = Vector3.Normalize(vector);
var ray = new Ray(v1, direction);
var dist = ray.Intersect(plane);
if (!float.IsNaN(dist) && dist * dist < vector.LengthSquared())
{
pos = ray.Position + (ray.Direction * dist);
return true;
}
pos = Vector3.Zero;
return false;
}
示例2: ClosestPointToPlane
/// <summary>
/// Determines the closest point on the ray from v1 to v2 and the given plane.
/// Returns false if the plane is parallel to the line.
/// </summary>
public static bool ClosestPointToPlane(Vector3 v1, Vector3 v2, Plane plane, out Vector3 pos)
{
var direction = v2 - v1;
var ray = new Ray(v1, direction);
var dist = ray.Intersect(plane);
if (!float.IsNaN(dist))
{
// clamp between 0 and 1
dist = MathUtil.ClampMinMax(dist, 0, 1);
pos = ray.Position + (direction * dist);
return true;
}
pos = Vector3.Zero;
return false;
}