Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.04.2013, 09:10
DarkRiDDeR DarkRiDDeR вне форума
Прохожий
 
Регистрация: 13.04.2013
Сообщения: 4
Версия Delphi: xe3
Репутация: 10
По умолчанию Не могу нарисовать график Конхоиды Никомеда в Chart

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, imax, sh, a, l: extended;
begin
  series1.Clear;
  i := -pi/2+0.5;
  imax := pi/2-0.5;
  a := StrToFloat(Edit1.Text);
  l := StrToFloat(Edit2.Text);
  sh := StrToFloat(Edit3.Text); //шаг

   while i <= imax do
 begin
  series1.AddXY(round(a+l*cos(i)), round(a*tan(i)+l*sin(i)),'', colorbox1.Selected);
  i := i + sh;
 end;


end;

Даже рисуя часть ветви выходит какая-то фигня, хотя должно быть что-то такое(" Без имени.png"). Уже всё перетыкал. Нужна помощь
Изображения
Тип файла: png Без имени.png (8.5 Кбайт, 9 просмотров)
Тип файла: png конхоида никомеда.png (9.0 Кбайт, 7 просмотров)
Ответить с цитированием
  #2  
Старый 13.04.2013, 10:16
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Вам обязательно в полярных её рисовать?
У вас следующие ошибки:
1) X, Y надо увеличить с коэффициентом k = 10 (как бы zoom)
2) X, Y надо сдвинуть в центр объекта, на котором рисуете: (Я сдвинул на 200 пикселей вправо и вниз)

Код:
X := round(a + l * cos(phi) * 10 + 200);
Y := round(a * Tan(phi) + l * sin(phi) * 10 + 200);

Последний раз редактировалось Uniq!, 13.04.2013 в 10:27.
Ответить с цитированием
  #3  
Старый 13.04.2013, 11:23
DarkRiDDeR DarkRiDDeR вне форума
Прохожий
 
Регистрация: 13.04.2013
Сообщения: 4
Версия Delphi: xe3
Репутация: 10
По умолчанию

Это параметрический вид. Сделав, как вы говорите, у меня получилось тоже самое, только сдвинутое на 200 вправо и влево.
Это никак не походит на нужный мне график
Изображения
Тип файла: png hh.PNG (41.8 Кбайт, 12 просмотров)
Ответить с цитированием
  #4  
Старый 13.04.2013, 11:58
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

А почему вы рисуете на TChart?

Я вот рисовал на
Код:
TImage.Picture.BitMap.Canvas.LineTo(X,Y); 

и у меня красивая петля получилась.
Ответить с цитированием
  #5  
Старый 13.04.2013, 12:59
DarkRiDDeR DarkRiDDeR вне форума
Прохожий
 
Регистрация: 13.04.2013
Сообщения: 4
Версия Delphi: xe3
Репутация: 10
По умолчанию

мне надо, чтобы на осях значения показывало, делать это в ручную лень, да и, наверное, не практично. А с помощью chart это никак не сделать?
Ответить с цитированием
  #6  
Старый 13.04.2013, 17:11
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,026
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от DarkRiDDeR
мне надо, чтобы на осях значения показывало, делать это в ручную лень, да и, наверное, не практично. А с помощью chart это никак не сделать?


А в TChart это никогда не будет выглядеть так, т.е. TChart сортирует данные перед отрисовкой. Он, вообще-то, немного для другого предназначен. Так что канву в зубы и вперед...
Ответить с цитированием
  #7  
Старый 13.04.2013, 18:03
DarkRiDDeR DarkRiDDeR вне форума
Прохожий
 
Регистрация: 13.04.2013
Сообщения: 4
Версия Delphi: xe3
Репутация: 10
Радость

Спасибо за прояснение, за помощь!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:42.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter