vpython 예제

VPython 3D 렌더링 엔진에서 제공하는 몇 가지 유사한 개체는 원뿔, 구 및 상자 오브젝트입니다. VPython은 솔리드 오브젝트 외에도 그래프 도구도 제공합니다. 다음은 문서에 나와 있는 VPython의 간단한 그래프의 예입니다. 보이지 않는 오브젝트와 라이트가 나열되지 않습니다(scene.lights는 기존 라이트 목록). 예를 들어 다음에서는 장면의 모든 표시 상자를 빨간색으로 만듭니다. 예를 들어, 달이라는 구를 만들 수 있습니다. 반지름과 위치 외에도 질량(moon.mass) 및 모멘텀(moon.momentum)과 같은 속성을 지정할 수 있습니다. 파이썬 구문에 대한 파이썬의 문서를 참조하십시오. 이 문서에서는 VPython특정 개체 중 몇 가지를 다룹니다. 전체 설명서를 보려면 여기를 클릭하십시오. 실린더 오브젝트는 간단한 VPython 개체의 좋은 예입니다.

다음은 VPython의 문서에 주어진 간단한 실린더의 예입니다 (이전 VPython 구현에서 가져올 모듈은 시각적이 아닌 vpython입니다): 카메라를 직접 제어하는 예는 프로그램 Stonehenge에서 플라이 스루입니다. scene.camera.pos(카메라의 위치) 및 scene.camera.axis(카메라가 가리키는 방향)는 장면을 이동하는 편리한 방법입니다. canvas() 지정된 특성을 가진 캔버스를 만들고 선택한 캔버스로 만들고 반환합니다. 예를 들어 다음에서는 캔버스 위의 제목에 `테트라체드론의 예`가 있고 캔버스의 중심이 벡터(5,0,0)이고 창을 채우는 시안의 배경 색이 있는 VPython 캔버스 600을 만듭니다. 카메라가 가리키는 방향인 위쪽과 앞으로 의 상호 작용이 있습니다. 기본적으로 카메라는 -z 방향 벡터(0,0,-1)를 가리킵니다. 이 경우 x 또는 y 축(또는 그 사이)을 위쪽 벡터로 만들 수 있지만, 위쪽 속성을 설정할 때 카메라가 회전하는 축이므로 z 축을 위쪽 벡터로 만들 수는 없습니다. z축을 위로 가리키려면 먼저 -z 축이 아닌 다른 축(예: 벡터(1,0,0)으로 앞으로 설정합니다. scene.wrapper는 캔버스와 오버레이를 포함하는 웹 페이지 구성 요소입니다(오버레이는 레이블 오브젝트와 scene.pause()에서 생성된 프롬프트가 표시되는 2D 캔버스입니다). 예를 들어 scene.align = `왼쪽`은 scene.wrapper.css(`float`, `left`)와 동일하여 캔버스+오버레이를 웹 페이지의 왼쪽에 강제로 배치합니다. 마찬가지로 g라는 그래프가 있는 경우 scene.align = `오른쪽`은 g.wrapper.css(`float`, `오른쪽`)와 동일합니다. scene.camera.pos 카메라의 현재 위치는 사용자 설정, 자동 크기 조정 또는 사용자가 배치한 위치 여부에 관계없이 scene.camera.pos입니다.

예를 들어 mag(scene.center – scene.camera.pos)는 카메라의 현재 위치에서 장면 의 중심까지의 거리입니다. 벡터 scene.camera.pos 및 scene.mouse.ray는 마우스 커서 아래의 모든 3D 점을 정의합니다. scene.camera.pos = 벡터(x, y, z)를 실행하여 원하는 위치에 카메라를 배치할 수 있습니다. 이러한 방식으로 카메라 위치를 설정하면 scene.center가 위치 장면.camera.pos + scene.camera.axis로 재설정됩니다. 이 효과는 카메라가 이전과 동일한 방향을 계속 가리키지만 새 위치에서 계속 가리키고 있다는 것입니다. 구, 상자 및 곡선과 같이 만드는 그래픽 개체는 프로그램 기간 동안 계속 존재하며 VPython 3D 그래픽 모듈은 어디에 있든 계속 표시됩니다. 프로그램의 나중에 다시 참조하려면 각 개체에 이름을 지정해야 합니다(예에서 레드박스 또는 공 참조). 모든 오브젝트에는 ball.pos(구의 위치), ball.color, 반지름 또는 기타 크기 매개변수와 같은 속성이 있습니다. 위치 나 색상과 같은 객체의 속성을 변경하면 VPython은 객체를 새 위치 또는 새 색상으로 자동으로 표시합니다.

Bookmark the permalink.

Comments are closed.