|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Не могу нарисовать график Конхоиды Никомеда в 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"). Уже всё перетыкал. Нужна помощь |
#2
|
||||
|
||||
Вам обязательно в полярных её рисовать?
У вас следующие ошибки: 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
|
|||
|
|||
Это параметрический вид. Сделав, как вы говорите, у меня получилось тоже самое, только сдвинутое на 200 вправо и влево.
Это никак не походит на нужный мне график |
#4
|
||||
|
||||
А почему вы рисуете на TChart?
Я вот рисовал на Код:
TImage.Picture.BitMap.Canvas.LineTo(X,Y); и у меня красивая петля получилась. |
#5
|
|||
|
|||
мне надо, чтобы на осях значения показывало, делать это в ручную лень, да и, наверное, не практично. А с помощью chart это никак не сделать?
|
#6
|
|||
|
|||
Цитата:
А в TChart это никогда не будет выглядеть так, т.е. TChart сортирует данные перед отрисовкой. Он, вообще-то, немного для другого предназначен. Так что канву в зубы и вперед... |
#7
|
|||
|
|||
Спасибо за прояснение, за помощь!
|