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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно построить вектора и их суммарный вектор, Помогите (плиз) срочно!!! 
:(
    Опции темы
Гость_Mad
Дата 20.10.2004, 16:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Задаётся длинна и угол
  Вверх
p0s0l
Дата 20.10.2004, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



В чём: в паскале или Delphi ?


--------------------
С уважением, г-н Посол.
PM   Вверх
Гость_Mad
Дата 20.10.2004, 16:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











В Delphi
  Вверх
Гость_Mad
Дата 20.10.2004, 16:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Желательно с использованием компонента TChart :stena
  Вверх
p0s0l
Дата 20.10.2004, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Вытаскиваешь на форму TChart, два раза кликаешь по нему, в закладке "Series" жмешь Add, выбираешь "Arrow".
Опиши вырисовываемые вектора:
Код
type
 TVector = record
   Len, Angle : real;
 end;

var Vectors : array [0..5] of TVector =
 ( (Len : 5; Angle : pi/3),
   (Len : 6; Angle : 0.01),
   (Len : 3; Angle : pi/2),
   (Len : 4; Angle : pi/4),
   (Len : 5; Angle : 0.5),
   (Len : 8; Angle : pi/2) );

И на кнопку, к примеру, повесь обрабочик:
Код
procedure TForm1.Button1Click(Sender: TObject);
var
 x, y, x1, y1 : real;
 i : integer;

begin
 x := 0;
 y := 0;

 Series1.Clear;
 for i := Low(Vectors) to High(Vectors) do
 with Vectors[i] do
 begin
   x1 := x + cos(Angle)*Len;
   y1 := y + sin(Angle)*Len;
   Series1.AddArrow(x, y, x1, y1, '', clRed);
   x := x1;
   y := y1;
 end;
 Series1.AddArrow(0, 0, x, y, '', clGreen);

 Chart1.ClipPoints := False;
end;




--------------------
С уважением, г-н Посол.
PM   Вверх
Spanishmad
Дата 20.10.2004, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо!
Я конечно не профи в Delphi, но не будет такой же проблемы как и у меня, он строит вектор с нормальным углом (от 1 до 89) тоолько в 1 четверти и если задать другой угол то он строит не понять где и почему (не логично). :qstn
PM MAIL   Вверх
p0s0l
Дата 20.10.2004, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Да вроде не должно быть такого...
Только учти, что в sin и cos углы - в радианах.
Если хочешь, чтобы в Vectors указывались не радианы, а градусы, то эти 2 строчки измени так:
Код
   x1 := x + cos(Angle*pi/180)*Len;
   y1 := y + sin(Angle*pi/180)*Len;



--------------------
С уважением, г-н Посол.
PM   Вверх
Spanishmad
  Дата 20.10.2004, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, вроде и не должно быть, но есть я там уже вроде всё просмотрел. А начал заново с твоей помощью и вроде нормально строит, а туда вставляю есть :stena . А радианы в градусы я перевожу с помощью DegtoRad. //Angle:= DegtoRad (Angle);
Только ты не могбы подсказать как мне сделать чтоб не против часовой угол откладывался (это вроде называется толи матрица поворота толи просто поворот)
PM MAIL   Вверх
p0s0l
Дата 20.10.2004, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Просто смени знак у угла:
Angle := DegtoRad (-Angle);



--------------------
С уважением, г-н Посол.
PM   Вверх
Spanishmad
Дата 20.10.2004, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо :)
Вроде пока всё работает.
А как лучше сделать так чтобы каждый вектор бал подписан(ну тип 1,2,3... и т.д.)
Может с помощью Canvas что-нибудь придумать.
PM MAIL   Вверх
p0s0l
Дата 20.10.2004, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



В цикле поменяй строчку:
Код
  Series1.AddArrow(x, y, x1, y1, IntToStr(i), clRed);

И в конце или в начале процедуры добавь:
Код
 Series1.Marks.Visible := True;
 Series1.Marks.Transparent := False;
Transparent = False стоит т.к. если 3D стиль отключен, то прозрачность не работает... Поэтому если у тебя много векторов, то будет легче включить 3D стиль (два раза кликни по TChart, выбери закладку 3D), и сделать 1% в графе "3D", и поставить галочку Orthogonal. Тогда Series1.Marks.Transparent делай True.
Цвет и шрифт подписей - это Series1.Font.Color к примеру. Но лучше два раза опять тыкни по TChart, зайди в закладку Series, внутри неё выбери закладку "Marks" и там поиграйся как будет красивее...



--------------------
С уважением, г-н Посол.
PM   Вверх
Spanishmad
Дата 20.10.2004, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



:) Благодарю за помощь !!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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