------------------------------------------------------------------------------
| 242 | |
| 243 | //------------------------------------------------------------------------------ |
| 244 | vtkDataArray* vtkAngularPeriodicFilter::TransformDataArray( |
| 245 | vtkDataArray* inputArray, double angle, bool useCenter, bool normalize) |
| 246 | { |
| 247 | vtkDataArray* periodicArray = nullptr; |
| 248 | switch (inputArray->GetDataType()) |
| 249 | { |
| 250 | case VTK_FLOAT: |
| 251 | { |
| 252 | vtkAngularPeriodicDataArray<float>* pArray = vtkAngularPeriodicDataArray<float>::New(); |
| 253 | pArray->SetAxis(this->RotationAxis); |
| 254 | pArray->SetAngle(angle); |
| 255 | if (useCenter) |
| 256 | { |
| 257 | pArray->SetCenter(this->Center); |
| 258 | } |
| 259 | pArray->SetNormalize(normalize); |
| 260 | pArray->InitializeArray(vtkArrayDownCast<vtkFloatArray>(inputArray)); |
| 261 | if (this->ComputeRotationsOnTheFly) |
| 262 | { |
| 263 | periodicArray = pArray; |
| 264 | } |
| 265 | else |
| 266 | { |
| 267 | vtkFloatArray* concrete = vtkFloatArray::New(); |
| 268 | concrete->DeepCopy(pArray); // instantiate the array |
| 269 | periodicArray = concrete; |
| 270 | pArray->Delete(); |
| 271 | } |
| 272 | break; |
| 273 | } |
| 274 | case VTK_DOUBLE: |
| 275 | { |
| 276 | vtkAngularPeriodicDataArray<double>* pArray = vtkAngularPeriodicDataArray<double>::New(); |
| 277 | pArray->SetAxis(this->RotationAxis); |
| 278 | pArray->SetAngle(angle); |
| 279 | if (useCenter) |
| 280 | { |
| 281 | pArray->SetCenter(this->Center); |
| 282 | } |
| 283 | pArray->SetNormalize(normalize); |
| 284 | pArray->InitializeArray(vtkArrayDownCast<vtkDoubleArray>(inputArray)); |
| 285 | if (this->ComputeRotationsOnTheFly) |
| 286 | { |
| 287 | periodicArray = pArray; |
| 288 | } |
| 289 | else |
| 290 | { |
| 291 | vtkDoubleArray* concrete = vtkDoubleArray::New(); |
| 292 | concrete->DeepCopy(pArray); // instantiate the array |
| 293 | periodicArray = concrete; |
| 294 | pArray->Delete(); |
| 295 | } |
| 296 | break; |
| 297 | } |
| 298 | default: |
| 299 | { |
| 300 | vtkErrorMacro("Unknown data type " << inputArray->GetDataType()); |
| 301 | periodicArray = vtkDataArray::CreateDataArray(inputArray->GetDataType()); |
no test coverage detected