# plane.intersectMesh(mesh)

**URL:** <https://forum.babylonjs.com/t/plane-intersectmesh-mesh/37761>\
**Category:** Feature requests\
**Tags:** api\
**Created:** [January 30, 2023, 4:26pm UTC](https://forum.babylonjs.com/t/plane-intersectmesh-mesh/37761 "2023-01-30T16:26:39Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![devAxeon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/devaxeon/32/524_2.png) [@devAxeon](https://forum.babylonjs.com/u/devAxeon)\
**Post date:** [January 30, 2023, 4:26pm UTC](https://forum.babylonjs.com/t/plane-intersectmesh-mesh/37761/1 "2023-01-30T16:26:39Z")

</div>

Hello !

Is it possible to have a method to know if a plane intersect a mesh without having to create a plane mesh ?

Something like:

```auto
plane.intersectMesh(mesh)

```

Instead of:

```auto
const planeMesh = MeshBuilder.CreatePlane(
  'intersectPlane',
  { height: 10000, sourcePlane: plane, width: 10000 },
  scene
)
planeMesh.onAfterRenderObservable.addOnce(() => {
  const result = myMesh.intersectsMesh(planeMesh, true)
  planeMesh.dispose()
  resolve(result)
})

```

Thank you 😉

---

<div class="post-metadata">

**Author:** ![Takemura](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/takemura/32/25836_2.png) [@Takemura](https://forum.babylonjs.com/u/Takemura)\
**Post date:** [January 30, 2023, 4:44pm UTC](https://forum.babylonjs.com/t/plane-intersectmesh-mesh/37761/2 "2023-01-30T16:44:21Z")

</div>

Maybe instead of a plane mesh you can create a mathematical plane and use signedDistanceTo(), to design your own intersectsMesh:

> **[Plane | Babylon.js Documentation](https://doc.babylonjs.com/typedoc/classes/BABYLON.Plane)**
>
> Represents a plane by the equation ax + by + cz + d = 0 \[API\]

Here to follow intersectsMesh of BabylonJS:

> <https://github.com/BabylonJS/Babylon.js/blob/master/packages/dev/core/src/Meshes/abstractMesh.ts#L1663>

Edit: Another idea could be:

```auto
const min = Vector3(1,1,2); // minimum boundingbox of your plane
const max = ...
mesh.getBoundingInfo().boundingBox.intersectsMinMax(min, max);

```

---

<div class="post-metadata">

**Author:** ![devAxeon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/devaxeon/32/524_2.png) [@devAxeon](https://forum.babylonjs.com/u/devAxeon)\
**Post date:** [February 1, 2023, 10:32am UTC](https://forum.babylonjs.com/t/plane-intersectmesh-mesh/37761/3 "2023-02-01T10:32:45Z")

</div>

I finally found how to make it, for those who need it too:

```auto
import { Plane, Mesh, BoundingBox } from '@babylonjs/core'

// From: https://gdbooks.gitbooks.io/3dcollisions/content/Chapter2/static_aabb_plane.html
export const doesPlanIntersectBbox = (plane: Plane, bbox: BoundingBox): boolean => {
  const e = bbox.maximum.subtract(bbox.center)
  const r = e.x * Math.abs(plane.normal.x) + e.y * Math.abs(plane.normal.y) + e.z * Math.abs(plane.normal.z)
  const s = plane.signedDistanceTo(bbox.center)
  return Math.abs(s) <= r
}

export const doesPlanIntersectMesh = (plane: Plane, mesh: Mesh): boolean =>
  doesPlanIntersectBbox(plane, mesh.getBoundingInfo().boundingBox)

export default { doesPlanIntersectBbox, doesPlanIntersectMesh }

```
