ПрограммированиеСтатьиГрафика

Работа с расширениями OpenGL с использованием NVIDIA OpenGL SDK 5.1. (Часть 4) (4 стр)

Автор:

Другие полезные функции

В заключение обзора библиотеки nv_math приведём список некоторых полезных функций, которые могут заметно облегчить вам жизнь в некоторых случаях.

Линейная интерполяция

Линейная интерполяция осуществляется с использованием функции lerp, которая может интерполировать как скалярные величины, так и векторы. Оба варианта функции имеют следующий вид lerp([величина t в диапазоне от 0 до 1], [граница диапазона 1], [граница диапазона 2]). Фактически функция отображает значения из пользовательского диапазона на диапазон 0..1. Рассмотрим простой пример: пусть у нас имеется текстура 512x512 и нам надо узнать, какому текселю текстуры соответствует координата текстуры (0.15, 0.25). Это можно сделать следующим образом:

int tx=ceil(lerp(0.15, 0, 511));
int ty=ceil(lerp(0.25, 0, 511));

Правда этот пример не совсем корректный, т.к. из-за использования фильтрации текстур каждому пикселю экрана обычно соответствует несколько текселей текстуры.

Геометрические расчеты

В эту группу входят 4 функции: вычисление площади треугольника (nv_area), вычисление периметра треугольника (nv_perimeter), вычисление координат вписанной (nv_find_in_circle) и описанной (nv_find_circ_circle) окружностей и их радиусов. Треугольник задаётся 3-мя вершинами.

Математические функции

Функции приближённого вычисления косинуса угла ffast_cos и fast_cos с максимальными абсолютными погрешностями  1.18*10-3 и 2.3*10-9 соответственно.  Эти функции быстрее стандартной функции cos примерно в 2.14 и 1.47 раз соответственно (так написано в файле nv_algebra.cpp).

Кроме того, в хозяйстве не помешает и функция nv_random, возвращающая случайное число из диапазона -1..1.

Исходный код примеров: ExNV_4.rar (13 kB).

Страницы: 1 2 3 4

#расширения OpenGL, #NVIDIA, #nv_math, #OpenGL, #PBuffer, #SDK, #векторы, #математика

25 февраля 2002 (Обновление: 17 сен 2009)