-
Download Boost and cd to base directory.
-
Create Android toolchains for desired architectures by running a script as below:
NDK=/opt/android-sdk/ndk-bundle/ TOOLCHAINS="$PWD/toolchains/"
rm -rf $TOOLCHAINS
| public static void copyFile(File sourceFile, File destFile, final boolean isOverwrite) throws IOException { | |
| if (destFile.isDirectory()) | |
| destFile = new File(destFile, sourceFile.getName()); | |
| if (destFile.exists()) | |
| { | |
| if (isOverwrite) | |
| destFile.delete(); | |
| else | |
| throw new IOException(destFile.getAbsolutePath() + " exists"); | |
| } |
| /* | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| /* | |
| Copyright (c) 2016, Donald Munro | |
| Permission to use, copy, modify, and/or distribute this software for any | |
| purpose with or without fee is hereby granted, provided that the above | |
| copyright notice and this permission notice appear in all copies. | |
| THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
| WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
| MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| #include <eigen3/Eigen/Dense> | |
| #include <eigen3/Eigen/Eigenvalues> | |
| .. | |
| .. | |
| using RowMatrixXf = Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>; | |
| Eigen::Map<RowMatrixXf> mapped(extended_homograpy.ptr<float>(), homography.rows, homography.cols); | |
| Eigen::EigenSolver<Eigen::MatrixXf> eigen_solve(mapped, true); | |
| auto ev = eigen_solve.eigenvectors(); | |
| std::cout << "No of EigenVectors = " << ev.cols() << std::endl; | |
| for (auto i=0; i<ev.cols(); i++) |
| size_t split(std::string s, std::vector<std::string>& tokens, | |
| std::string delim ="\t\n ") | |
| { | |
| tokens.clear(); | |
| size_t pos = s.find_first_not_of(delim); | |
| while (pos != std::string::npos) | |
| { | |
| size_t next = s.find_first_of(delim, pos); | |
| if (pos == std::string::npos) | |
| tokens.emplace_back(s.substr(pos)); |
| #include <glm/gtx/string_cast.hpp> | |
| .. | |
| .. | |
| glm::mat4 mat; | |
| .. | |
| .. | |
| std::cout << glm::to_string(mat) << std::endl; |
| #include <glm/gtc/type_ptr.hpp> | |
| .. | |
| glm::mat4 m = glm::mat4(1.0f); | |
| .. | |
| auto p = glm::value_ptr(m); | |
| std::cout << sizeof(p) << std::endl; | |
| glUniformMatrix4fv(shader_uniform_m, 1, GL_FALSE, p); |
| # Using javah to generate .h files for Kotlin | |
| # Assuming JNI function calls are in MainActivity.companion | |
| STUDIO=/opt/android-studio | |
| PACKAGE=my.package | |
| $STUDIO/jre/bin/javah -jni -cp "$STUDIO/lib/kotlin-runtime.jar:build/tmp/kotlin-classes/debug" $PACKAGE.MainActivity.Companion |
| #ifndef _BOUNDED_MAP_H | |
| #define _BOUNDED_MAP_H | |
| #include <iostream> | |
| #include <map> | |
| #include <vector> | |
| #include <utility> | |
| /** | |
| * A wrapped std::multimap which limits size by removing the smallest keys first. |