<DIV>hi;</DIV>
<DIV> why actor2->RotateWXYZ(-5,1,0,0) can't change ths collide->GetNumberOfContacts();collide->GetNumberOfContacts() is always 0,actually two actors have been collided;<BR></DIV>
<DIV> </DIV>
<DIV>vtkSphereSource *sphere0=vtkSphereSource::New();<BR> sphere0->SetPhiResolution(30);<BR> sphere0->SetThetaResolution(30);<BR> sphere0->SetCenter(-0.7,0,0);<BR> sphere0->Update(); <BR> vtkSphereSource *sphere1=vtkSphereSource::New();<BR> sphere1->SetPhiResolution(30);<BR> sphere1->SetThetaResolution(30);<BR> sphere0->SetCenter(1.7,0,0);<BR> sphere1->Update(); <BR> vtkMatrix4x4 *matrix0=vtkMatrix4x4::New();<BR> vtkMatrix4x4 *matrix1=vtkMatrix4x4::New(); <BR> vtkCollisionDetectionFilter *collide=vtkCollisionDetectionFilter::New();<BR> collide->SetInput(0,sphere0->GetOutput());<BR> collide->SetMatrix(0,matrix0);<BR> collide->SetInput(1,sphere1->GetOutput());<BR> collide->SetMatrix(1,matrix1);<BR> collide->SetBoxTolerance(0.0);<BR> collide->SetCellTolerance(0.0);<BR> collide->SetNumberOfCellsPerBucket(2);<BR> collide->GetCollisionModeMaxValue();<BR> collide->GeneratePolydataOutputOn();<BR> vtkTextActor *txt=vtkTextActor::New();<BR> txt->GetTextProperty()->SetFontFamilyToCourier(); <BR> vtkSphereSource *point=vtkSphereSource::New();<BR> point->SetRadius(0.01);<BR> vtkPolyData *pointdata=vtkPolyData::New();<BR> pointdata->SetPoints(collide->GetContactPoints()); <BR> vtkGlyph3D *points=vtkGlyph3D::New();<BR> points->SetInput(pointdata);<BR> points->SetSource(point->GetOutput()); <BR> vtkPolyDataMapper *mapper1=vtkPolyDataMapper::New();<BR> mapper1->SetInput(collide->GetOutput(0));<BR> vtkActor *actor1=vtkActor::New();<BR> actor1->SetMapper(mapper1);<BR> actor1->GetProperty()->BackfaceCullingOn();<BR> actor1->SetUserMatrix(matrix0); <BR> vtkPolyDataMapper *mapper2=vtkPolyDataMapper::New();<BR> mapper2->SetInput(collide->GetOutput(1));<BR> vtkActor *actor2=vtkActor::New();<BR> actor2->SetMapper(mapper2);<BR> actor2->GetProperty()->BackfaceCullingOn();<BR> actor2->SetUserMatrix(matrix1);<BR> vtkPolyDataMapper *mapper3=vtkPolyDataMapper::New();<BR> mapper3->SetInput(points->GetOutput());<BR> vtkActor *actor3=vtkActor::New();<BR> actor3->SetMapper(mapper3);<BR> actor3->GetProperty()->SetColor(0,0,0);<BR> <BR> vtkRenderer *ren=vtkRenderer::New();<BR> ren->AddActor(actor1);<BR> ren->AddActor(actor2);<BR>//ren AddObserver EndEvent ChangeOrigin<BR>//ren AddActor actor3<BR> ChangeOrigin *changeorigin=ChangeOrigin::New();<BR> changeorigin->actor1=actor1;<BR> changeorigin->actor2=actor2;<BR> changeorigin->collide=collide;<BR> ren->AddObserver(vtkCommand::EndEvent,changeorigin);<BR> cbCollision *cbcollision=cbCollision::New();<BR> cbcollision->collide=collide;<BR> cbcollision->txt=txt;<BR> cbcollision->points=points;<BR> collide->AddObserver(vtkCommand::AnyEvent,cbcollision);<BR> //ren->AddActor(actor3); <BR> ren->AddActor(txt);<BR> ren->SetBackground(0.5,0.5,0.5);<BR> <BR> vtkRenderWindow *renWin=vtkRenderWindow::New();<BR> renWin->AddRenderer(ren);<BR> int sum,j;<BR> j=1;<BR> for(int i=0;i<5;i++){<BR> renWin->Render();<BR> actor2->RotateWXYZ(-5,1,0,0);</DIV>
<DIV> collide->Update();<BR> sum=collide->GetNumberOfContacts();<BR> j++;<BR> }<BR> vtkInteractorStyleJoystickActor *istyle=vtkInteractorStyleJoystickActor::New();<BR> vtkRenderWindowInteractor *iren=vtkRenderWindowInteractor::New();<BR> iren->SetRenderWindow(renWin);<BR> iren->SetInteractorStyle(istyle);</DIV>
<DIV> iren->Initialize();<BR> iren->Start();</DIV><SPAN ></SPAN><br><!-- footer --><br><br><br><br><br><div style="border-bottom:1px solid #999"></div><br>
<font color="black" style="font-size:14.8px">你 知 道 中 国 每 年 耗 费 多 少 一 次 性 筷 子 吗 ?</font>
<br>
<font style="font-size:13px;line-height:160%;color:blue">450亿双!相当于170万立方米的木材,大约需要砍伐2500万棵大树!</font> <a href="http://www.126.com/" target="_blank" style="font-size:13px;line-height:160%;color:blue"><网易邮箱公益宣传>
</a>