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


C# BoundingBox.Intersect方法代码示例

本文整理汇总了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));
		}
开发者ID:whztt07,项目名称:DeltaEngine,代码行数:6,代码来源:BoundingBoxTests.cs

示例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;
        }
开发者ID:austusross,项目名称:SpaceEngineers,代码行数:34,代码来源:MyVoxelMap.cs

示例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));
		}
开发者ID:whztt07,项目名称:DeltaEngine,代码行数:6,代码来源:BoundingBoxTests.cs


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