Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2010, 22:21   #1
Elena123456
Пользователь
 
Регистрация: 22.12.2010
Сообщений: 10
По умолчанию интерполяция кубическим сплайном

вот код
Код:
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#define MAX 100
#define N 8
#define ZOOM 2

enum TypeSpline {Bezier,BSpline,Ermit};

inline double BezierFunc(double p[],int i,double t)
{
double s=1-t,
     t2=t*t,
     t3=t2*t;
return ((p[3*i]*s+3*t*p[3*i+1])*s+3*t2*p[3*i+2])*s+t3*p[3*i+3];
}

inline double BSplineFunc(double p[],int i,double t)
{
double s=1-t,
     t2=t*t,
     t3=t2*t;
return (s*s*s*p[i]+(3*t3-6*t2+4)*p[i+1]+(-3*t3+3*t2+3*t+1)*p[i+2]+t3*p[i+3])/6.0;
}

inline double ErmitFunc(double p[],int i,double t)
{
double t2=t*t,
     t3=t2*t;
return (2*t3-3*t2+1)*p[i]+(-2*t3+3*t2)*p[i+1]+(t3-2*t2+t)*(p[i+1]-p[i])+(t3-t2)*(p[i+2]-p[i+1]);
}

double (*Spline[])(double[],int,double)={BezierFunc,BSplineFunc,ErmitFunc};

inline int LoadFromFile(double a[],double b[],int &c)
{
 FILE *f;
 c=0;
 if((f=fopen("points.ptn","r"))==NULL) {
    puts("\nError: Can't open data file\n"); return -1;}
 while(!feof(f))
   {
    fscanf(f,"\%lf",&a[c]);
    fscanf(f,"\%lf",&b[c]);
    a[c]*=ZOOM;
    b[c++]*=ZOOM;
   }
 fclose(f);
 return 1;
}

inline void DrawFigure(double a[],double b[],int c,int xmid,int ymid,int col)
{
 setcolor(col);
 setlinestyle(1,1,2);
 moveto(a[0]+xmid,b[0]+ymid);
 for(int i=1;i<c;i++)
   lineto(a[i]+xmid,b[i]+ymid);
}

inline void DrawSpline(TypeSpline ts,double a[],double b[],int &c,int xmid,int ymid,int col)
{
 int i,j,end;
 double xs,ys,dt;
 char *s[]={   "                 Bezier Spline",
           "                  B-Spline    ",
           "                 Ermit Spline "};

 setcolor(col);
 setlinestyle(0,1,1);
 switch(ts) {
   case Bezier: end=c/3;break;
   case BSpline: end=c-3;break;
   case Ermit: end=c-2;break;}

 moveto(Spline[ts](a,0,0.0)+xmid,Spline[ts](b,0,0.0)+ymid);
 for(i=0;i<end;i++)
   for(j=0;j<=N;j++) {
     dt=(double)j/(double)N;
     xs=Spline[ts](a,i,dt);
     ys=Spline[ts](b,i,dt);
     lineto(xs+xmid,ys+ymid);
   }
 outtextxy(0,0,s[ts]);
}

main()
{
 TypeSpline type;
 int count,gdr=DETECT,gmod;
 initgraph(&gdr,&gmod,"");

 double x[MAX],y[MAX];
 if(!LoadFromFile(x,y,count)) return -1;

 for(type=Bezier;type<=Ermit;type++) {
   DrawFigure(x,y,count,320,240,14);
   DrawSpline(type,x,y,count,320,240,15);
   getch();
   cleardevice();}
}
не могу понять в чем дело, призапуске не находит exe файл

Последний раз редактировалось MaTBeu; 19.02.2011 в 12:35.
Elena123456 вне форума Ответить с цитированием
Старый 23.12.2010, 22:23   #2
Elena123456
Пользователь
 
Регистрация: 22.12.2010
Сообщений: 10
По умолчанию

я не знаю че сделать , чтобы программа заработала(((
Elena123456 вне форума Ответить с цитированием
Старый 23.12.2010, 22:26   #3
Elena123456
Пользователь
 
Регистрация: 22.12.2010
Сообщений: 10
По умолчанию

вот такие ошибки Error 3 fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? c:\documents and settings\пользователь\рабочий стол\хр\ptyui\ptyui\ptyui.cpp 106
Warning 2 warning C4627: '#include <conio.h>': skipped when looking for precompiled header use c:\documents and settings\пользователь\рабочий стол\хр\ptyui\ptyui\ptyui.cpp 6
Warning 1 warning C4627: '#include <graphics.h>': skipped when looking for precompiled header use c:\documents and settings\пользователь\рабочий стол\хр\ptyui\ptyui\ptyui.cpp 5
Elena123456 вне форума Ответить с цитированием
Старый 23.12.2010, 23:00   #4
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Беда в том, что ты компилишь студией лабу, написанную для borland c.
Son Of Pain вне форума Ответить с цитированием
Старый 23.12.2010, 23:04   #5
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

попробуй 1ой строчкой добавить #include "stdafx.h"
UltimaBeaR вне форума Ответить с цитированием
Старый 23.12.2010, 23:22   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну рисовать он вам точно ничего не будет, т.к. в студии нет BC'шной библиотеки graphics.h (да и вообще она вместе с BC - DOS'овская). Если хотите в консольном проекте делать, то графику нужно через WinAPI создавать.
Кстати, по поводу stdafx.h - если не хотите, чтобы он постоянно требовался, создавайте пустой проект (в визарде при создании проекта пометьте галку "Пустой проект" ("Empty project"))
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 23.12.2010, 23:26   #7
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

Проще просто отключить предкомпилиованные заголовки

ЗЫ: если хочешь чтоб работало - компилируй на c++ builder-е (ну или borland c)
UltimaBeaR вне форума Ответить с цитированием
Старый 24.12.2010, 13:19   #8
Elena123456
Пользователь
 
Регистрация: 22.12.2010
Сообщений: 10
По умолчанию

спасибо за ответы
Elena123456 вне форума Ответить с цитированием
Старый 24.12.2010, 13:21   #9
Elena123456
Пользователь
 
Регистрация: 22.12.2010
Сообщений: 10
По умолчанию

просты мы работаем в Visual Studio , и программу необходимо написать MFC c моим опытом работы в этой среде 2 месяца в консоле, не получается
Elena123456 вне форума Ответить с цитированием
Старый 24.12.2010, 13:32   #10
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код абсолютно точно писан под Borland C++, но вот какого ж лешего в одном коде смешаны inline и #define - это уму непостижимо.
P.S. Сочувствую, MFC та еще ерундень. Можете почитать Хортона "Visual Studio 2005. Базовый курс" (или как-то так - смотрите в теме "Литература по C++")
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 24.12.2010 в 13:34.
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интерполяция ma3k Общие вопросы Delphi 0 17.07.2010 20:32
Интерполяция изображения Бикубическим сплайном Danyla Помощь студентам 5 31.05.2010 02:23
Интерполяция изображений(Сплайн интерполяция)?????) Danyla Помощь студентам 0 13.04.2010 09:08
интерполяция Laplas Общие вопросы C/C++ 6 06.03.2010 12:03