Example #1
0
void gauss(int n, ll p) { // nx(n+1)-Matrix, Körper F_p.
	for (int line = 0; line < n; line++) {
		int swappee = line;
		while (mat[swappee][line] == 0) swappee++;
		swapLines(n, line, swappee);
		normalLine(n, line, p);
		takeAll(n, line, p);
}}
void GLC_CuttingPlane::create3DviewInstance()
{
	Q_ASSERT(GLC_3DWidget::isEmpty());
	// The cutting plane material
	GLC_Material* pMaterial= new GLC_Material(m_Color);
	pMaterial->setOpacity(m_Opacity);

	// Cutting plane 3Dview instance
	GLC_3DViewInstance cuttingPlaneInstance= GLC_Factory::instance()->createCuttingPlane(m_Center, m_Normal, m_L1, m_L2, pMaterial);
	GLC_3DWidget::add3DViewInstance(cuttingPlaneInstance);

	// Normal arrow geometry
	GLC_Arrow* pArrow= new GLC_Arrow(GLC_Point3d(), -glc::Z_AXIS, GLC_3DWidget::widgetManagerHandle()->cameraHandle()->forward().normalize());
	pArrow->setLineWidth(4.5);
	pArrow->setHeadLength(0.15);
	QColor arrowColor(Qt::red);
	arrowColor.setAlphaF(0.4);
	pArrow->setWireColor(arrowColor);

	//Base arrow disc
	pMaterial= new GLC_Material(Qt::red);
	pMaterial->setOpacity(m_Opacity);
	GLC_Disc* pDisc= new GLC_Disc(0.3);
	pDisc->replaceMasterMaterial(pMaterial);

	// Normal arrow + base instance
	GLC_3DRep normalLine(pArrow);
	normalLine.addGeom(pDisc);
	GLC_3DWidget::add3DViewInstance(GLC_3DViewInstance(normalLine));
	GLC_3DWidget::set3DViewInstanceVisibility(1, false);

	// Rotation manipulator
	const double initRadius= 1;
	// Arrond X axis
	pDisc= new GLC_Disc(initRadius);
	pMaterial= new GLC_Material(Qt::red);
	pMaterial->setOpacity(m_Opacity);
	pDisc->replaceMasterMaterial(pMaterial);
	pDisc->setAngle(glc::PI);
	GLC_3DWidget::add3DViewInstance(GLC_3DViewInstance(pDisc));
	GLC_3DWidget::set3DViewInstanceVisibility(2, false);
	// Arround Y axis
	pDisc= new GLC_Disc(initRadius);
	pMaterial= new GLC_Material(Qt::green);
	pMaterial->setOpacity(m_Opacity);
	pDisc->replaceMasterMaterial(pMaterial);
	pDisc->setAngle(glc::PI);
	GLC_3DWidget::add3DViewInstance(GLC_3DViewInstance(pDisc));
	GLC_3DWidget::set3DViewInstanceVisibility(3, false);
	// Arround Z axis
	pDisc= new GLC_Disc(initRadius);
	pMaterial= new GLC_Material(Qt::blue);
	pMaterial->setOpacity(m_Opacity);
	pDisc->replaceMasterMaterial(pMaterial);
	//pDisc->setAngle(glc::PI / 2.0);
	GLC_3DWidget::add3DViewInstance(GLC_3DViewInstance(pDisc));
	GLC_3DWidget::set3DViewInstanceVisibility(4, false);
}