void Hexa::split(initializer_list<int> n) { int n1 = 1; int n2 = 1; int n3 = 1; if (n.size() >= 3) {n1 = *(n.begin()); n2 = *(n.begin()+1); n3 = *(n.begin()+2); } else if (n.size() == 2) {n1 = *(n.begin()); n2 = *(n.begin()+1);} else if (n.size() == 1) {n1 = *(n.begin());} else { return; } Vec3 dx1, dx2, dx3, dx4, dy1, dy2, dz, dx, dy, dxa, dxb; vector<int_8 > kk, ll(8,-1); for (auto v :node) { kk.push_back(v->id); } dx1 = edge(0)/double(n1); dx2 = edge(2)/double(n1); dx3 = edge(4)/double(n1); dx4 = edge(6)/double(n1); dy1 = edge(3)/double(n2); dy2 = edge(7)/double(n2); dz = edge(8)/double(n3); int_8 ind[n1+1][n2+1][n3+1]; for (auto k = 0; k < n3+1 ; ++k) { for (auto j = 0; j < n2+1 ; ++j) { for (auto i = 0; i < n1+1 ; ++i) { ind[i][j][k] = -1; if (i == 0 && j == 0 && k == 0) { ind[i][j][k] = kk[0]; } else if (i == 0 && j == n2 && k == 0) { ind[i][j][k] = kk[3]; } else if (i == n1 && j == n2 && k == 0) { ind[i][j][k] = kk[2]; } else if (i == n1 && j == 0 && k == 0) { ind[i][j][k] = kk[1]; } else if (i == 0 && j == 0 && k == n3) { ind[i][j][k] = kk[4]; } else if (i == 0 && j == n2 && k == n3) { ind[i][j][k] = kk[7]; } else if (i == n1 && j == n2 && k == n3) { ind[i][j][k] = kk[6]; } else if (i == n1 && j == 0 && k == n3) { ind[i][j][k] = kk[5]; } else { dy = dy1 + (dy2 - dy1)*double(k)/double(n3); dxa = dx1 + (dx3 - dx1)*double(k)/double(n3); dxb = dx2 + (dx4 - dx2)*double(k)/double(n3); dx = dxa + (dxb - dxa)*double(j)/double(n2); grid->addVertex(*(node.at(0)) + double(i)*dx + double(j)*dy +double(k)*dz); (*grid->vbegin())->grid = grid; ind[i][j][k] = (grid->listVertex.size())-1; } } } } for (auto k = 0; k < n3; ++k) { for (auto j = 0; j < n2; ++j) { for (auto i = 0; i < n1; ++i) { ll[0] = ind[i][j][k]; ll[1] = ind[i+1][j][k]; ll[2] = ind[i+1][j+1][k]; ll[3] = ind[i][j+1][k]; ll[4] = ind[i][j][k+1]; ll[5] = ind[i+1][j][k+1]; ll[6] = ind[i+1][j+1][k+1]; ll[7] = ind[i][j+1][k+1]; if (i == 0 && j == 0 && k == 0) { int_4 icnt = 0; for (auto v = node.begin(); v !=node.end(); ++v) { (*v) = grid->listVertex.at(ll[icnt]); ++icnt; } initNodeList(*(grid->listCell.begin() + id)); } else { grid->addCell(ll); } } } } }
nodeList* calculateConnectedNodes(nodeInfo node) { nodeList *nodes, *currentNode; int currentNodeIsResolved = 0; const int meshSize = 3; currentNode = nodes = initNodeList(); if (node.id == INT_MAX) { //This node is the printing server. //Only connect it to node zero. currentNode->node->id = 0; currentNodeIsResolved = 1; } else { if (node.id == 0) { //This is node zero. Connect it to printing server. currentNode->node->id = INT_MAX; currentNodeIsResolved = 1; } if (node.id%meshSize != meshSize - 1) { //This node is not on the right border. Connect it to it's neighbor on the right. if (currentNodeIsResolved) { currentNode->next = initNodeList(); currentNode = currentNode->next; } else { currentNodeIsResolved = 1; } currentNode->node->id = node.id + 1; } if (node.id%meshSize != 0) { //This node is not on the left border. Connect it to it's neighbor on the left. if (currentNodeIsResolved) { currentNode->next = initNodeList(); currentNode = currentNode->next; } else { currentNodeIsResolved = 1; } currentNode->node->id = node.id - 1; } if (node.id+meshSize < meshSize*meshSize) { //This node has a neighbor below him. Connect the neighbor! if (currentNodeIsResolved) { currentNode->next = initNodeList(); currentNode = currentNode->next; } else { currentNodeIsResolved = 1; } currentNode->node->id = node.id + meshSize; } if (node.id-meshSize >= 0) { //This node has a neighbor above him. Connect the neighbor! if (currentNodeIsResolved) { currentNode->next = initNodeList(); currentNode = currentNode->next; } else { currentNodeIsResolved = 1; } currentNode->node->id = node.id - meshSize; } } return nodes; }
void Map::init() { initNodeList(); }
void RocNetDlg::initValues() { iONode rnini = wDigInt.getrocnet(m_Props); // General m_IID->SetValue( wxString( wDigInt.getiid( m_Props ), wxConvUTF8 ) ); m_RNID->SetValue( wRocNet.getid( rnini ) ); m_Device->SetValue( wxString( wDigInt.getdevice( m_Props ), wxConvUTF8 ) ); if( m_Devices != NULL ) { iOStrTok tok = StrTokOp.inst(m_Devices, ','); while( StrTokOp.hasMoreTokens(tok) ) { m_Device->Append( wxString( StrTokOp.nextToken(tok), wxConvUTF8 ) ); } StrTokOp.base.del(tok); } if( wDigInt.getbps( m_Props ) == 9600 ) m_BPS->SetSelection(0); else if( wDigInt.getbps( m_Props ) == 38400 ) m_BPS->SetSelection(2); else if( wDigInt.getbps( m_Props ) == 57600 ) m_BPS->SetSelection(3); else if( wDigInt.getbps( m_Props ) == 115200 ) m_BPS->SetSelection(4); else if( wDigInt.getbps( m_Props ) == 125000 ) m_BPS->SetSelection(5); else m_BPS->SetSelection(1); // default 19200 if( StrOp.equals( wDigInt.sublib_tcp, wDigInt.getsublib(m_Props) )) { m_Sublib->SetSelection(2); m_BPS->Enable(false); m_Device->Enable(false); m_Address->Enable(true); m_Port->Enable(true); } else if( StrOp.equals( wDigInt.sublib_serial, wDigInt.getsublib(m_Props) )) { // Serial m_Sublib->SetSelection(1); m_BPS->Enable(true); m_Device->Enable(true); m_Address->Enable(false); m_Port->Enable(false); } else { m_Sublib->SetSelection(0); m_BPS->Enable(false); m_Device->Enable(false); m_Address->Enable(true); m_Port->Enable(true); } m_CRC->SetValue( wRocNet.iscrc(rnini) ? true:false); m_Sack->SetValue( wRocNet.issack(rnini) ? true:false); m_ShutdownAll->SetValue( wRocNet.isshutdownall(rnini) ? true:false); m_Watchdog->SetValue( wRocNet.iswd(rnini) ? true:false); m_Address->SetValue( wxString( wRocNet.getaddr( rnini ), wxConvUTF8 ) ); m_Port->SetValue( wRocNet.getport( rnini ) ); m_LocoBus->SetValue( wRocNet.getlcbus( rnini ) ); m_WatchNodes->SetValue( wRocNet.iswatchnodes(rnini) ? true:false); initNodeList(); }