Главная страница
    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.034 c
6-1077702231
_shark
2004-02-25 12:43
2004.04.25
Подскажите, создаю сервис и в нем TServerSocket соединится то


1-1081429735
}|{yk
2004-04-08 17:08
2004.04.25
Плагины - изучение


1-1081240057
York
2004-04-06 12:27
2004.04.25
Процедура поиска


14-1081146561
Rouse_
2004-04-05 10:29
2004.04.25
Глюк со звуковухой


3-1080585053
Крутыш
2004-03-29 22:30
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский