| Why overcomplicate it for the sake of creating a global pivot which is re-used.   I'd imagine it's also quicker than what you have. 
 That said - this is less code ..
 
 
 
;; some geometry
Graphics3D 800,600,0,2
SetBuffer BackBuffer()
cam = CreateCamera()
CameraZoom cam,1.6
obj1 = CreateCone()
RotateMesh obj1, 90,0,0
ScaleMesh obj1,2,2,4
obj2 = CreateCube()
EntityColor obj1,255,0,0
EntityColor obj2,0,255,0
plane = CreatePlane()
EntityPickMode plane,2
PositionEntity plane, 0, -1, 0
PositionEntity cam,0,50,0
PointEntity cam,plane
While Not KeyHit(1)
 If CameraPick (cam,MouseX(),MouseY())
	
  PositionEntity obj2,PickedX(),PickedY(),PickedZ()
	TFormPoint PickedX() , 0 , PickedZ()  , 0 , obj1
	angle# = ATan2( TFormedZ() , TFormedX() ) - 90
	TurnEntity obj1,0, angle * .1,0, 1
			
 EndIf
 UpdateWorld()
 RenderWorld()
 Text 10,10,"X: " + EntityX(obj2)
 Text 10,30,"Y: " + EntityY(obj2)
 Text 10,50,"Z: " + EntityZ(obj2)
 Text 10,70,"ANGLE: " + angle
Text 10,80,"TX : "+TFormedX()
Text 10,90,"Tz : "+TFormedZ()
 Flip
 
 Wend
ClearWorld()
EndGraphics()
End
 
 Stevie
 
 
 |