# Using vtkArrayCalculator to get a Vector Field from three Scalars (C++)

**URL:** https://discourse.vtk.org/t/using-vtkarraycalculator-to-get-a-vector-field-from-three-scalars-c/6400
**Category:** Support
**Created:** [August 17, 2021, 12:14pm UTC](https://discourse.vtk.org/t/using-vtkarraycalculator-to-get-a-vector-field-from-three-scalars-c/6400 "2021-08-17T12:14:33Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Tees](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/t/74df32/32.png) [@Tees](https://discourse.vtk.org/u/Tees)
#### Post date: [August 17, 2021, 12:14pm UTC](https://discourse.vtk.org/t/using-vtkarraycalculator-to-get-a-vector-field-from-three-scalars-c/6400/1 "2021-08-17T12:14:33Z")

</div>

I have a vti Data with three Scalar Arrays and I am stuck, this is what I have done so far:

xmlImageDataReader-\>SetFileName(sFilename.c\_str());  
xmlImageDataReader-\>Update();

imageDataGeometryFilter-\>SetInputConnection(xmlImageDataReader-\>GetOutputPort());  
imageDataGeometryFilter-\>Update();  
imageDataGeometryFilter-\>GetOutput()-\>GetPointData()-\>GetArray(0)-\>SetName(“u”);  
imageDataGeometryFilter-\>GetOutput()-\>GetPointData()-\>GetArray(1)-\>SetName(“v”);  
imageDataGeometryFilter-\>GetOutput()-\>GetPointData()-\>GetArray(2)-\>SetName(“w”);  
imageDataGeometryFilter-\>Update();

arrayCalc-\>AddScalarArrayName(“u”);  
arrayCalc-\>AddScalarArrayName(“v”);  
arrayCalc-\>AddScalarArrayName(“w”);

arrayCalc-\>SetResultArrayName(“Vector”);  
arrayCalc-\>SetFunction(“u_iHat+v_jHat+w\*kHat”);

After that I wanted to add the Vector array and set it as active.

I would appreciate any help!  
Thanks in advance

---

<div class="post-metadata">

### Author: ![will.schroeder](https://discourse.vtk.org/user_avatar/discourse.vtk.org/will.schroeder/32/233_2.png) [@will.schroeder](https://discourse.vtk.org/u/will.schroeder)
#### Post date: [August 17, 2021, 12:18pm UTC](https://discourse.vtk.org/t/using-vtkarraycalculator-to-get-a-vector-field-from-three-scalars-c/6400/2 "2021-08-17T12:18:38Z")

</div>

Check out Filters/General/vtkMergeVectorComponents.h - I think it’ll do what you want.

---

<div class="post-metadata">

### Author: ![Tees](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/t/74df32/32.png) [@Tees](https://discourse.vtk.org/u/Tees)
#### Post date: [August 17, 2021, 3:19pm UTC](https://discourse.vtk.org/t/using-vtkarraycalculator-to-get-a-vector-field-from-three-scalars-c/6400/3 "2021-08-17T15:19:51Z")

</div>

I get this Error Message if I try to include it:“vtkMergeVectorComponents.h”: No such file or directory.

But it seems that is excactly what i would need.

---

<div class="post-metadata">

### Author: ![Tees](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/t/74df32/32.png) [@Tees](https://discourse.vtk.org/u/Tees)
#### Post date: [August 17, 2021, 3:34pm UTC](https://discourse.vtk.org/t/using-vtkarraycalculator-to-get-a-vector-field-from-three-scalars-c/6400/4 "2021-08-17T15:34:46Z")

</div>

![ParaCalc](https://discourse.vtk.org/uploads/default/original/2X/a/a0d0297473ec6f514a45c05e281acc3600d295c1.png)

I want this as my result, so i can add Glyphfilter and Streamlinefilter in VTK.

Thank you for your fast reply

---

<div class="post-metadata">

### Author: ![Tees](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/t/74df32/32.png) [@Tees](https://discourse.vtk.org/u/Tees)
#### Post date: [August 17, 2021, 6:44pm UTC](https://discourse.vtk.org/t/using-vtkarraycalculator-to-get-a-vector-field-from-three-scalars-c/6400/5 "2021-08-17T18:44:22Z")

</div>

I got the vector I wanted with the following line: dataArray=arrayCalc-\>GetDataSetOutput()-\>GetPointData()-\>GetArray(“Vector”);
