Beispiel #1
0
	void ProjectPoints()
	{


		ListPoint3 	lPoints;
		ListPoint3 	lBoundariesPoints;
		Point3 		lPoint;

		for (SurfelListIterator itEllipse = mEllipses.begin(); itEllipse != mEllipses.end(); ++itEllipse)
		{
			lBoundariesPoints = itEllipse->BoundariesSamples(8);

			for(ListPoint3Iterator it = lBoundariesPoints.begin();it != lBoundariesPoints.end();++it)
			{

				lPoint = ProjectPointToPlane(mNewNormal,mNewCenter,(*it) );
				lPoints.push_back ( lPoint );

			}

			lBoundariesPoints.clear();
		}

		mProjectedPoint.clear();
		mProjectedPoint = lPoints;
	}
Beispiel #2
0
D3DXVECTOR3 KG3DBaseCoordImp::RefineInterPoint( const RepresentData& rpData, const D3DXVECTOR3& vInter, const ResultData& retData )
{
	KG3DCOORD IntersectedCoord = retData.IntersectedCoord;
	if (IntersectedCoord >= KG3DCOORD_FIRST_AXIS && IntersectedCoord < KG3DCOORD_FIRST_AXIS + KG3DCOORD_AXIS_COUNT)
	{
		//投射到轴上得到移动距离
		const D3DXVECTOR3& Axis = D3DXVec3GetNormalOfPlane(IntersectedCoord - KG3DCOORD_FIRST_AXIS);

		//retData.EndPos = retData.StartPos + Axis * D3DXVec3Dot(&vDistance, &Axis);
		return ProjectPointToRay(vInter, rpData.vecPos, Axis);
	}
	else if(IntersectedCoord >= KG3DCOORD_FIRST_PLANE && IntersectedCoord < KG3DCOORD_FIRST_PLANE + KG3DCOORD_PLANE_COUNT)
	{
		const D3DXVECTOR3& vPlaneNormal = D3DXVec3GetNormalOfPlane(IntersectedCoord - KG3DCOORD_FIRST_PLANE);
		return ProjectPointToPlane(vInter, rpData.vecPos, vPlaneNormal);
	}
	else if (IntersectedCoord == KG3DCOORD_INTEGRATION)
	{
		return vInter;
	}
	_ASSERTE(NULL && _T("IntersectedCoord错误"));
	return D3DXVECTOR3(0,0,0);
}