перейти к полному списку дипломных проектов
Ссылка на скачивания файла в формате .doc находится в конце странички
, нами было разработано и проведено 6 занятий по 3D моделированию, позволяющих изучить основы 3D моделирования
DoModal();
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
// fuzzyDlg.h : header file
// CFuzzyDlg dialog
class CFuzzyDlg : public CDialog
{
// Construction
public:
void PlotTrapezoid();
void PlotTriangle();
void PlotGaussian();
void PlotSigmoid();
void PlotGaussian2();
void Axis();
CButton *R_Tri, *R_Tra, *R_Ga, *R_Ga2, *R_Sig;
CFuzzyDlg(CWnd* pParent = NULL);// standard constructor
// Dialog Data
//{{AFX_DATA(CFuzzyDlg)
enum { IDD = IDD_FUZZY_DIALOG };
CEditpar_d;
CEditpar_c;
CEditpar_b;
CEditpar_a;
CStaticm_grapho;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFuzzyDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CFuzzyDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButton1();
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnRadio1();
afx_msg void OnRadio2();
afx_msg void OnRadio3();
afx_msg void OnRadio4();
afx_msg void OnRadio5();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
// fuzzyDlg.cpp : implementation file
//
include "stdafx.h"
include "fuzzy.h"
include "fuzzyDlg.h"
include "fuzzy_.h"
ifndef ABS
define ABS(x) ( (x) > (0) ? (x): (-(x)) )
endif
ifndef MAX
define MAX(x,y) ( (x) > (y) ? (x) : (y) )
endif
ifndef MIN
define MIN(x,y) ( (x) < (y) ? (x) : (y) )
endif
CFuzzy_ fuzzy;
double *param, x, y=0, kX=1000, _par=0;
int WIDTH, HEIGHT;
byte function=0;
const byte TRIANGLE = 1;
const byte TRAPEZOID = 2;
const byte GAUSSIAN = 3;
const byte GAUSSIAN2 = 4;
const byte SIGMOID = 5;
/////////////////////////////////////////////////////////////////////////////
// CFuzzyDlg dialog
CFuzzyDlg::CFuzzyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFuzzyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CFuzzyDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CFuzzyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFuzzyDlg)
DDX_Control(pDX, IDC_EDITD, par_d);
DDX_Control(pDX, IDC_EDITC, par_c);
DDX_Control(pDX, IDC_EDITB, par_b);
DDX_Control(pDX, IDC_EDITA, par_a);
DDX_Control(pDX, IDC_GRAPHO, m_grapho);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFuzzyDlg, CDialog)
//{{AFX_MSG_MAP(CFuzzyDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_WM_MOUSEMOVE()
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
ON_BN_CLICKED(IDC_RADIO5, OnRadio5)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFuzzyDlg message handlers
BOOL CFuzzyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE);// Set big icon
SetIcon(m_hIcon, FALSE);
par_a.SetWindowText("1");
par_b.SetWindowText("3");
par_c.SetWindowText("5");
par_d.SetWindowText("9");
R_Tri=(CButton*)GetDlgItem(IDC_RADIO1);
R_Tra=(CButton*)GetDlgItem(IDC_RADIO2);
R_Ga=(CButton*)GetDlgItem(IDC_RADIO3);
R_Ga2=(CButton*)GetDlgItem(IDC_RADIO4);
R_Sig=(CButton*)GetDlgItem(IDC_RADIO5);
param = new double[3];
WIDTH = 600;
HEIGHT = 400;
// Set small icon
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CFuzzyDlg::OnPaint()
{
CDialog::OnPaint();
Axis();
if (function==GAUSSIAN)
PlotGaussian();
else
if (function==TRIANGLE)
PlotTriangle();
else
if (function==TRAPEZOID)
PlotTrapezoid();
else
if (function==GAUSSIAN2)
PlotGaussian2();
else
if (function==SIGMOID)
PlotSigmoid();
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CFuzzyDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CFuzzyDlg::OnButton1()
{
Axis();
if (R_Tri->GetState()==1)
{
PlotTriangle();
} else
if (R_Tra->GetState()==1)
{
PlotTrapezoid();
} else
if (R_Ga->GetState()==1)
{
PlotGaussian();
}
else
if (R_Ga2->GetState()==1)
{
PlotGaussian2();
} else
if (R_Sig->GetState()==1)
{
PlotSigmoid();
}
else AfxMessageBox("Выберите тип функции!!", MB_ICONWARNING|MB_OK, 0);
}
void CFuzzyDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if (point.x>10 point.x10 point.y
{
CDC *dc = m_grapho.GetDC();
CPen SolidPen;
SolidPen.CreatePen(PS_SOLID,1,RGB(255,255,255));
CBrush brush;
brush.CreateSolidBrush(RGB(255,255,255));
dc->SelectObject(brush);
dc->SelectObject(SolidPen);
dc->Rectangle(350,10,580,30);
double _tmp;
char crds[15];
CString coords;
_tmp=(point.x-36)*1000/kX+_par;
itoa((int)(_tmp),crds,10);
coords=crds;
itoa(ABS((int)(_tmp*100)%100),crds,10);
(ABS((int)(_tmp*100)%100)<10)?coords+=".0":coords+=".";
coords+=crds;
if (function==GAUSSIAN)
gcvt(fuzzy.fisGaussianMf(_tmp,param),2,crds);
else
if (function==TRIANGLE)
gcvt(fuzzy.fisTriangleMf(_tmp,param),2,crds);
else
if (function==TRAPEZOID)
gcvt(fuzzy.fisTrapezoidMf(_tmp,param),2,crds);
else
if (function==GAUSSIAN2)
gcvt(fuzzy.fisGaussian2Mf(_tmp,param),2,crds);
else
if (function==SIGMOID)
gcvt(fuzzy.fisSigmoidMf(_tmp,param),2,crds);
else
crds[0]='\0';
CFont *font = new CFont();
font->CreateFont(14, 10, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "Courier");
dc->SelectObject(font);
dc->TextOut(50,10,"Точка x:"+coords+" Степень принадлежности:"+crds);
}
CDialog::OnMouseMove(nFlags, point);
}
void CFuzzyDlg::OnRadio1()
{
par_d.
скачать бесплатно Библиотека MFC
Содержание дипломной работы
Идея, лежащая в основе теории нечетких множеств, заключается в том, что человек в своей повседневной жизни мыслит и принимает решения на основе нечетких понятий
Тогда нечетким множеством С называется множество упорядоченных пар вида C={MFc(x)/x}, MFc(x) [0,1]
Последнее, что осталось сделать – построить функции принадлежности для каждого лингвистического терма из базового терм-множества T
Нечеткая нейронная сеть как правило состоит из четырех слоев: слоя фазификации входных переменных, слоя агрегирования значений активации условия, слоя агрегирования нечетких правил и выходного слоя
В отличие от простых когнитивных карт, нечеткие когнитивные карты представляют собой нечеткий ориентированный граф, узлы которого являются нечеткими множествами
Когда MS Windows обнаруживает ресурс окна в программе, она использует команды из этого ресурса для конструирования работающего окна
При перемещении мыши выводится значение точки x (с учетом масштаба) и степень принадлежности (значение данной функции принадлежности) этой точки x
гос
h"
include