Главная страница
    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.039 c
3-1103347304
slart
2004-12-18 08:21
2005.01.23
SQL+delphi


1-1104922884
vario
2005-01-05 14:01
2005.01.23
В GroupBox надо отследить переполнение Caption


3-1103562474
Ivan_
2004-12-20 20:07
2005.01.23
Не обязательный параметр у хранимой процедуры


4-1102371235
Костинг Хостинг
2004-12-07 01:13
2005.01.23
Поле Description в сервисе как его заполнить при регистрации


14-1104415724
Anton_K
2004-12-30 17:08
2005.01.23
Можно ли воровать куки без Java и ActiveX?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский