Извините, если этот вопрос был задан ранее. Я действительно не уверен, как его искать.
То, что я пытаюсь сделать, - это создать библиотеку функций для себя, чтобы облегчить жизнь в моей будущей школьной работе. Я создал набор функций, которые обрабатывают объекты, основанные на геометрии, такие как трехмерные векторы, точки и плоскости, а также все связанные с ними методы (точка, крест, масштаб).
Посредством некоторого поиска, я нашел Eigen-библиотеку , которая реализует все, что я хочу, включая множество SSE-компонентов, чтобы сделать это быстро.
Я не понимаю SSE и многое из того, что они делали в этой библиотеке, поэтому я не хочу использовать его в качестве своей библиотеки разработки. Под этим я подразумеваю то, что я хочу кодировать все, используя мои тупые, медленные версии, которые я знаю, как они работают, чтобы я мог убедиться, что я все делаю правильно. Затем, когда я уверен, что математика работает правильно, я бы хотел переключить ее на использование библиотеки Eigen для повышения эффективности.
Есть ли какой-нибудь способ сделать это так, чтобы я мог установить флаг или передать переменную (может быть, что-то из шаблонов?), Чтобы я мог переключать свой код с моих вещей на вещи Eigen без необходимости переписывать мои приложения?
По сути, я хотел бы сделать стандартный интерфейс между двумя библиотеками.
Код библиотеки Eigen будет включен в тот же каталог. У меня был бы Geometry.h, а затем папка Eigen, содержащая всю эту библиотеку.
Я не знаю, как преодолеть пропасть между ними. Нужно ли мне писать методы-обертки для всех их вещей, чтобы у них был общий API?
РЕДАКТИРОВАТЬ ::
Я также должен добавить, что хотел бы, чтобы это было как можно быстрее. Для таких вещей, как точечные, перекрестные и матричные функции, которые можно вызывать много раз, я бы не хотел проходить через виртуальные функции или слишком сложные методы-обертки, которые могли бы негативно повлиять на производительность.
Я слишком много спрашиваю?
END EDIT
Что-то вроде этого - то, что я хочу в действительности. Но я уверен, что это не то, что я хочу.
#ifdef BASIC_LIBRARY
class Vector3
{
float x,y,z;
float dot(Vector3);
}
#endif
#ifdef EIGEN_LIBRARY
//some sort of passthrough to eigen library
#endif