| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Построение графиков фукций |
| Автор: vudu91 10.5.2009, 13:32 | ||
| Пожалуйста помогите ... очень нужно реализовать пограму построения графикик некоторых функций за выбором пользователя. для одной функции я нашел,переделал, но как сделать так, чтобы функцию можно было менять пользователем незнаю.. уже кучу времени потратил.. все перерыл, ну незнаю...
очень нужно...помогите пожалуйста. |
| Автор: vudu91 10.5.2009, 17:44 |
| |
| Автор: Dmi3ev 10.5.2009, 18:41 | ||
произвольно менять? какую пользователь придумает, такая и будет? или менять из нескольких уже существующих? |
| Автор: vudu91 10.5.2009, 19:05 |
| ну зараз можно просто чтобы пользователь выбирал из списка, и просто ставил коэфициенты... например а*х^2 где а зпдает пользователь |
| Автор: Dmi3ev 10.5.2009, 20:52 | ||||||
Н-файл
что-то вроде, если функций несколько, то можно организовать выбор через радио баттоны, или чекбокс, и в зависимости от выбора рисовать ту или иную... |
| Автор: vudu91 10.5.2009, 21:41 |
| Dmi3ev, большое спасибо а не подскажэш как увеличить маштаб выводимого графика и отобразить его не на весь экран а у левый половине...??? |
| Автор: Dmi3ev 10.5.2009, 22:11 | ||
не понял ))) |
| Автор: vudu91 10.5.2009, 22:17 |
| Dmi3ev, ну чтоб выводило не на весь экран а на половину. Добавлено через 5 минут и 31 секунду чтобы график занял не весь экран а левую половину ну а справа било свободное место |
| Автор: Dmi3ev 10.5.2009, 22:28 | ||||||
не подскажу, буду развивать в тебе умение мыслить... это очень легко... что такое масштаб? допустим реально у нас круг радиусом 1мм, а мы его изобразили радиусом 1см, чтобы видно было, те увеличили в 10 раз, а что мы для это сделали? правильно умножили... вот и подумай, как это провернуть программно... ЗЫ просто пока кроме клавиш ctrl+c, ctrl+v ты ничего не использовал для написания программы (даже в Н-файле строку не мог добавить) либо начинай разбираться с этим несложным кодом, либо нех билдер ваще открывать... тут не все так просто как в CS и WarCraft, надо думать, а не только кнопки жать Добавлено через 58 секунд
думать, думать, и еще раз думать, надо поменять всего лишь несколько цифр! Добавлено через 2 минуты и 55 секунд самый простой способ, если ваще не варит котел, взять TImage, сделать его нужного размера и рисовать в нем! Соответственно, заменить this на Image1 Добавлено через 9 минут и 28 секунд
Добавлено через 10 минут и 16 секунд просто? да? а сам почему не хочешь думать? |
| Автор: Dmi3ev 10.5.2009, 22:46 |
| vudu91, ну чего? получилось? или компонент Image не можешь найти? |
| Автор: vudu91 10.5.2009, 22:50 |
| спасибо большое буду исправляться... с этим графиком я уже неделю мучаюсь, а толку ноль... |
| Автор: Dmi3ev 10.5.2009, 22:50 | ||
Я бы так сделал, это дает ряд плюсов, не зависит от формы, те можно его разместить где угодно, менять размер, и тд и тп, при этом код не изменится, а с формой придется править каждый раз... Короче, рисуй не на форме а на TImage
это я не со зла, извини... Даже лучше взять TImage |
| Автор: vudu91 10.5.2009, 22:57 |
| нашол.. я нуб но не на столько, книги немного читаю... ещо раз спасибо |
| Автор: vudu91 11.5.2009, 16:29 | ||
а не посоветуешь что нужно сделать, или что я не правильно делаю я в место всех х++ и х-- просто поставил
|
| Автор: Dmi3ev 11.5.2009, 17:14 | ||||||
а зачем ты так делаешь? Добавлено через 1 минуту и 6 секунд
я тебя расстрою, но не в кампе дело Добавлено через 1 минуту и 41 секунду а вот прокладку между стулом и компом можно поменять Добавлено через 6 минут и 6 секунд
+ еще подумай, в чем измеряется Width, Height может ли это быть дробным? |
| Автор: vudu91 11.5.2009, 17:54 |
| ну и на этом спасибо |
| Автор: vudu91 12.5.2009, 18:35 | ||||||
Dmi3ev, а при чом тут
мы ж вроде их не меняем как не странно но
и все просто супер.. и график строится хоть при 1 хоть при 0.01 |
| Автор: Dmi3ev 12.5.2009, 19:21 | ||||||
vudu91, их мы не меняем, но LineTo принимает два целых параметра (что неудивительно, почему подумай сам)...
я рад за тебя ))) а знаешь почему? потому что берется целая часть те если х=0,99 то в функции LineTo х уже будет 0, тк его целая часть равно 0 (неявное преобразование типов, если ты об этом слышал), но потом х=1,99, и в функции LineTo х будет 1 поэтому визуально ты график видишь (даже похоже не видишь, что он неправильный), только он построен не совсем правильно, а точнее сказать совсем неправильно... но если ты будешь строить график sin(x) (который не будет больше 1, и меньше -1), то таким макаром ничего ваще не выйдет... потому как при х (-8; +8) (кроме тех случаес, когда х=П/2+Пn) у после попадания в функцию LineTo будет преобразован к 0 поэтому ты будешь получать прямую, лежащую на оси х, и только когда х будет делать у=1 или -1 будут точки в соответствующих местах... но это устраняется с помщью простого умножения, те если функция sin(x), то ее можно записать вот так
и уже можно строить, только надо понимать, что по оси у идет увеличение масштаба (визуально график будет выглядеть правильно)... догнал? или нет? объяснить просто не знаю как... но все просто... хотя если тебя устраивает все, то я ни в коем случае не против, только по-моему мнению не очень, по крайней мере неразумно отнимать или прибавлять какие-то дельты дробные, если один х.. в функции LineTo используются целые числа (это искажает график, может ты этого не замечаешь, но это так) |
| Автор: vudu91 12.5.2009, 19:42 |
Dmi3ev, ну ладно может ты и прав но до тех примеров что у меня вполне подходит и так |
| Автор: Dmi3ev 12.5.2009, 19:49 | ||||
спасибо большое, недопрограммер, за то, что Вы оценили мои слова Да делай, как хочешь, мне-то ваще пох... Только это глупо...
при 0,01, при 0,02, при 0,03, при 0,..... ничего он не строит, а ставит точку в (0, ...), те всегда в одном и том же месте... Дело твое, еще раз говорю, мне пох... |
| Автор: xvr 12.5.2009, 19:57 |
| Для рисования советую использовать компонент TChart - он замечательно умеет смещать и влево и вправо и масштабировать и много чего еще |
| Автор: Dmi3ev 12.5.2009, 19:59 | ||
это да, но человек похоже хочет сам рисовать с помщью Canvas... |