📄 kohonendraw.cpp
字号:
/* * TODO: needs GL - note in configure .. */#include "KohonenDraw.h"#ifdef HAVE_OPENGL#include <GL/gl.h>#include <GL/glu.h>#include "annie/util/gl_aux.h"#include "Control.h"#endifnamespace annie {const float INPUT_COLOR[] = { 0., 0., 1. };const float CLUSTERS_COLOR[] = { 0., 1., 0. };const float OUT_CLUSTERS_COLOR[] = { 1., 1., 0. };const float LINES_COLOR[] = { .5, .5, .5 };void KohonenDraw::draw() { glPolygonMode(GL_FRONT, GL_FILL); glLoadIdentity(); gluOrtho2D(0, 1, 1, 0); /*glBegin(GL_LINES); glVertex2i(0,0); glVertex2i(1,1); glEnd();*/ drawClusters();}void KohonenDraw::warn() {// glPushAttrib(GL_COLOR_BUFFER_BIT); glColor3fv(OUT_CLUSTERS_COLOR);}void KohonenDraw::unWarn() {// glPopAttrib();}/* * Plot a vertex point in the input space */void KohonenDraw::drawPosition(const Vector &v) { switch(v.size()) { case 1: glVertex2d(v[0], 0.); break; case 2: { assert( !(v[0] > 1. || v[0] < 0. || v[1] > 1. || v[1] < 0.));/* { warn(); glVertex2d(.5, .5); unWarn(); } else */glVertex2d(v[0], v[1]); } break; case 3: glVertex3d(v[0], v[1], v[2]); break; default: //TODO... glVertex2d(v[0], v[1]); }}void KohonenDraw::drawPosition(const Neuron &n) { Vector w(n.getInputCount()); n.getWeights(w); drawPosition(w);}// draw the current position of clustersvoid KohonenDraw::drawClusters() { if(defaultControl["drawLines"]) { //only points glPointSize(1.); glColor3fv(LINES_COLOR); glBegin(GL_LINES); for(unsigned int i=0; i<net->getOutputCount(); i++) //for(unsigned int j=1; j<net->getOutputCount()/2+1; j++) for(unsigned int j=0; j<net->getOutputCount(); j++) if(i != j && topology.isGridNeighbor(i, j)) { //TODO: nbSize or keep e.g. 1. ? drawPosition(net->getOutputLayer()[i]); drawPosition(net->getOutputLayer()[j]); } glEnd(); } glPointSize(2.5); glColor3fv(CLUSTERS_COLOR); glBegin(GL_POINTS); for(unsigned int i=0; i<net->getOutputCount(); i++) drawPosition(net->getOutputLayer()[i]); glEnd(); glFinish();}void ExKohonenDraw::drawExamples() { glPointSize(2.); glBegin(GL_POINTS); //if(inputs){ glColor3fv(INPUT_COLOR); Vector i(inputs.getInputSize()), o(inputs.getInputSize()); inputs.initialize(); while(!inputs.epochOver()) { inputs.getNextPair(i, o); drawPosition(i); } //} glEnd(); glFinish();}void ExKohonenDraw::draw() { KohonenDraw::draw(); drawExamples();}} //annie
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -