• 大小: 4.01MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-12-23
  • 语言: 其他
  • 标签: 转换矩阵  

资源简介

求解两个坐标洗之间的转换矩阵,即求解旋转量和平移量

资源截图

代码片段和文件信息

/************************************************************************/
/* file:Main.cpp                                                        */
/* author: Hao Shuang                                                   */
/* created date: 10/24/2010                                             */
/* modified date: 2010年10月24日17:05:14                                 */
/* function: utilities handle the tracker                               */
/************************************************************************/
#include “CollisionDetection.h“

//constructor: insert  the elements in the const float array into the left vector
CollisionDetection::CollisionDetection()
{
//连接到命名管道
connect_pipe();

for (int i=0;i<4;i++)
{
Vec3f temp(points[i][0]points[i][1]points[i][2]);
this->left.push_back(temp);
}

//{4.04.010.0};//{-2.00.010.0}
offs[0]=4.0;
offs[1]=4.0;
offs[2]=10.0;
}

CollisionDetection::~CollisionDetection()
{

}

int CollisionDetection::connect_pipe()
{
if (FALSE==WaitNamedPipe(“\\\\.\\pipe\\TrackerService“NMPWAIT_WAIT_FOREVER))
{
std::cout<<“Cannot connect to the server...“< Sleep(2000);
return -1;
}
else
{
std::cout<<“connect to the server successfully...“< }

createHandle=CreateFile(“\\\\.\\pipe\\TrackerService“GENERIC_READ0NULLOPEN_EXISTINGFILE_ATTRIBUTE_NORMALNULL);
if (createHandle==INVALID_HANDLE_VALUE)
{
std::cout<<“open the pipe failed...“< return -1;
}
else
{
std::cout<<“open the pipe successfully...“< }

return 0;
}

//更新跟踪器数据
void CollisionDetection::updateData()
{
//read record from the named pipe
DWORD lpNumberOfBytesRead;
ReadFile(createHandle&darsizeof(dar)(LPDWORD)&lpNumberOfBytesReadNULL);
std::cout<}

//得到传感器缺口位置的坐标
void CollisionDetection::getRealPosition(float res[]int x0int y0int z0)
{
updateData();
res[0]=dar.x+x0*dar.s[0][0]+y0*dar.s[1][0]+z0*dar.s[2][0];
res[1]=dar.y+x0*dar.s[0][1]+y0*dar.s[1][1]+z0*dar.s[2][1];
res[2]=dar.z+x0*dar.s[0][2]+y0*dar.s[1][2]+z0*dar.s[2][2];
}

//fit for array
void CollisionDetection::equation(float res[] float a[] float b[])
{
res[0] = (a[2] * b[1] - b[2] * a[1]) / (a[0] * b[1] - b[0] * a[1]);
res[1] = (a[2] - a[0] * res[0]) / a[1];
}

//fit for variants
void CollisionDetection::equation2(float *x float *y float a1 float b1 float c1 float a2 float b2 float c2)
{
*x = (c1 * b2 - c2 * b1) / (a1 * b2 - a2 * b1);
*y = (c1 - a1 * *x) / b1;
}


void CollisionDetection::equation3(float res[] float m[] float n[] float p[])
{
equation2(&(res[0]) &(res[1]) m[0] * p[2] - p[0] * m[2] m[1] * p[2] - p[1] * m[2] 
m[3] * p[2] - p[3]  * m[2] n[0] * p[2] - p[0] * n[2] n[1] * p[2] - p[1] * n[2] n[3] * p[2] - p[3] * n[2]);
res[2]= (m[3] - m[0] * res[0] - m[1] * res[1]) / m[2];
}

//验证上述计算三元一次方程组的函数是否正确
void CollisionDetection

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     285444  2010-07-17 17:13  CollisionDetection\CollisionDetection\CollideLIB.lib

     文件       8058  2011-03-03 21:58  CollisionDetection\CollisionDetection\CollisionDetection.cpp

     文件       2385  2011-03-03 21:55  CollisionDetection\CollisionDetection\CollisionDetection.h

     文件       1494  2010-11-25 10:48  CollisionDetection\CollisionDetection\CollisionDetection.ncb

     文件       5617  2011-05-11 16:59  CollisionDetection\CollisionDetection\CollisionDetection.vcproj

     文件       1427  2011-05-11 16:59  CollisionDetection\CollisionDetection\CollisionDetection.vcproj.PC-201007171505.Administrator.user

     文件      19832  2011-03-03 21:57  CollisionDetection\CollisionDetection\Debug\BuildLog.htm

     文件        663  2010-11-22 20:17  CollisionDetection\CollisionDetection\Debug\CollisionDetection.exe.embed.manifest

     文件        728  2010-11-22 20:17  CollisionDetection\CollisionDetection\Debug\CollisionDetection.exe.embed.manifest.res

     文件        621  2011-03-03 21:57  CollisionDetection\CollisionDetection\Debug\CollisionDetection.exe.intermediate.manifest

     文件     218829  2011-03-03 21:57  CollisionDetection\CollisionDetection\Debug\CollisionDetection.obj

     文件      58410  2011-03-03 21:56  CollisionDetection\CollisionDetection\Debug\Main.obj

     文件         69  2011-03-03 21:57  CollisionDetection\CollisionDetection\Debug\mt.dep

     文件      35012  2010-11-22 20:17  CollisionDetection\CollisionDetection\Debug\polytope.obj

     文件     320128  2011-02-25 21:39  CollisionDetection\CollisionDetection\Debug\Transform.obj

     文件     781312  2011-03-03 21:57  CollisionDetection\CollisionDetection\Debug\vc90.idb

     文件     348160  2011-03-03 21:57  CollisionDetection\CollisionDetection\Debug\vc90.pdb

     文件      28455  2010-11-10 18:41  CollisionDetection\CollisionDetection\jama_eig.h

     文件       3721  2011-05-11 16:56  CollisionDetection\CollisionDetection\Main.cpp

     文件         33  2010-11-05 13:49  CollisionDetection\CollisionDetection\PCIBird3.ini

     文件       2322  2010-11-12 11:32  CollisionDetection\CollisionDetection\polytope.Cpp

     文件        730  2010-07-17 16:24  CollisionDetection\CollisionDetection\polytope.H

     文件       4883  2005-02-11 14:21  CollisionDetection\CollisionDetection\tnt_array1d.h

     文件       5173  2010-11-10 18:40  CollisionDetection\CollisionDetection\tnt_array2d.h

     文件      10757  2004-10-15 17:06  CollisionDetection\CollisionDetection\tnt_cmat.h

     文件       4396  2004-11-16 14:50  CollisionDetection\CollisionDetection\tnt_i_refvec.h

     文件        494  2004-10-15 17:06  CollisionDetection\CollisionDetection\tnt_math_utils.h

     文件       1585  2004-10-15 17:06  CollisionDetection\CollisionDetection\tnt_subscript.h

     文件       7175  2004-11-16 14:36  CollisionDetection\CollisionDetection\tnt_vec.h

     文件       5110  2011-02-25 16:16  CollisionDetection\CollisionDetection\Transform.cpp

............此处省略19个文件信息

评论

共有 条评论