public void Draw() { if (!render) { return; } Vector3 rp1 = (Globals.ort1 * (connector.p1.x - Globals.pos_rc.x) + Globals.ort2 * (connector.p1.y - Globals.pos_rc.y) + Globals.ort3 * (connector.p1.z - Globals.pos_rc.z)) * Globals.scale + Globals.vcenter; Vector3 rp2 = (Globals.ort1 * (connector.p2.x - Globals.pos_rc.x) + Globals.ort2 * (connector.p2.y - Globals.pos_rc.y) + Globals.ort3 * (connector.p2.z - Globals.pos_rc.z)) * Globals.scale + Globals.vcenter; color.r = 0.2f + activity; render.Setup(color); render.Draw(rp1, rp2); }
public void Draw() { if (!render) { return; } //Vector3 rpos = (ort1*p1->getX() + ort2*p1->getY() + ort3*(GroundHeight-0.1))*scale + vcenter; // shadow ?!! haha //Vector3 rpos = (Globals.ort1 * (p1.x - Globals.pos_rc.x) + Globals.ort2 * (p1.y - Globals.pos_rc.y) + Globals.ort3 * (Globals.GroundHeight - 0.1f - Globals.pos_rc.z)) * Globals.scale + Globals.vcenter; //Vector3 rpos2 = (Globals.ort1 * (p2.x - Globals.pos_rc.x) + Globals.ort2 * (p2.y - Globals.pos_rc.y) + Globals.ort3 * (Globals.GroundHeight - 0.1f - Globals.pos_rc.z)) * Globals.scale + Globals.vcenter; //rpos = (ort1*p2->getX() + ort2*p2->getY() + ort3*(GroundHeight-0.1))*scale + vcenter; /* * glLineWidth(5); * glBegin(GL_LINES); * glColor3ub(150, 150, 150); * glVertex3d( rpos.x,rpos.y,rpos.z); * glVertex3d( rpos2.x,rpos2.y,rpos2.z); * glEnd(); * * glLineWidth(3); * glBegin(GL_LINES); * glColor3ub(80, 80, 80); * glVertex3d( rpos.x,rpos.y,rpos.z); * glVertex3d( rpos2.x,rpos2.y,rpos2.z); * glEnd(); */ //render[0].Draw(rpos, rpos2); if (status == 0) { render.Setup(Color.gray); } else { springColor.a = 0.5f; render.Setup(springColor); } //rpos = (ort1*p1->getX() + ort2*p1->geY() + ort3*p1->getZ())*scale + vcenter; Vector3 rpos = (Globals.ort1 * (p1.x - Globals.pos_rc.x) + Globals.ort2 * (p1.y - Globals.pos_rc.y) + Globals.ort3 * (p1.z - Globals.pos_rc.z)) * Globals.scale + Globals.vcenter; //rpos = (ort1*p2->getX() + ort2*p2->getY() + ort3*p2->getZ())*scale + vcenter; Vector3 rpos2 = (Globals.ort1 * (p2.x - Globals.pos_rc.x) + Globals.ort2 * (p2.y - Globals.pos_rc.y) + Globals.ort3 * (p2.z - Globals.pos_rc.z)) * Globals.scale + Globals.vcenter; render.Draw(rpos, rpos2); }
public void Draw(Vector3 p1, Vector3 p2, Color c, bool select = false) { if (!render) { return; } float width = sizeNormal; if (select) { width = sizeSelect; } render.Setup(c, width); render.Draw(p1, p2); }
public void Draw() { if (!render) { return; } Color c = color; float r = color.r; float g = color.g; float b = color.b; bool pseudoneuron = false; if (activity < 1) { r /= 3; g /= 3; b /= 3; r += (r * 2.0f * activity); g += (g * 2.0f * activity); b += (b * 2.0f * activity); } Vector3 rpos = (Globals.ort1 * (pos.x - Globals.pos_rc.x) + Globals.ort2 * (pos.y - Globals.pos_rc.y) + Globals.ort3 * (pos.z - Globals.pos_rc.z)) * Globals.scale + Globals.vcenter; //rpos2 = (Globals.ort1 * (pos.x - Globals.pos_rc.x) + Globals.ort2 * (pos.y - Globals.pos_rc.y) + Globals.ort3 * (pos.z - Globals.pos_rc.z + 0.1f)) * Globals.scale + Globals.vcenter; //p = rpos2 - rpos; //h = p.magnitude; if ((mName[0] == 'P') && (mName[1] == 's') && (mName[2] == 'e')) { pseudoneuron = true; } if (select) { if (pseudoneuron) { c = mColorPseSel; } else { c = mColorSel; } render.Setup(c, sizeSelect); } else { render.Setup(c, sizeNormal); } render.Draw(rpos); /**/ if (select) { //if(mName.magnitude<5) //glPrint2(rpos.x, rpos.y, rpos.z, (byte)min(255, r * 1.7), (byte)min(255, g * 1.7), (byte)min(255, b * 1.7), mName.c_str()); } /* * if(highlight) * if(mName.magnitude<5) * glPrint2(rpos.x,rpos.y,rpos.z,(byte)min(255,r*1.7),(byte)min(255,g*1.7),(byte)min(255,b*1.7),mName.c_str()); */ /**/ //int n_axon_branches = 0; //rpos2 = new Vector3(0, 0, 0); //if(mSelected) //if(mName.magnitude>5) { /* * for(unsigned int j = 0; j < axon.size(); ++j) * { * rpos2+= (ort1*(axon[j]->getPos().x - pos_rc.x) + ort2*(axon[j]->getPos().y - pos_rc.y) + ort3*(axon[j]->getPos().z - pos_rc.z))*scale + vcenter;// 蝾麝?铗 牝 桎篁 忮蜮??疣珥 礤轲铐囔 + n_axon_branches++; + + } + + + //glEnd(); + if(n_axon_branches>0) + { + rpos2 /= n_axon_branches; + glPushMatrix(); + glColor3ub(r, g, b); + + glTranslated( rpos2.x, rpos2.y, rpos2.z ); + gluSphere(quadObj,0.7f*neuron_normal*scale ,8,8); + glPopMatrix(); + } + + glColor3ub(min(255,r*1.0),min(255,g*1.0),min(255,b*1.0)); + if(n_axon_branches>0) + { + //rpos2 /= n_axon_branches; + p = rpos2 - rpos; + h = p.magnitude; + + glPushMatrix(); + glTranslated(rpos.x, rpos.y, rpos.z); + glRotated(180.0f*(float)atan2(p.x,p.z)/pi,0,1,0); + glRotated(-180.0f*(float)atan2(p.y,sqrt(p.x*p.x+p.z*p.z))/pi,1,0,0); + gluCylinder(quadObj, 0.005*scale, 0.005*scale, h, 16, 16); + glPopMatrix(); + + rpos = rpos2; + } */ Vector3 rpos2; int link_with_muscle = 0; mColorAxon = Color.black; drawPos = pos.pos; for (int j = 0; j < mAxon.Count; ++j) { link_with_muscle = 0; if ((mAxon[j].getTargName()[0] == 'D') || (mAxon[j].getTargName()[0] == 'V')) { if ((mAxon[j].getTargName()[1] == 'R') || (mAxon[j].getTargName()[1] == 'L')) { if ((mAxon[j].getTargName()[2] == '0') || (mAxon[j].getTargName()[2] == '1') || (mAxon[j].getTargName()[2] == '2')) { link_with_muscle = 1; if ((mName[0] == 'P') && (mName[1] == 's' && (mName[2] == 'e'))) { if (mName[3] == '_') { if (((mName[4] == 'V') || (mName[4] == 'D')) && (mName[5] == 'B')) { link_with_muscle = 2; } } } } } } if (select) { rpos2 = (Globals.ort1 * (mAxon[j].getPos().x - Globals.pos_rc.x) + Globals.ort2 * (mAxon[j].getPos().y - Globals.pos_rc.y) + Globals.ort3 * (mAxon[j].getPos().z - Globals.pos_rc.z)) * Globals.scale + Globals.vcenter; string tmp_name = mAxon[j].getTargName(); if (((tmp_name[0] == 'D') && (tmp_name[1] == 'L')) || ((tmp_name[0] == 'D') && (tmp_name[1] == 'R')) || ((tmp_name[0] == 'V') && (tmp_name[1] == 'L')) || ((tmp_name[0] == 'V') && (tmp_name[1] == 'R'))) { mColorAxon = Color.green; } else { mColorAxon = Color.red; } mAxon[j].Draw(rpos, rpos2, mColorAxon, select); } else if ((link_with_muscle != 1) || select) { rpos2 = (Globals.ort1 * (mAxon[j].getPos().x - Globals.pos_rc.x) + Globals.ort2 * (mAxon[j].getPos().y - Globals.pos_rc.y) + Globals.ort3 * (mAxon[j].getPos().z - Globals.pos_rc.z)) * Globals.scale + Globals.vcenter; //p = rpos2 - rpos; //h = p.magnitude; /* if(mAxon[j]->getTargName().magnitude<5) * glPrint2(rpos2.x,rpos2.y,rpos2.z,150,150,150,mAxon[j] ->getTargName().c_str());*/ //glPrint2(rpos2.x,rpos2.y,rpos2.z,150,150,150,mAxon[j] ->getTargName().c_str()); string tmp_name = mAxon[j].getTargName(); if (((tmp_name[0] == 'D') && (tmp_name[1] == 'L')) || ((tmp_name[0] == 'D') && (tmp_name[1] == 'R')) || ((tmp_name[0] == 'V') && (tmp_name[1] == 'L')) || ((tmp_name[0] == 'V') && (tmp_name[1] == 'R'))) { mColorAxon.r = Mathf.Min(r * 1f, 1); mColorAxon.g = Mathf.Min(g * 1f, 1); mColorAxon.b = Mathf.Min(b * 1f, 1); mColorAxon = Color.yellow; } else { mColorAxon.r = Mathf.Min(r * 0.6f, 1); mColorAxon.g = Mathf.Min(g * 0.6f, 1); mColorAxon.b = Mathf.Min(b * 0.6f, 1); mColorAxon = Color.gray; } mAxon[j].Draw(rpos, rpos2, mColorAxon, select); //glPushMatrix(); //glTranslated(rpos.x, rpos.y, rpos.z); //glRotated(180.0f * (float)atan2(p.x, p.z) / pi, 0, 1, 0); //glRotated(-180.0f * (float)atan2(p.y, sqrt(p.x * p.x + p.z * p.z)) / pi, 1, 0, 0); //gluCylinder(quadObj, 0.0025 * scale, 0.001 * scale, h, 16, 16); //glPopMatrix(); } else { mAxon[j].Hide(); } } //end of for }