Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисование линии под углом 
:(
    Опции темы
dimych83
Дата 28.3.2008, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 21.3.2007
Где: Красноярск

Репутация: нет
Всего: нет



Добрый день!

Народ, поделитесь пожалуйста функцией для рисования линии под углом smile
Что-нибудь типа: LineAngle(x: integer; y:integer; length: integer; angle: integer).


Это сообщение отредактировал(а) dimych83 - 28.3.2008, 06:30
PM MAIL ICQ   Вверх
Alexeis
Дата 28.3.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



dimych83, аналитическую геометрию учить нада smile . 
Уравнение прямой 
1) y = k * x + b;
2) y = tg(a) * x + b 
оно же выраженное через начальную и конечную точки

3) (y1 - y) / (y2 - y1) = (x - x1) / (x2 - x1)

Уравнения 2 и 3 позволяют выразить координаты x2, y2 через tg(a) и b. А длинна линии  length не позволяет построить одну кривую, при заданных условиях можно построить более одной прямой, так как длинна length^2 = (x2 - x1)^2 + (y2 - y1)^2 связана с координатами квадратным уравнением 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
dimych83
Дата 28.3.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 21.3.2007
Где: Красноярск

Репутация: нет
Всего: нет



Блин, никогда терпеть не мог математику, ни в школе ни в универе... smile
хорошо хоть по жизни редко с ней сталкиваюсь.
PM MAIL ICQ   Вверх
Bitter
Дата 30.3.2008, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 6
Всего: 27



Alexeis, Зачем так сложно?

Всё гораздо проще!

x2 = sin(angleRad)*length;
y2 = cos(angleRad)*length;

Всё.

Вот функция, возвращающая x2 и y2

Код

function LineAngle(x: integer; y:integer; length: integer; angle: integer):TPoint;
begin
 angle:=angle+90;
 Result.x:=Round(x+sin(angle*Pi/180)*length);
 Result.y:=Round(y+cos(angle*Pi/180)*length);
end;

PM MAIL ICQ Skype   Вверх
Alexeis
Дата 30.3.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Bitter, ну ну, а теперь проверь smile 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bitter
Дата 30.3.2008, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 6
Всего: 27



Проверял. что не так?

вот как ей пользоваться

Код

var p:TPoint;
begin
 Form1.Canvas.MoveTo(200, 200);
 p:=LineAngle(200, 200, 100, 85);
 Form1.Canvas.LineTo(p.x,p.y);


Всё работает как часы...
PM MAIL ICQ Skype   Вверх
dimych83
Дата 31.3.2008, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 21.3.2007
Где: Красноярск

Репутация: нет
Всего: нет



Спасибо большое! 
Правда мне надо чтобы координаты X и Y были центром линии а не началом, но это доработаю... надо просто нарисовать вторую линию с приращением градуса равным 180.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.1478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.