2013-05-24 4 views
-1

this을 시도하고 있지만 3d로하고 상자 대신 2d 원을 사용하고 있습니다.Matplotlib Axes3d, 선이 2 차원 객체와 교차

나는 두 점 [ (0,0,0), (3,4,5) ] 사이에 시작하는 라인을하고

circle = Circle((2, 1), 0.5)

ax.add_patch(circle)

art3d.pathpatch_2d_to_3d(circle, z=1, zdir="x")

을 통해 교차하는 경우는 내가보고 싶지는 경로를 테스트하는 것이 가능 3d 축에 그려진 2D 개체에서 교차합니까? 위의 링크 된 예제에서 path.intersects_circle을 원으로 정의하고 싶습니다.

Bbox 설명서를 통해 살펴 보았는데이 방법을 원으로 사용할 수없는 것 같습니다.

+0

서로 다른 차원에서 정의 된 객체의 교차를 어떻게 정의합니까? 투영의 교차점을 찾고 있습니까? 당신의 질문이 잘되지 않을까 걱정됩니다. –

+0

필자는 필자가 이해 한 바에 따르면,'Bbox'를 통해 한 줄이 지나면 그 줄의 색깔이 바뀐다. 선의 색상을 변경하고 원을 통과하는 선의 수를 기록하려고합니다. 나는 그것이 원을 통과 한 곳의 x, y, z를 구체적으로 알 필요가 없다. 희망이 조금 더 이해가 되니? – ttamscnal

+0

그것이 제가 설명하는 문제의 하류입니다. 개념적으로, 2D 오브젝트가 3D 오브젝트와 교차 할 때 의미하는 것을 이해하지 못합니다. 두 개체가 서로 다른 공간에 정의되어 있기 때문에 그건 나에게 이해가되지 않습니다. –

답변

1

이것은 matplotlib과 관련된 것보다 대수학 문제와 비슷합니다.
이 내가 당신의 질문을 이해하는 방법이다 :이 원 일정한 z=1 에서 비행기에 있습니다 r=0.5

  • 의 반경 (x=2, y=1)에서 원을

    • 1.) 벡터가 x,y 평면에 평행 한 평면을 관통하는 위치와 z=1에있는 평면을 관통 할 위치를 결정해야합니다. 당신이 교차 원이 적용되는 평면의 일부에 속하는 경우 결정해야

      x = 3./(2.**0.5) 
      y = 4./(2.**0.5) 
      z = 1. 
      

      2) : 벡터 당신이 당신의 질문에 지정이 교차로에 있습니다. 서클에 도달하는 최대 y-coordinate1.5입니다. 교차 부분의 y-coordinate은 이미 커집니다. 따라서 직선은 원을 관통하지 않습니다.

      이 모든 내용은 평면과의 교차점을 기준으로 대수 검사를 구현하고이 교차점이 원의 일부인지 판단 할 것을 권장합니다. 그리고 나서 matplotlib을 사용하십시오.

  • 관련 문제