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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2017, 14:37   #31
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Просто угол пересчитывается относительно оси Y вверх направленной
не совсем понимаю, зачем это делать, если градусы в результате отображаются неправильно.
BLACK_RAIN вне форума Ответить с цитированием
Старый 08.11.2017, 14:47   #32
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
не совсем понимаю, зачем это делать, если градусы в результате отображаются неправильно.
наоборот, после преобразования они отражаются правильно.

погуглите Тригонометрический круг

вот, например,
trigonometr.jpg
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2017, 14:58   #33
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Тогда почему если двигать объект под углом 45гр. он двигается вправо вниз, а не вправо вверх?
или например, код из первого поста
Код:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  inc(n,2);
  if n>=360 then
  n := 0;
  Canvas.FillRect(ClientRect);
  DrawAngle(Width div 2, Height div 2, 100, n);
end;

procedure TForm1.DrawAngle(x,y,radius, angle : Integer);
begin
  Canvas.MoveTo(x,y);
  Canvas.Ellipse(x-radius,y-radius,x+radius,y+radius);
  Canvas.LineTo(Round(x + Cos(angle/180*pi)*radius),
                          Round(y + Sin(angle/180*pi)*radius));
end;
если n=90, то линия рисуется вниз от центра.
выходит, код неправильный?
BLACK_RAIN вне форума Ответить с цитированием
Старый 08.11.2017, 16:48   #34
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
выходит, код неправильный?
и код правильный и круг верный.
Суть в том, что на протяжении многих постов Вам пытаются втолковать то, что экранные координаты (направление оси Y, в частности) отличается от общепринятых в математике.
Поэтому и нужно осуществлять преобразование, чтобы скрыть от пользователя программы эту разницу. С его точки зрения представленная на экране система координат должна (и соответствует) общепринятой.
А программист для этого осуществляет преобразование - для рисования используется один код (один угол), а для выдачи пользователю - другой, преобразованный.

Так понятней?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить взаимное расположение точки с координатами (x_0,y_0) и окружности радиуса R с центром в точке (x_1,y_1). С# :) OlgaRostov C# (си шарп) 3 24.09.2015 20:26
Нарисовать линию на картинке spirit-ua PHP 13 02.07.2015 09:30
Найти взаимное расположение окружности радиуса R с центром в точке (x0, y0) и точки А с координатами (x1, y1). Dimazde Паскаль, Turbo Pascal, PascalABC.NET 1 10.12.2013 08:58
Нужно изменить на языке C++ Найти такую точку, что шар радиуса R с центром в этой точке, содержит min число точек заданного мн-ва. Alexandr95 Помощь студентам 0 26.05.2013 19:55