# Tangent plane to a centerline

**URL:** <https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778>\
**Category:** Support\
**Created:** [November 24, 2021, 4:20pm UTC](https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778 "2021-11-24T16:20:34Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![bserrano](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/bserrano/32/17034_2.png) [@bserrano](https://discourse.slicer.org/u/bserrano)\
**Post date:** [November 24, 2021, 4:20pm UTC](https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778/1 "2021-11-24T16:20:34Z")

</div>

Is there any way to obtain planes tangent to a centerline?

Thanks

---

<div class="post-metadata">

**Author:** ![bserrano](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/bserrano/32/17034_2.png) [@bserrano](https://discourse.slicer.org/u/bserrano)\
**Post date:** [November 25, 2021, 3:54pm UTC](https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778/2 "2021-11-25T15:54:43Z")

</div>

is it possible to obtain tangent planes to a centerline in a similar way that perpendicular plane when using cross-section analysis?

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [November 25, 2021, 9:23pm UTC](https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778/3 "2021-11-25T21:23:21Z")

</div>

I’ve added a second (“longitudinal”) slice to Cross-section analysis module in SlicerVMTK extension. It will be available for the Slicer Preview Release tomorrow.

Alternatively, you can use the Endoscopy module to create a reslicing transform along a curve. That transform can be used for driving a slice view (normal and tangent directions), using “Volume reslice driver” module in SlicerIGT extension.

---

<div class="post-metadata">

**Author:** ![bserrano](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/bserrano/32/17034_2.png) [@bserrano](https://discourse.slicer.org/u/bserrano)\
**Post date:** [November 26, 2021, 12:00pm UTC](https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778/5 "2021-11-26T12:00:00Z")

</div>

Thanks for the addition of the longitudinal view. I am trying to get orthogonal planes, but “axial” and “long” planes are not so by default. I can manage to adjust the longitudinal plane manually to obtain a perpendicular plane but is there any way to obtain orthogonal planes automatically?

Is it possible to avoid “endoscopic 3d view” in Endoscopy module? So I can view where the plane is instead of going inside?  
Example: this view

![imagen](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/6/0/60c16e47cd06e8b014b2aefda4e9f6a73c3b971d.png)

Many thanks 😃

---

<div class="post-metadata">

**Author:** ![bserrano](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/bserrano/32/17034_2.png) [@bserrano](https://discourse.slicer.org/u/bserrano)\
**Post date:** [November 29, 2021, 8:40am UTC](https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778/6 "2021-11-29T08:40:26Z")

</div>

Regarding avoidind endoscopy 3d view: Already done that deleting the current camera in module “cameras”.

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [November 29, 2021, 2:01pm UTC](https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778/7 "2021-11-29T14:01:28Z")

</div>

> [@bserrano](#):
>
> Thanks for the addition of the longitudinal view. I am trying to get orthogonal planes, but “axial” and “long” planes are not so by default.

The views are always orthogonal and longitudinal (tangential), the additional sliders are just for specifying the additional degrees of freedoms for rotations (orientation of the view up vector in slice view and rotation of the curve normal vector).

Depending on the resolution of the input image and radius of the extracted vessel, the centerline may be noisy. You can fix that by resampling the curve with less control points (10-20?) in Markups module’s Resample section.

> [@bserrano](#):
>
> Is it possible to avoid “endoscopic 3d view” in Endoscopy module? So I can view where the plane is instead of going inside?

You can go to Cameras module, create a new camera, and then choose this new camera in Endoscopy module. This will effectively disable the camera animation, because the new camera is not used in any 3D view,

---

<div class="post-metadata">

**Author:** ![bserrano](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/bserrano/32/17034_2.png) [@bserrano](https://discourse.slicer.org/u/bserrano)\
**Post date:** [June 5, 2025, 6:53am UTC](https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778/8 "2025-06-05T06:53:18Z")

</div>

> [@lassoan](#):
>
> The views are always orthogonal and longitudinal (tangential), the additional sliders are just for specifying the additional degrees of freedoms for rotations (orientation of the view up vector in slice view and rotation of the curve normal vector).

Hi,

I’ve been working with planes that are perpendicular and tangential (longitudinal) to a centerline in Slicer.

I understand that the views are always orthogonal and tangential to the centerline, and that additional sliders control degrees of freedom like the rotation of the curve’s normal vector.

My question is: How does Slicer determine the orientation of the tangential plane when the rotation angle is set to 0°?

Specifically, how does it know how to align the up vector or normal to separate, for example, a vessel into superior and inferior zones in a consistent way? (see figure)

 ![imagen](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/f/e/fe3e8c164d00c26f60dadea65067371c9b288e51.jpeg)

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [June 7, 2025, 3:06pm UTC](https://discourse.slicer.org/t/tangent-plane-to-a-centerline/20778/9 "2025-06-07T15:06:02Z")

</div>

Establishing a stable and consistent curve coordinate system is a complex task, but thanks to contributions by VMTK and Slicer developers, the [vtkParallelTransportFrame](https://github.com/Slicer/vtkAddon/blob/main/vtkParallelTransportFrame.h) class has been developed that solves this very nicely.

For tangential plane you need two axis directions. One is the curve’s tangent vector, which is trivial to compute. The other is the curve normal, which is the hard task, because it has to be orthogonal to the curve at every point and change smoothly along the curve. This is computed by the parallel transport frame algorithm, starting from an initial normal (or binormal) direction specified by `PreferredInitialNormalVector` (or `PreferredInitialBinormalVector` properties). You can get the parallel transport frame object from the curve node by calling `GetCurveCoordinateSystemGeneratorWorld()`.
