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

Вниз

Вопрос про определение градуса с картинкой.   Найти похожие ветки 

 
Феликс ©   (2004-04-04 23:23) [0]

Один мой знакомый, не разбирающийся в Делфи попросил меня плохо разбирающегося в Делфи выполнить следующую задачу:
При нажатии кнопки "вверх" линия АВ поднимается вверх и соответсвенно угол между горизонтом (он выделен красным цветом) и линией АВ увеличивается.  
При нажатии кнопки "вниз" линия АВ опускается вниз к горизонту и соответсвенно угол между ними уменьшается также.
Вопрос в том, что необходимо программно найти градус между линией АВ и горизонтом (на рисунке угол альфа). Красная линия (горизонт) является виртуальной линией и не прорисовывается на форме.
Из известных данных есть только координаты точки b (она базовая и не меняется) и точки а (а вот она меняется в зависимости от того поднимается прямая АВ или опускается относительно горизонта).
Прилгаю ссылку ( http://www.xatka.vov.ru/f.gif ), на которой изображена вся ситуация. Еще раз скажу, что задача узнать угол альфа с учетом имеющихся данных (координат 2 точек).

Заранее благодарен и очень сильно нужен исходник.


 
Кулясов ©   (2004-04-05 00:35) [1]

По рисунку:

sin альфа = abs(a.y-b.y) div sqrt(sqr(abs(a.y-b.y)) + sqr(abs(a.x-b.x)))


 
Stratos ©   (2004-04-05 02:28) [2]

эээ
alpha:= arctan(abs(a.y-b.y)/abs(a.x-b.x));


 
Nous Mellon ©   (2004-04-05 06:45) [3]


>  [1] Кулясов ©   (05.04.04 00:35)

Таких совпадений Имени и фамилии не бывает. Да еще и города.. может это я вчера ночью написал или кто подкалывает...


 
Nous Mellon ©   (2004-04-05 06:51) [4]


> Таких совпадений Имени и фамилии не бывает. Да еще и города..
> может это я вчера ночью написал или кто подкалывает...

господи боже у нас еще и образование одинаковое... у меня наверно раздвоение личности...


 
тихий вовочка ©   (2004-04-05 07:18) [5]

Дело не в в знании или незнании Delphi, тут просто кто-то про функцию арктангенса никогда не слышал.
Когда-то передо мной стояла задача определения угла, между точкой где мышкой кликнули и полярной диаграммой. Делал это так:
{X,Y - координаты мыши(точки а в вашем случае}
{center,center - координаты центра(точки б в вашем случае}

var
x,y,Angle : real;
begin
x:=X-center;
y:=center-Y;

if(x=0) then Angle:=90
else
begin
Angl:e=RadToDeg(atan(y/x));
if(x<=0)then Angle:=Angle+180 else
if(y<0)then Angle:=Angle+360;
end;

ShowMessage("angle="+FloatToStrF(Angle,ffFixed,3,1)+ deg, RCS="+FloatToStrF(x+pMin,ffFixed,3,1)+" dB");


 
Феликс ©   (2004-04-05 21:04) [6]

Господа, большое спасибо за ваши ответы... особые благодарности участникам с никами:
тихий вовочка
Nous Mellon
Stratos
Кулясов
Еще раз спасибо.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
6-1077772026
AloneAli
2004-02-26 08:07
2004.04.25
Как получить уведомление о доставке письма


14-1080903473
sniknik
2004-04-02 14:57
2004.04.25
Прикол если кто не видел ;о)


1-1081603595
Ilg
2004-04-10 17:26
2004.04.25
Максимальное количество строк в Memo


1-1081428225
Russko
2004-04-08 16:43
2004.04.25
Копирование каталога


14-1080798965
MBo
2004-04-01 09:56
2004.04.25
Тенденции...





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