-
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. |