00001 // 00002 // DISCLAIMER: 00003 // This software was produced by the National Institute of Standards 00004 // and Technology (NIST), an agency of the U.S. government, and by statute is 00005 // not subject to copyright in the United States. Recipients of this 00006 // software assume all responsibility associated with its operation, 00007 // modification,maintenance, and subsequent redistribution. 00008 // 00009 // See NIST Administration Manual 4.09.07 b and Appendix I. 00010 /* ippAlignResponse class ************************************************ 00011 00012 Use this for data from AlignTool or AlignPart. 00013 00014 In the case of AlignPart, the spec is not clear whether both p (part) 00015 and m (machine) vectors should be returned in the data. Here we assume 00016 that only part vectors are returned. 00017 00018 If an AlignPartCommand has two vectors, the response gives one. In the 00019 command, the first vector is a vector on the part (in part coordinates) 00020 and the second vector is a vector in machine coordinates. Executing 00021 the command is supposed to rotate a rotary table (to which the part is 00022 fastened) so that the vector on the part points in the direction given 00023 by the vector in machine coordinates. The returned data gives the 00024 direction in machine coordinates in which the part vector is actually 00025 pointing after the rotation is finished. If the rotation achieves 00026 perfect alignment, the vector in the response will have the same 00027 values as what the command gave for the vector in machine coordinates. 00028 00029 If an AlignPartCommand has four vectors, they are pairs of part vectors and 00030 machine vectors. The combined rotations of two rotary tables are supposed 00031 to align both pairs. The response in this case has two vectors. The first 00032 gives the actual final direction of the first part vector. The second 00033 gives the actual final direction of the second part vector. 00034 00035 */ 00036 #include "ippResponse.h" 00037 00038 class IPPDME_EXT_CLASS ippAlignResponse : public ippResponse { 00039 00040 private: 00041 double _i1; 00042 double _j1; 00043 double _k1; 00044 double _i2; 00045 double _j2; 00046 double _k2; 00047 bool _has2; 00048 public: 00049 00050 ippAlignResponse( 00051 unsigned int inTagNumber, 00052 double inI1, double inJ1,double inK1 00053 ); 00054 00055 ippAlignResponse( 00056 unsigned int inTagNumber, 00057 double inI1, double inJ1,double inK1, 00058 double inI2, double inJ2, double inK2 00059 ); 00060 00061 virtual ~ippAlignResponse(){} 00062 00063 void setI1(double inI1){ _i1 = inI1; } 00064 void setJ1(double inJ1){ _j1 = inJ1; } 00065 void setK1(double inK1){ _k1 = inK1; } 00066 void setI2(double inI2){ _i2 = inI2; } 00067 void setJ2(double inJ2){ _j2 = inJ2; } 00068 void setK2(double inK2){ _k2 = inK2; } 00069 void setHas2(bool inHas2){ _has2 = inHas2; } 00070 00071 double getI1()const{ return _i1; } 00072 double getJ1()const{ return _j1; } 00073 double getK1()const{ return _k1; } 00074 double getI2()const{ return _i2; } 00075 double getJ2()const{ return _j2; } 00076 double getK2()const{ return _k2; } 00077 bool getHas2()const{ return _has2; } 00078 00079 virtual std::string getResponseString() const; 00080 private: 00081 ippAlignResponse(const ippAlignResponse&); 00082 void operator=(const ippAlignResponse&); 00083 }; 00084 00085 IPP_DECLARE_SMARTPOINTER(ippAlignResponse);