-
Originally posted by Maxix
2 vosxod
если нужно могу подсказать.
я такое сделал для контроллера...
делал линейной апроксимацией отрезков (их количество определяет точность) 16 мне показалось достаточно.
простейший способ
берется линейная характеристика и кривая в которую хочется перейти режутся на отрезки и для каждого расчитываются коэффициенты преобразования.
потом каждое измерение смотрится в какой диапазон попало и по табличке пересчитывается.
подменить табличку на лету сам понимаешь без проблем...
Вот реализация кривой отклика из NewView:
function YfromX(X: Double): Double;
var
A,B:double;
I:Integer;
begin
// X = 0..1
// result = 0..1
I := Trunc(ABS(X* 10));
if I > 10 then I := 10;
A := CurveValues[I];
if I=10 then
B := A
else
B := CurveValues[I+1];
result:=A+((B-A)*Frac(ABS(X*10)));
end;
Координаты нужно домножить на вызов этой функции с параметром, равным доли оси от максимума:
X := X * YfromX( X / XMax );
В глобальном для функции массиве содержится кривая отклика в формате 0..1..много:
CurveValues :array [0..10] of Double; // Кривая сглаживания
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума