Example #1
0
void CBoxProxyView::drawContact(Contact& con)
{
	glColor3f(0.0,1,1);
	drawBoxLines(con.A);
	drawBoxLines(con.B);
	glColor3f(0.0,1,0);
	if (con.conType==1)
		glColor3f(1,1,0);
	glPointSize(10);
	glBegin(GL_POINTS);
	for (int i=0;i<con.pointNum;i++)
	{
		glVertex3f(con.points[i][0],con.points[i][1],con.points[i][2]);
	}
	glEnd();
	glPointSize(1);

	glLineWidth(5);
	glBegin(GL_LINES);
	for (int i=0;i<con.pointNum;i++)
	{
		double scale=0.1;
		glVertex3f(con.points[i][0],con.points[i][1],con.points[i][2]);
		glVertex3f(con.points[i][0]+con.nDir[0]*scale,con.points[i][1]+con.nDir[1]*scale,con.points[i][2]+con.nDir[2]*scale);
		//glVertex3f(con.points[i][0],con.points[i][1],con.points[i][2]);
		//glVertex3f(con.points[i][0]+con.fDirU[0]*scale,con.points[i][1]+con.fDirU[1]*scale,con.points[i][2]+con.fDirU[2]*scale);
		//glVertex3f(con.points[i][0],con.points[i][1],con.points[i][2]);
		//glVertex3f(con.points[i][0]+con.fDirV[0]*scale,con.points[i][1]+con.fDirV[1]*scale,con.points[i][2]+con.fDirV[2]*scale);
	}
	glEnd();
	glLineWidth(1);

}
Example #2
0
void CBoxProxyView::drawTest()
{
	glColor3f(1.0,0,0);
	//drawBoxLines(*testBoxA);
	if (GraphCreated&&!GraphFinished)
	{
		for (int i=0;i<conGraph->getNodeNum();i++)
		{
			Box b(conGraph->getNode(i));
			drawBoxLines(b);
		}
		for (int i=0;i<conGraph->getNodeNum()-1;i++)
		{
			for (int j=i+1;j<conGraph->getNodeNum();j++)
			{
				Contact con=conGraph->getActiveEdge(i,j);
				if (!con.NoExtension)
					drawContact(con);
			}
		}
	}
	if (GraphFinished)
	{
		for (int i=0;i<conGraph->getNodeNum();i++)
		{
			Box b(conGraph->getBestBox(i));
			drawBoxLines(b);
		}
		for (int i=0;i<conGraph->getNodeNum()-1;i++)
		{
			for (int j=i+1;j<conGraph->getNodeNum();j++)
			{
				Contact con=conGraph->getBestEdge(i,j);
				if (!con.NoExtension)
					drawContact(con);
			}
		}
	}
	/*glPointSize(5);
	glBegin(GL_POINTS);
	glVertex3f(-0.077,0.06,1.50);
	glEnd();
	glPointSize(1);*/
	//drawContact(conGraph->getActiveEdge(1,2));
	//drawBoxLines(*testBoxA);
	//drawBoxLines(*testBoxB);
	//drawBoxLines(*testBoxC);

	//Contact con=testConSet.at(0);
	//drawContact(con);
	//drawContact(testConSet2.at(1));
}
Example #3
0
/* Draw the bounding box */
void TumblerWindow::drawBBox(TumblerStruct *xtum)
{
  Imat *mat;
  Ipoint transp;
  int width = xtum->width;

  if (!xtum->bbox)
    return;

  mat = imodMatNew(3);
  b3dColorIndex(App->foreground);     
  if (xtum->stereo)
    width/=2;

  transp.x = transp.y = transp.z = xtum->zoom;
  imodMatScale(mat, &transp);      
  transp.x = ((float)width *0.5f);
  transp.y = ((float)xtum->height*0.5f);
  transp.z = 0;

  imodMatRot(mat, (double)xtum->gamma, 2);
  imodMatRot(mat, (double)xtum->beta,  1);
  imodMatRot(mat, (double)xtum->alpha, 0);
  imodMatTrans(mat, &transp);

  drawBoxLines(xtum, mat);

  if (xtum->stereo){
    imodMatId(mat);
    transp.x = transp.y = transp.z = xtum->zoom;
    imodMatScale(mat, &transp);
    imodMatRot(mat, (double)xtum->gamma, 2);
    imodMatRot(mat, (double)xtum->beta + xtum->plax,  1);
    imodMatRot(mat, (double)xtum->alpha, 0);
    transp.x = ((float)width * 1.5f);
    transp.y = ((float)xtum->height*0.5f);
    transp.z = 0;
    imodMatTrans(mat, &transp);

    drawBoxLines(xtum, mat);
  }
  imodMatDelete(mat);

  return;
}
Example #4
0
void CBoxProxyView::OnDraw(CDC* /*pDC*/)
{
	CBoxProxyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码
	// 清除颜色
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glPushMatrix();
	{
		// 绘制坐标系

		if (gettingDepth)
			glVertexAttrib4d(ColorPos,0.0,1.0,0.0,0.0);


		if(!gettingDepth){
			drawUnitAxes();
			drawTest();
			
			if (showOrig)
			{
				glColor3f(0,1,0);
				for (int i=0;i<boxes.size();i++)
					drawBoxLines(boxes.at(i));
			}

			if (showExtend)
			{
				glColor3f(0,1,1);
				for (int i=0;i<extendedBoxes.size();i++)
					drawBoxLines(extendedBoxes.at(i));
			}
			
		}
		else if(testMode){
			for (int i=0;i<boxes.size();i++)
				drawBoxPolygons(boxes.at(i));
		}
		else{
			for (int i=0;i<boxes.size();i++)
				drawBoxPolygons(boxes.at(i));
		}
			


	}
	glPopMatrix();
	// 交换缓冲区
	if (gettingDepth)
	{
		GetDepthAfter();
	}
	else
		SwapBuffers(wglGetCurrentDC());


}