Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Как поделить 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.048 c
1-1105555584
chir
2005-01-12 21:46
2005.01.23
Как добавить кнопку в StatusBar?


1-1105011356
Viola
2005-01-06 14:35
2005.01.23
Получить текст от символа < до ... над котрым находиться курсор


14-1104509367
Константинов
2004-12-31 19:09
2005.01.23
Сеть своими руками.


14-1104571070
Меломан
2005-01-01 12:17
2005.01.23
Sweetbox - Shout


4-1102255887
MAINUSER
2004-12-05 17:11
2005.01.23
Проблема с FILE_NOTIFY_INFORMATION





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский