Операции над точками:
- расстояние между точками
Операции над векторами:
- длина
- скалярное произведение
, где n длина проекции вектора
на вектор
- векторное произведение
, где
перпендикуляр к плоскости, которую образуют
и
- сложение векторов
- вычитание векторов
Макрос для использования precompiled headers в CMake + Visual Studio 2008.
macro(USE_PRECOMPILED_HEADER PrecompiledHeader Sources) get_filename_component(HEADER_NAME ${PrecompiledHeader} NAME_WE) set(PrecompiledBinary ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${HEADER_NAME}.pch) set(PrecompiledSource ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${HEADER_NAME}.cpp) set(NEED_UPDATE_HEADER_CPP TRUE) set(PrecompiledData "#include \"${PrecompiledHeader}\"") if (EXISTS ${PrecompiledSource}) file(READ ${PrecompiledSource} HEADER_CPP_DATA_IN) if (NOT ${HEADER_CPP_DATA_IN} STREQUAL ${PrecompiledData}) SET(NEED_UPDATE_HEADER_CPP TRUE) else () SET(NEED_UPDATE_HEADER_CPP FALSE) endif () endif () if (NEED_UPDATE_HEADER_CPP) file(WRITE ${PrecompiledSource} ${PrecompiledData}) endif () set_source_files_properties(${PrecompiledSource} PROPERTIES COMPILE_FLAGS "/Yc${PrecompiledHeader} /Fp${PrecompiledBinary}" OBJECT_OUTPUTS ${PrecompiledBinary} ) set(DUPLICATE_SOURCES ${${Sources}}) set_source_files_properties(${DUPLICATE_SOURCES} PROPERTIES COMPILE_FLAGS "/Yu${PrecompiledBinary} /FI${PrecompiledBinary} /Fp${PrecompiledBinary}" OBJECT_DEPENDS ${PrecompiledBinary} ) source_group(src ${PrecompiledSource}) list(APPEND ${Sources} ${PrecompiledSource}) endmacro(USE_PRECOMPILED_HEADER) |
Использование тривиально:
FILE( GLOB_RECURSE SRC *.cpp ) USE_PRECOMPILED_HEADER("precompiled.h" SRC ) |
UPDATE: Окончательный вариант precompiled headers смотрим здесь.
Для генерация файлов сборки проекта в последнее время пользуюсь замечательной утилитой CMake.
В процессе использования утилиты наткнулся на неприятный баг. Переменная CMAKE_BUILD_TYPE при сборки из под Visual Studio 2008 всегда оказывается пустой, вне зависимости от выбранного типа сборки (Debug, Release, RelWithDebInfo).
Решение проблемы заключается в использовании макроса CMAKE_INSTALL_CONFIG_NAME. Макрос этот хитрый и в документации к CMake вы его не найдете. Он используется только в сгенерированном файле cmake_install.cmake при выполнении цели INSTALL.
Пример использования этого макроса
set( INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/bin/\${CMAKE_INSTALL_CONFIG_NAME}) |
Обратите внимание на обратный слеш после «bin/», он не дает раскрыть макрос до выполнения скрипта cmake_install.cmake, который вызывается из Visual Studio 2008 при компиляции цели INSTALL
Представляю на суд общественности утилиту для создания текстурных атласов из набора изображений.
Утилита написана на питоне мной и моим коллегой, работает исправно до сих пор.
Использование тривиально:
Usage: atlastool.py [options] directory Options: --version show program's version number and exit -h, --help show this help message and exit -v, --verbose verbose output Atlas options: -W MAXWIDTH, --max-width=MAXWIDTH max atlas width [default 2048] -H MAXHEIGHT, --max-height=MAXHEIGHT max atlas height [default 2048] -p PADDING, --padding=PADDING atlas image padding [default 1] -s SORTON, --sort-on=SORTON sort parameter (width or height) [default "height"] --skip-dimension-sum=SKIPDIMENSIONSUM skip images with dimension sum greater then [default 4294967296] -a ALPHATHRESHOLD, --alpha-threshold=ALPHATHRESHOLD alpha threshold for image trimming [default 1] --no-optimize disable atlas size optimization Output options: -f FORMAT, --format=FORMAT output format (ogre, cocos2d, cocos2d-with-path) -o OUTPUTDIRECTORY, --output=OUTPUTDIRECTORY output directory [default "./atlases"] -n OUTPUTNAME, --output-name=OUTPUTNAME output filename [default "atlas"] |
На данный момент поддерживает только png, но при желании можно добавить любой известный формат.