Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2012, 10:13   #51
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
Плохо

1.
Цитата:
Объясняю, что я имел в виду: нет у класса TMouse такого метода или свойства Mouse.CursorPos
А есть Mouse.CursorPos.X / Mouse.CursorPos.Y Правильно?

2.
Цитата:
function GetCursorPos(var Point: TPoint);

и

Код:

GetCursorPos=

Где параметр типа (var Point: TPoint); в Вашем коде?
if Point=SetCursorPos then Edit1.Text:='Начало координат';

3.
Цитата:
Обратите внимание, что Вы в коде пытаетесь сравнить две ПРОЦЕДУРЫ! Причем, что интересно, буквально на предыдущей строчке все используется правильно:

Код:
SetCursorPos(centrX, centrY);
Вариант: как-то по другому нужно сравнение производить. Например, получать X и Y с помощью той же GetCursorPos (точнее - объявить переменную curpos: TPoint и обращаться к свойствам curpos.X,curpos.Y) и сравнивать уже их.
ваще запутался. С этими курсорами.

Код:
if (Mouse.CursorPos.X=centrX) and (Mouse.CursorPos.Y=centrY) then Edit1.Text:='Начало координат';
end;
что то типо того?

Правда, если дописывать else Edit1.clear то не очищается.

Последний раз редактировалось Stilet; 07.11.2012 в 20:13.
Jeraldino74 вне форума Ответить с цитированием
Старый 07.11.2012, 13:51   #52
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

да, типо его

Да и плюньте на Clear, пишите просто: Edit1.text:='';
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 07.11.2012, 19:54   #53
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

А меняю положение курсора, но Edit1 не чистится. (
Jeraldino74 вне форума Ответить с цитированием
Старый 07.11.2012, 20:17   #54
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Очистку эдита надо поместить в Form1MouseMove
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 08.11.2012, 07:50   #55
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

Мне вот теперь интересно, как создать условие:

Координата X = Screen.Widht div 2, а Y = изменяется по 1 пикселю(или не пикселю?) вниз до центра экрана. Если мышка будет на этой линии, то 90градусов.
Аналогично прописать все остальные градусы.

Или я выбрал не лёгкий путь?

Цитата:
Очистку эдита надо поместить в Form1MouseMove
Это как? Если запись идёт button3. Что то не понял.

Последний раз редактировалось Jeraldino74; 08.11.2012 в 07:53.
Jeraldino74 вне форума Ответить с цитированием
Старый 08.11.2012, 09:18   #56
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Координата X = Screen.Widht div 2, а Y = изменяется по 1 пикселю(или не пикселю?) вниз до центра экрана. Если мышка будет на этой линии, то 90градусов.
Это Вы чего-то перемудрили Тут обычная векторная геометрия:

По определению скалярное произведение равно произведению длин векторов на косинус угла между ними (скалярное произведение для двух векторов с координатами (x1; y1) и (x2; y2) вычисляется по формуле: x1x2 + y1y2). Длина вектора, в свою очередь, определяется по Пифагору: l=SQRT(x*x+y*y). Таким образом получаем равенство:

SQRT(x1*x1+y1*y1)*SQRT(x2*x2+y2*y2) *cos(alpha)=x1*x2+y1*y2;

Отсюда не проблема вывести формулу косинуса угла, а взяв от него Арккосинус, получаем сам искомый угол (обратите внимание: в радианах):

alpha=arccos((x1*x2+y1*y2)/(SQRT(x1*x1+y1*y1)*SQRT(x2*x2+y2*y2 ))

Далее переводим из радиан в градусы:

alphagrad=alpha*180/Pi - вот он, наш искомый уголок

Два вектора с координатами у Вас есть: x0 И y0 у обоих будет центр экрана, x1 И y1 - первый вектор (из центра до начальной позиции курсора), x2 и y2 - второй вектор (от центра до конечной позиции курсора).

Цитата:
Это как? Если запись идёт button3. Что то не понял.
Перемещение курсора мыши по форме фиксируется в событии OnMouseMove. Следовательно, если поместить очистку Edit в эту функцию, а не в Button - при перемещении курсора он будет чиститься.

Сорри, немного неточные формулы дал: ведь на форме x0 и y0 будут смещены и не равны 0. Вот правильные формулы:

Код:
    alpha:=arccos(((x1-x0)*(x2-x0)+(y1-y0)*(y2-y0))/(SQRT(SQR(x1-x0)+SQR(y1-y0))*SQRT(SQR(x2-x0)+SQR(y2-y0))));
    ag:=alpha*180/PI;
Я вот тут поэкспериментировал малость, зацените - может пригодится в хозяйстве Код без комментариев, так что разбираться есть в чем.
Надо накликать на форме три точки, угол сам построится и рассчитается.
Вложения
Тип файла: zip MouseAngle.zip (3.8 Кб, 10 просмотров)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Stilet; 09.11.2012 в 23:12.
Sciv вне форума Ответить с цитированием
Старый 09.11.2012, 19:26   #57
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
Радость

Вообщем я запутался. Но получилось, что-то вроде этого. Хотя бы что-то.
Предложите мне, что дополнить, "правильно сделать".

Пока писал сообщение подумал, у меня задача стоит так, чтобы угол исчислять до 150 градусов. Можно вектор (х0,у0; x1,y1) сделать низ экрана. И тогда не получится той ерунды со расчётом угла после 180градусов.
Вложения
Тип файла: rar ПрограммаВращениемышиv_1.rar (163.5 Кб, 7 просмотров)
Jeraldino74 вне форума Ответить с цитированием
Старый 09.11.2012, 20:01   #58
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

У Вас в едите "Скорость мыши" выводится угол

И нет модуля unit1 в папке, а я хотел поглядеть, как там угол рассчитывается. так как чей-то даже при небольшом смещении выдается около 140 градусов - несколько странно, не находите?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 09.11.2012, 20:29   #59
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

Перезалил архив. Новый архив. Посмотрите, Unit Добавил, всё впорядке.

теперь вроде работает. А вы случаем, Sciv не сталкивались с измерением скорости движения мыши по экрану?
Вложения
Тип файла: rar ПрограммаВращениемышиv_1.rar (168.2 Кб, 8 просмотров)
Jeraldino74 вне форума Ответить с цитированием
Старый 09.11.2012, 20:51   #60
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Не сталкивался. Но зато сталкивался с программой "Мышиный спидометр" (она, по-моему, еще со времен 98 винды существует

Да я, до Вас, и с углом поворота мыши не сталкивался

Разъясните-ка мне лучше вот этот код:

Код:
  x0:=(Screen.Width) div 2;
  y0:=(Screen.Height) div 1;
  x1:=(Screen.Width) div 1;
  y1:=(Screen.Height) div 1;
а то я чего-то совсем не втыкаю, зачем это. Особенно те, которые div 1, так как деление на единицу всегда даст само число, независимо от того, будет это div или /

И еще обратите внимание: не стоит привязывать рассчет угла к кнопке на форме, так как тогда курсор будет (всегда, заметьте!) в районе этой кнопки. Лучше уж тогда к правой/средней кнопе самой мыши это привязать.

P.S. Чтобы замерить скорость мышки, нужно вводить еще компонент Timer и определять, сколько пикселей прошла мышка в секунду - то есть на событие Timer1OnTimer навешать измерение длины вектора между начальной и конечной координатой мыши ((x1;y1) и (x2;y2)) по вышеуказанной формуле - вот тебе и вся скорость по моему разумению.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 09.11.2012 в 21:31.
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
датчик случайных чисел Наталия 555 Общие вопросы C/C++ 3 31.03.2011 13:58
Датчик случайных чисел Ksy JavaScript, Ajax 0 07.02.2011 23:10
Мышка как датчик вращения loader-ua Фриланс 7 19.11.2009 00:01
Мышка как датчик вращения loader-ua Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 15.11.2009 17:22