Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как поделить float [D7, WinXP]


glGLU ©   (2005-01-09 14:25:00) 

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

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


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


begin...end   (2005-01-09 15:20:00) [1]

> glGLU

0          X          ClientWidth

|          |          |
|          |          |
|          |          |

-1          Fx         1


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

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


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

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


Kerk   (2005-01-09 15:06:00) [2]

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


glGLU   (2005-01-09 15:03:00) [3]

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


Kerk   (2005-01-09 14:59:00) [4]

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


glGLU   (2005-01-09 14:58:00) [5]

Kerk ©   (09.01.05 14:51) [8]

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


Kerk   (2005-01-09 14:51:00) [6]

что-то смотрел я на твою формулу.. и ничего не понял... вот.. набросал свой вариант.. :)
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:49:00) [7]

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


glGLU   (2005-01-09 14:42:00) [8]

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


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]


Kerk   (2005-01-09 14:36:00) [9]

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

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


glGLU   (2005-01-09 14:33:00) [10]

Double


Kerk   (2005-01-09 14:30:00) [11]


> GLfloat = float

что такое float ?


glGLU   (2005-01-09 14:29:00) [12]

Kerk ©   (09.01.05 14:27) [1]

GLfloat = float
это тип OpenGL


Kerk   (2005-01-09 14:27:00) [13]


>  Fx: GLfloat;

что это?


Наверх

Титульная страница Поиск, карта сайта Написать письмо