// KinematicsBasicMapping.h: interface for the CKinematicsBasicMapping class.
//
//////////////////////////////////////////////////////////////////////

// **** what is this value???
#if !defined(AFX_KINEMATICSBASICMAPPING_H__876A0A72_6EC3_48D0_9040_60AE3DA2F3C7__INCLUDED_)
#define AFX_KINEMATICSBASICMAPPING_H__876A0A72_6EC3_48D0_9040_60AE3DA2F3C7__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "stdafx.h"

class CKinematicsBasicMapping : public CKinematics
{
public:

	bool XmapValid = false;
	bool YmapValid = false;
	bool ZmapValid = false;
	bool AmapValid = false;
	bool BmapValid = false;
	bool CmapValid = false;
	double XscrewMap[2] = { 1 };
	double YscrewMap[2] = { 1 };
	double ZscrewMap[2] = { 1 };
	double AscrewMap[2] = { 1 };
	double BscrewMap[2] = { 1 };
	double CscrewMap[2] = { 1 };
	double XmapInc;
	double YmapInc;
	double ZmapInc;
	double AmapInc;
	double BmapInc;
	double CmapInc;
	int XmapNrows;
	int YmapNrows;
	int ZmapNrows;
	int AmapNrows;
	int BmapNrows;
	int CmapNrows;
	double XmapOffset;
	double YmapOffset;
	double ZmapOffset;
	double AmapOffset;
	double BmapOffset;
	double CmapOffset;	
	double _MaxLinearLength = 0.0;;
	CKinematicsBasicMapping();
	double mapDouble(double startVal, double in_min, double in_max, double out_min, double out_max);
	virtual ~CKinematicsBasicMapping();
	virtual int TransformCADtoActuators(double x, double y, double z, double a, double b, double c, double *Acts, bool NoGeo = false);
	virtual int TransformActuatorstoCAD(double *Acts, double *x, double *y, double *z, double *a, double *b, double *c, bool NoGeo = false);
	int ReadScrewData(const char *name, int *screwMapNrows, double *mapInc, double *offset, double *screwMap, bool *ScrewMapValid);
};
// **** update or clean this line to to whatever needed above
#endif // !defined(AFX_KINEMATICSBASICMAPPING_H__876A0A72_6EC3_48D0_9040_60AE3DA2F3C7__INCLUDED_)
