Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение графика функции, в Borland в с++ 3.1 
:(
    Опции темы
Dorf
Дата 17.2.2004, 18:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











У меня никак не получается построить график функции, с автомасштабированием. Он постоянно выводит какую-то билебирду. Может кто-нибудь знает или исходничек подкинет?
  Вверх
hyzhak
Дата 17.2.2004, 20:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











можешь уточнить проблему, в чем пишешь. И кусок кода кинуть?

Я вообщето выводил както и через GDI, OpenGL, да и просто Chart юзал, у всех свои заморочки smile.gif.

обычно просто: от точки к точке линию рисуешь. А раз авто-масштабирование определяешь крайние точки и от них пляшешь, с корректирующим коэффициентом выводя.

  Вверх
Mal Hack
Дата 17.2.2004, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



hyzhak, судя из названия темы, используется программирование под ДОС...
Dorf, скорее всего ты сам график строишь неправильно, а точнее по точкам, когда надо по линиям..

Вот тебе исходник стопудоваработающей программы с маштабируемостью. Писал на практике в прошлом году...
Код
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
void main(void)
{
char ch;
int krugx[4],krugy[4];
clrscr(); int d=DETECT,m=DETECT;
float n=1;
initgraph(&d,&m,"");
float smx=0,smy=0;
do
{
krugx[1]=1; krugx[2]=-1; krugx[3]=0; krugx[4]=0;
krugy[1]=0; krugy[2]=0; krugy[3]=1; krugy[4]=-1;
clearviewport();
float rad_big=100/n,rad_mid=50/n,rad_lit=25/n,rad_sm=10/n;
float x,y,sm_x=(getmaxx()/2)+smx,sm_y=(getmaxy()/2)+smy;
setcolor(WHITE);
circle(sm_x,sm_y,rad_big);
for(int i=1;i<=4;i++)
{
x=sm_x+((rad_big*krugx[i])); y=sm_y+((rad_big*krugy[i]));
circle(x,y,rad_mid);
}
for(i=1;i<=4;i++)
for(int j=1;j<=4;j++)
 {
 x=sm_x+((rad_big*krugx[i]))+((rad_mid*krugx[j])); y=sm_y+((rad_big*krugy[i]))+((rad_mid*krugy[j]));
 circle(x,y,rad_lit);
 }
for(i=1;i<=4;i++)
for(int j=1;j<=4;j++)
 for(int k=1;k<=4;k++)
  {
  x=sm_x+((rad_big*krugx[i]))+((rad_mid*krugx[j]))+(rad_lit*krugx[k]); y=sm_y+((rad_big*krugy[i]))+((rad_mid*krugy[j]))+((rad_lit*krugy[k]));
  circle(x,y,rad_sm);
  }
ch=getch();
if(ch=='9') n=n+0.02;
if(ch=='3') n=n-0.02;
if(ch=='2') smy=smy+2;
if(ch=='4') smx=smx-2;
if(ch=='6') smx=smx+2;
if(ch=='8') smy=smy-2;
} while(ch!='1');
closegraph();
}

Увеличить масштаб - 3, уменьшить - 9, выход - 1..
Прога написана хоть и коряво, но смысл самого масштабирования реализован...
PM ICQ   Вверх
shara
Дата 29.6.2004, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



кроче, у меня есть отличная прога для построения графиков(правда на BASICe), написанная мною. если хош могу прислать, или объяснить как она работает. вообще алгоритм построения графика очень элементарный и оригинальный. А маштабирование - понятие растяжымое, я имею ввиду как построить в маштабе прямую, которя по своему определению - БЕСКОНЕЧНАЯ или как её построить не в маштабе. но тут можно кое-что сделать. короче если кому чё надо - невопрос помогу.


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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