Форум: "Потрепаться";
Текущий архив: 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