2014-02-05 6 views
0

제발 용서해주세요.하지만 VB에서 다소 코딩하는 법을 알고 있습니다. 파이썬은 제가 익숙하지 않은 것입니다. 나는 다른 사람들이 내가 성취하려고하는 알고리즘을 만들고 보여 주려고했는지를 시험해 보았다.큐브를 사용하여 원을 그리는 데 도움이 필요합니다. 파이썬 엔진을 사용하여 블렌더 2.69를 사용하십시오.

나는 내 머리 속에 비주얼라이져 디자인을 가지고 있는데, 내가 해왔 던 것은 큐브의 수를 일정한 거리 (어쩌면 5-10 블렌더 단위)로 배치하는 것이다. 장면과 각도는 얼굴을 중심으로 향하는 한면과 반대 방향을 가리키는 한면이 될 것입니다. 10 큐브부터 시작하려고합니다. 왜냐하면 원 모양을 보여주기에는 공정한 숫자가 될 것 같은 느낌이 들기 때문입니다.

나는 내가 뭘하려고 오전을 설명하기 위해 이미지를 만들어 :

enter image description here

내가 알아낼 수 있었다 모두 지금까지 내가 어떤 회전 큐브를 추가 할 필요가 있다는 것입니다, 회전은 각 큐브에 대해 단계별로 수행되어야합니다. 그래서 작은 방정식이 필요합니다.

(10)   (36) 
360/numberOfCubes = steppedAngle 

파이썬을 어떻게 프로그램 할 것인지 잘 모르기 때문에 그게 전부입니다.

모든 도움을 주시면 최종 결과에 반영됩니다.

업데이트 : 아래의 답변의 도움으로 1 개

덕분에, 나는 마침내 내가 원하는 방법 일을 얻었다. img http://vvcap.net/db/bKKUz3Uw4WUqL_WVDU0j.png

여기 코드는 아래 도움말의 도움말로 작성되었습니다. ' 수입 BPY 수입 수학

##num of cubes 
n = 10 

##distange from center 
radius = 7 

for i in range(1, n + 1): 
    angle = (i - 1) * math.pi * 2/n 
    xcoord=(radius * math.cos(angle)) 
    ycoord=(radius * math.sin(angle)) 
    bpy.ops.mesh.primitive_cube_add(location=(xcoord,ycoord,0),rotation=(0,0,angle)) 

'

답변

1

는 이제 원에서 큐브 시작하자, 우리는 거기에서 우리의 방법을 작동합니다.

큐브가 N 개이고 유니버 스의 중심 (0,0,0)을 중심으로 반경 R의 원 안에 배치하려고합니다.

기본 삼각법 적용 : N을 기준으로 원을 나눌 때 각 큐브는 원의 반경 중 하나에 있습니다. 따라서 첫 번째 큐브는 0 rad이고 두 번째 큐브는 2 * pi/N rad입니다. , 세 번째 큐브는 2 * 360/N rad입니다 ... N 큐브는 (N-1) * 2 * pi/N rad에 있습니다. 이제 우리는 수식을 가지고 있습니다 : 1에서 N까지 각 i에 대해 원 = (i - 1) * 2 * pi/N (라디안 단위)의 큐브 위치 이제 공간 좌표의 위치는 (r * cos XY 평면에 배치 된 원의 중심 (각도), r * sin (각도), 0)이며 중심은 (0,0,0)입니다. '

import math 

for i in range(1, N + 1): 
    angle = (i - 1) * math.pi * 2/N 
    x_coord = radius * math.cos(angle) 
    y_coord = radius * math.sin(angle) 
    z_coord = 0 
    cube = place_cube(x_coord, y_coord, z_coord) 

이 오른쪽 좌표에 큐브를 배치 할 것이다, 그러나 원 :

내 블렌더 파이썬은 매우 녹슨, 그래서 나는 당신에게 완벽한 솔루션을 제공하지 않습니다,하지만이 방법이어야한다 그 (것)들을 바르게 돌리지 말라. 다행히 각 큐브를 각도별로 회전하고 올바른 방향으로 가져올 수 있습니다.내가 거의 블렌더 파이썬 API를 기억하지 않기 때문에 나는 place_cube 및 rotate_around_z 기능을 제공하지 않은

import math 

for i in range(1, N + 1): 
    angle = (i - 1) * math.pi * 2/N 
    x_coord = radius * math.cos(angle) 
    y_coord = radius * math.sin(angle) 
    z_coord = 0 
    cube = place_cube(x_coord, y_coord, z_coord) 
    cube.rotate_around_z(angle) 

을하지만 너무 열심히해서는 안 : 그래서 당신은 할 수 있습니다.

+0

정말 대단합니다.이 문제를 해결할 수 있습니다. : D 정말 고맙습니다. 또한 수학은 내 리그에서 약간 벗어 났지만 어떻게 설명했는지 이해할 수 있습니다. 진행 상황을 알려 드리겠습니다 –

+0

btw, 나는 장소 큐브와 부패를 알아 냈습니다. 다음과 같습니다 : (블렌더 2.69 용) 'code'bpy.ops.mesh.primitive_cube_add (location = (x , y, z), 회전 = (x, y, z)) '코드' –