Exemplo n.º 1
0
void PosController::MultiMove(float xPercent, float yPercent, float zPercent)
{
	m_xPercent = xPercent;
	m_yPercent = yPercent;
	m_zPercent = zPercent;
	
	if (!EqualToZero(zPercent))
	{
		ZMove();
		return;
	}

	if (!EqualToZero(xPercent) && !EqualToZero(yPercent))
	{
		XYMove();
		return;
	}
	if(!EqualToZero(xPercent))
	{
		XMove();
		return;
	}
	
	if (!EqualToZero(yPercent))
	{
		YMove();
	}
}
Exemplo n.º 2
0
void CCamera::Update (float timestep) {
	if (fore)		ZMove (-2 * timestep);
	if (back)		ZMove (2 * timestep);
	if (left)		XMove (-1 * timestep);
	if (right)		XMove (1 * timestep);
	if (up)			YMove (1 * timestep);
	if (down)		YMove (-1 * timestep);
	if (headleft)	RotateHead (5 * timestep);
	if (headright)	RotateHead (-5 * timestep);
	if (pitchup)	RotatePitch (-2 * timestep);
	if (pitchdown)	RotatePitch (2 * timestep);

	glLoadIdentity ();
	glRotatef (-vpitch, 1.0, 0.0 , 0.0);
	glRotatef (-vhead, 0.0, 1.0 , 0.0);
	glTranslatef (-xview, -yview, -zview);
}
Exemplo n.º 3
0
/// <summary>
/// 多轴运动函数
/// </summary>
/// <param name="UseAxis">轴号:0:X   1:Y   2:Z   3:T</param>
/// <param name="UseStart"></param>
/// <param name="UseAcc"></param>
/// <param name="UseSpeed"></param>
/// <param name="UseMove"></param>运动方向: 
void PosController::axisXYMove( double UseStart, double UseAcc, double UseSpeed)
{
	if (!check_Val(UseStart, MAX_START_SPEED/*,  HT_Public.AxisName[this.UseAxis] + " 轴起始速度必须正数,且只允许[ 0-" + MaxStartSpeed.ToString().Trim() + " ]之间数值!"*/))
	{
		return;
	}
	if (!check_Val(UseAcc, MAX_ACC_SPEED/*, HT_Public.AxisName[this.UseAxis] + " 轴加减速度必须正数,且只允许[ 0-" + MaxAccSpeed.ToString().Trim() + " ]之间数值!"*/))
	{
		return;
	}
	if (!check_Val(UseSpeed, MAX_RUN_SPEED/*, HT_Public.AxisName[this.UseAxis] + " 轴运行速度必须为正数,且只允许[ 0-" + MaxRunSpeed.ToString().Trim() + " ]之间数值!"*/))
	{
		return;
	}

	// 	if (!check_Val(UseMove, 0/*, HT_Public.AxisName[this.UseAxis] + " 轴运行位移必须为正数!"*/))
	// 	{
	// 		return;
	// 	}

	double UseEncConst = PulseUnit[X_Axis];  //获取脉冲当量


	float tempPercent = min(abs(m_xPercent), abs(m_yPercent));

	int start   = (int)(UseStart * UseEncConst * tempPercent);		    //启动速度
	double fAcc = (double)(UseAcc * UseEncConst * tempPercent);				//加速度
	int speed   = (int)(UseSpeed * UseEncConst * tempPercent);		    //运行速度
	
	if (!isConnected()) 
	{
		return;
	}
	//检测当量轴是否在运动
	if (!checkAxisDown(X_Axis) || !checkAxisDown(Y_Axis)) 
	{
		return;
	}

	long DistArray[2] = {0};
	DistArray[0] = getUserMove(m_xPercent) * UseEncConst; 
	DistArray[1]= getUserMove(m_yPercent) * UseEncConst;

	//检测轴是否到极限
	if (!check_Limit(X_Axis, getUserMove(m_xPercent),true))
	{
		YMove();
		return;
	}
	if (!check_Limit(Y_Axis, getUserMove(m_yPercent), true))
	{
		XMove();
		return;
	}

	//停止当前轴
	d1000_immediate_stop(X_Axis);
	d1000_immediate_stop(Y_Axis);


	short AxisArray[2] = {X_Axis, Y_Axis};
	d1000_start_t_line (2,AxisArray,DistArray, start, speed,fAcc);
}