Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Как поделить float   Найти похожие ветки 

 
glGLU ©   (2005-01-09 14:25) [0]

как поделить 2 значения типа float?

var
 Fx: GLfloat;
...
 Fx:= (Panel1.ClientWidth-x)/(x-a);


неправильно считает, почему???


 
Kerk ©   (2005-01-09 14:27) [1]


>  Fx: GLfloat;

что это?


 
glGLU ©   (2005-01-09 14:29) [2]

Kerk ©   (09.01.05 14:27) [1]

GLfloat = float
это тип OpenGL


 
Kerk ©   (2005-01-09 14:30) [3]


> GLfloat = float

что такое float ?


 
glGLU ©   (2005-01-09 14:33) [4]

Double


 
Kerk ©   (2005-01-09 14:36) [5]

ок..
а теперь приведи пример входных данных для
Fx:= (Panel1.ClientWidth-x)/(x-a);
когда оно неправильно считает

имеется ввиду погрешность или оно совсем неправильно считает?


 
glGLU ©   (2005-01-09 14:42) [6]

в общем для движения мыши по форме:


var
 Fx,FCx,Fy,FCy: Double;//GLfloat
...
Fx:= (Panel1.ClientWidth-x)/(x-a);
FCx:= Fx*c;
Fy:= (Panel1.ClientHeight-y)/(y-a);
FCy:= Fy*c;


x,y - координаты положения курсора
a=1
c=-1
------------------------------------
В общем мне нужно перевести координаты окна в интервал [-1;1]


 
glGLU ©   (2005-01-09 14:49) [7]

упс
ошибся
GLfloat = Single


 
Kerk ©   (2005-01-09 14:51) [8]

что-то смотрел я на твою формулу.. и ничего не понял... вот.. набросал свой вариант.. :)
var
 f_half,f_scale,Fx: Double;
...
f_half := 1/form.clientwidth;
f_scale := 2*f_half;
Fx := f_scale*x-f_half;
...


 
glGLU ©   (2005-01-09 14:58) [9]

Kerk ©   (09.01.05 14:51) [8]

а это будет работать,
мне нежно получать значения, например: 0,625 соответст x=35
где х=35 это положение мыши на форме, а 0,625 значение в интервале [-1;1]
только это надо в коде считать а не вручную


 
Kerk ©   (2005-01-09 14:59) [10]

glGLU ©   (09.01.05 14:58) [9]
дык попробуй и узнаешь.. будет работать или нет. :))


 
glGLU ©   (2005-01-09 15:03) [11]

неработает(((


 
Kerk ©   (2005-01-09 15:06) [12]

glGLU ©   (09.01.05 14:58) [9]
проверил... исправленный вариант:
 f_scale := 2/form1.clientwidth;
 Fx := f_scale*(x-form.сlientwidth div 2);
:) вроде работает


 
begin...end ©   (2005-01-09 15:20) [13]

> glGLU

0          X          ClientWidth

|          |          |
|          |          |
|          |          |

-1          Fx         1


Fx = -1 + (1 + 1) * X / (ClientWidth - 0)

begin
 Fx := -1 + 2 * X / ClientWidth
end.


Это решение аналогично [12].

См. также: Яндекс + "линейная интерполяция".
"Читать долго и наизусть" (© ИШ).



Страницы: 1 вся ветка

Текущий архив: 2005.01.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
4-1101833290
Георгий
2004-11-30 19:48
2005.01.23
Создать текстовой файл на десктопе


3-1103354594
Dell3r
2004-12-18 10:23
2005.01.23
Неизвестная


1-1104783753
zt50
2005-01-03 23:22
2005.01.23
Псевдо проводник.


1-1105134985
GEKSHI
2005-01-08 00:56
2005.01.23
DELPHI и HTML


1-1105448371
nap
2005-01-11 15:59
2005.01.23
лексический анализатор