| 119 | } |
| 120 | |
| 121 | static float GetCurveLength(const AEGP_StreamValue2& lastValue, const AEGP_StreamValue2& lastOut, |
| 122 | const AEGP_StreamValue2& currentIn, |
| 123 | const AEGP_StreamValue2& currentValue) { |
| 124 | auto startX = static_cast<float>(lastValue.val.three_d.x); |
| 125 | auto startY = static_cast<float>(lastValue.val.three_d.y); |
| 126 | auto startZ = static_cast<float>(lastValue.val.three_d.z); |
| 127 | auto controlX1 = static_cast<float>(startX + lastOut.val.three_d.x); |
| 128 | auto controlY1 = static_cast<float>(startY + lastOut.val.three_d.y); |
| 129 | auto controlZ1 = static_cast<float>(startY + lastOut.val.three_d.z); |
| 130 | auto endX = static_cast<float>(currentValue.val.three_d.x); |
| 131 | auto endY = static_cast<float>(currentValue.val.three_d.y); |
| 132 | auto endZ = static_cast<float>(currentValue.val.three_d.z); |
| 133 | auto controlX2 = static_cast<float>(endX + currentIn.val.three_d.x); |
| 134 | auto controlY2 = static_cast<float>(endY + currentIn.val.three_d.y); |
| 135 | auto controlZ2 = static_cast<float>(endY + currentIn.val.three_d.z); |
| 136 | return GetCubicLength(startX, startY, startZ, controlX1, controlY1, controlZ1, controlX2, |
| 137 | controlY2, controlZ2, endX, endY, endZ); |
| 138 | } |
| 139 | |
| 140 | std::vector<float> GetAverageSpeed(AEGP_StreamRefH streamHandle, int index, int dimensionality) { |
| 141 | const auto& Suites = GetSuites(); |
no test coverage detected