本文整理汇总了C#中BoundingBox.Intersect方法的典型用法代码示例。如果您正苦于以下问题:C# BoundingBox.Intersect方法的具体用法?C# BoundingBox.Intersect怎么用?C# BoundingBox.Intersect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BoundingBox
的用法示例。
在下文中一共展示了BoundingBox.Intersect方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MissBoundingBoxWithRayFromBehind
public void MissBoundingBoxWithRayFromBehind()
{
var boundingBox = new BoundingBox(Vector3D.One * -0.5f, Vector3D.One * 0.5f);
var ray = new Ray(Vector3D.UnitY * 2.0f, Vector3D.UnitY);
Assert.IsNull(boundingBox.Intersect(ray));
}
示例2: GetVoxelContentInBoundingBox
public float GetVoxelContentInBoundingBox(BoundingBox worldAabb, out float cellCount)
{
Debug.Assert(Thread.CurrentThread == MySandboxGame.Static.UpdateThread);
cellCount = 0;
float result = 0;
Vector3I minCorner = GetVoxelCoordinateFromMeters(worldAabb.Min - MyVoxelConstants.VOXEL_SIZE_IN_METRES);
Vector3I maxCorner = GetVoxelCoordinateFromMeters(worldAabb.Max + MyVoxelConstants.VOXEL_SIZE_IN_METRES);
FixVoxelCoord(ref minCorner);
FixVoxelCoord(ref maxCorner);
m_storageCache.Resize(ref minCorner, ref maxCorner);
Storage.ReadRange(m_storageCache, true, false, 0, ref minCorner, ref maxCorner);
BoundingBox voxelBox;
Vector3I coord, cache;
for (coord.Z = minCorner.Z, cache.Z = 0; coord.Z <= maxCorner.Z; coord.Z++, cache.Z++)
{
for (coord.Y = minCorner.Y, cache.Y = 0; coord.Y <= maxCorner.Y; coord.Y++, cache.Y++)
{
for (coord.X = minCorner.X, cache.X = 0; coord.X <= maxCorner.X; coord.X++, cache.X++)
{
GetVoxelBoundingBox(ref coord, out voxelBox);
if (worldAabb.Intersects(voxelBox))
{
float content = m_storageCache.Content(ref cache) / MyVoxelConstants.VOXEL_CONTENT_FULL_FLOAT;
float containPercent = worldAabb.Intersect(voxelBox).Volume() / MyVoxelConstants.VOXEL_VOLUME_IN_METERS;
result += content * containPercent;
cellCount += containPercent;
}
}
}
}
return result;
}
示例3: IntersectBoundingBoxWithRay
public void IntersectBoundingBoxWithRay()
{
var boundingBox = new BoundingBox(Vector3D.One * -0.5f, Vector3D.One * 0.5f);
var ray = new Ray(Vector3D.UnitY * 2.0f, -Vector3D.UnitY);
Assert.AreEqual(new Vector3D(0.0f, 0.5f, 0.0f), boundingBox.Intersect(ray));
}