Главная страница
    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.044 c
14-1104773912
Aldor_
2005-01-03 20:38
2005.01.23
Обособление интерфейсной части в программе. Способы.


4-1102049336
dr Tr0jan
2004-12-03 07:48
2005.01.23
Недокументированные виды хуков: WH_HARDWARE


14-1104619037
vic_774N
2005-01-02 01:37
2005.01.23
С Новым годом ! А вот вопрос на засыпку ...


1-1104923052
_alex_
2005-01-05 14:04
2005.01.23
Размер ScrollBar


1-1104928831
Кодер
2005-01-05 15:40
2005.01.23
TActionToolBar





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