# Reading Arbitrary Transforms, Compute Something if Linear

**URL:** https://discourse.itk.org/t/reading-arbitrary-transforms-compute-something-if-linear/6553
**Category:** Engineering
**Created:** [April 5, 2024, 3:02pm UTC](https://discourse.itk.org/t/reading-arbitrary-transforms-compute-something-if-linear/6553 "2024-04-05T15:02:04Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![cookpa](https://discourse.itk.org/user_avatar/discourse.itk.org/cookpa/32/255_2.png) [@cookpa](https://discourse.itk.org/u/cookpa)
#### Post date: [April 17, 2024, 8:03pm UTC](https://discourse.itk.org/t/reading-arbitrary-transforms-compute-something-if-linear/6553/2 "2024-04-17T20:03:08Z")

</div>

I think the 2D vs 3D instantiation can be solved by templating over dimension.

For determining type, maybe this example would help?

[https://itk.org/Doxygen/html/Examples\_2IO\_2TransformReadWrite\_8cxx-example.html](https://itk.org/Doxygen/html/Examples_2IO_2TransformReadWrite_8cxx-example.html)

```auto
  using ReadCompositeTransformType =
    itk::CompositeTransform<ReadScalarType, Dimension>;
  auto it = transforms->begin();
  if (!strcmp((*it)->GetNameOfClass(), "CompositeTransform"))
  {
    ReadCompositeTransformType::Pointer compositeRead =
      static_cast<ReadCompositeTransformType *>((*it).GetPointer());
    compositeRead->Print(std::cout);
  }

```

---

_[View the full topic](https://discourse.itk.org/t/reading-arbitrary-transforms-compute-something-if-linear/6553)._
