MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ glm_to_matrix()

template<typename T >
Eigen::MatrixXd MayaFlux::Kakshya::EigenAccess::glm_to_matrix ( const std::vector< T > &  vec) const
inlineprivate

Definition at line 208 of file EigenAccess.hpp.

209 {
210 if constexpr (GlmVec2Type<T>) {
211 Eigen::MatrixXd result(2, vec.size());
212 for (Eigen::Index i = 0; i < vec.size(); ++i) {
213 result(0, i) = static_cast<double>(vec[i].x);
214 result(1, i) = static_cast<double>(vec[i].y);
215 }
216 return result;
217 } else if constexpr (GlmVec3Type<T>) {
218 Eigen::MatrixXd result(3, vec.size());
219 for (Eigen::Index i = 0; i < vec.size(); ++i) {
220 result(0, i) = static_cast<double>(vec[i].x);
221 result(1, i) = static_cast<double>(vec[i].y);
222 result(2, i) = static_cast<double>(vec[i].z);
223 }
224 return result;
225 } else if constexpr (GlmVec4Type<T>) {
226 Eigen::MatrixXd result(4, vec.size());
227 for (Eigen::Index i = 0; i < vec.size(); ++i) {
228 result(0, i) = static_cast<double>(vec[i].x);
229 result(1, i) = static_cast<double>(vec[i].y);
230 result(2, i) = static_cast<double>(vec[i].z);
231 result(3, i) = static_cast<double>(vec[i].w);
232 }
233 return result;
234 } else if constexpr (GlmMatrixType<T>) {
235 Eigen::MatrixXd result(16, vec.size());
236 for (Eigen::Index i = 0; i < vec.size(); ++i) {
237 const float* ptr = glm::value_ptr(vec[i]);
238 for (int j = 0; j < 16; ++j) {
239 result(j, i) = static_cast<double>(ptr[j]);
240 }
241 }
242 return result;
243 } else {
244 error<std::invalid_argument>(
247 std::source_location::current(),
248 "Unknown GLM type: {}",
249 typeid(T).name());
250 }
251 }
@ Runtime
General runtime operations (default fallback)
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.

Referenced by to_matrix().

+ Here is the caller graph for this function: