资源简介
求解两个坐标洗之间的转换矩阵,即求解旋转量和平移量
代码片段和文件信息
/************************************************************************/
/* 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.em
文件 728 2010-11-22 20:17 CollisionDetection\CollisionDetection\Debug\CollisionDetection.exe.em
文件 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_subsc
文件 7175 2004-11-16 14:36 CollisionDetection\CollisionDetection\tnt_vec.h
文件 5110 2011-02-25 16:16 CollisionDetection\CollisionDetection\Transform.cpp
............此处省略19个文件信息
- 上一篇:eprime程序设计说明书
- 下一篇:通用收据打印系统
评论
共有 条评论