示例#1
0
def Cone0(x1,y1,x2,y2,t,q,s,m=10,n=10):
    curve = [[0,0]]
    for i in range(m):
        ti = 1.0*i/(m-1)
        xi = mapto.MapTo(0,x1,1,x2, ti)
        yi = mapto.MapTo(0,y1,1,y2, ti)
        pt = [xi,yi]
        curve.append(pt)
    curve.append([0,yi])
    H = rc.RevolveCurve(curve,t,q,s, n=n, bcap=True,ecap=True)
    return H
示例#2
0
def Ellipsoid(rx,ry,t,q,s,m=10,n=10):
    curve = [[0,0]]
    a,b = [0,0]
    for i in range(m):
        val = 1.0*i/(m-1)
        ti = mapto.MapTo(0,-pi/2., 1,pi/2., val) # pi = 180 degrees only half circle
        xi =  a + rx*cos(ti)
        yi =  b + ry*sin(ti)
        pt = [xi,yi]
        curve.append(pt)

    H = rc.RevolveCurve(curve,t,q,s, n=n, bcap=True,ecap=True)
    return H
示例#3
0
def TableLeg(height,radius1,radius2,n=10,m=10):
    h = height
    r1 = radius1
    r2 = radius2
    curve = []
    x0 = 0
    for i in range(1,m-1):
        r = mapto.MapTo(0,r1,m-1,r2,i)
        xi = r
        yi = mapto.MapTo(0,0,m-1,h,i)
        pt = [xi,yi]
        curve.append(pt)
    yi = mapto.MapTo(0,0,m-1,h,.1)
    curve = [[0,yi]]+curve+[[0,height]]

    # Assume curve has symmetry y-axis
    x0 = curve[0][0]
    x_min = min(map(lambda pt: pt[0]-x0,curve))
    x_max = max(map(lambda pt: pt[0]-x0,curve))
    y_min = min(map(lambda pt: pt[1],curve))
    y_max = max(map(lambda pt: pt[1],curve))
    poly_wb = deepcopy(curve)

    pts = map(lambda pt: [0,pt[1],0], poly_wb)
    y_min = min(map(lambda pt: pt[1],poly_wb))
    y_max = max(map(lambda pt: pt[1],poly_wb))
    doc = g.Cn(n)
    cx,cy,cz = [0,0,0]
    r0 = 1.
    doc1 = rc.CreateCircleGeometry(doc,cx,cy,cz,r0)

    spath = []
    path = []
    pti = poly_wb[0]
    xi,yi = pti
    yi_last = yi
    
    dx = x_max-x_min
    dy = y_max-y_min
    epsilon = 1e-4
    if abs(dx) > epsilon:
        aspect = 1.*dy/dx
    else:
        aspect = 1.*dx/dy

    for i in range(len(poly_wb)):
        pti = poly_wb[i]
        xi,yi = pti
        r = abs(xi - x0)
        dy = yi-yi_last
        epsilon = .1
        if abs(dy) > epsilon:
            spath.append(r)
            path.append([yi,0,0])
        yi_last = yi

    degrees = 90+180
    axis = [0,1,0]
    q0 = aff.HH.rotation_quaternion(degrees,axis[0],axis[1],axis[2])
    q = q0
    t = [0,0,-height*.4]
    s = [1,1,1]
    C = aff.Center(path)
    pts = aff.Translate(path,-C[0],-C[1],-C[2],align=False)
    pts = aff.Rotate(pts,q,align=False)
    pts = aff.Scale(pts, s[0],s[1],s[2],align=False)
    pts = aff.Translate(pts,t[0],t[1],t[2],align=False)
    path = pts
    #path = [[0,0,0],[10,1,0],[20,4,0],[30,9,0]]
    H = ext.Extrusion0(doc1,path,spath)
    return H
示例#4
0
def CoffeeCup0(n=30,m=20,r0=20.):
    flag_cup = True
    flag_handle = True
    H1 = {}
    H1['V'] = []
    H1['E'] = []
    H1['pts'] = []
    H1['F'] = []
    H1['N'] = []
    H2 = {}
    H2['V'] = []
    H2['E'] = []
    H2['pts'] = []
    H2['F'] = []
    H2['N'] = []
    if flag_cup:
         # polygon curve of surface of revolution
         # Create Cup. At present, its imperfect recreating
         # a cover to coffee cup.
         curve1a = [[406, 388], [441, 384], [469, 378], [489, 363], [506, 347],
                   [518, 330], [520, 314], [522, 297], [525, 276], [528, 258],
                   [530, 228], [528, 182], [528, 150], [527, 113], [527, 91],
                   [532, 73], [540, 68]]
         curve1b = [[554, 70], [554, 86], [549, 108],
                   [550, 136], [546, 181], [547, 214], [544, 249], [544, 268],
                   [538, 281], [540, 288], [539, 300], [531, 312], [532, 329],
                   [526, 350], [513, 362], [502, 378], [482, 393], [446, 406],
                   [417, 409]]
         curve1 = curve1a + curve1b
         x0 = curve1[0][0]
         
         x_min = min(map(lambda pt: pt[0]-x0,curve1))
         x_max = max(map(lambda pt: pt[0]-x0,curve1))
         y_min = min(map(lambda pt: pt[1],curve1))
         y_max = max(map(lambda pt: pt[1],curve1))
         degrees = 0
         axis = [0,1,0]
         q = aff.HH.rotation_quaternion(degrees,axis[0],axis[1],axis[2])
         scale = 1.
         s = [scale,scale,scale] # the same scale as previous for caps
         t = [0,0,0]
         H1 = rc.RevolveCurve(curve1,t,q,s, n, bcap=False, ecap=False)
    if flag_handle:
         # Create Handle
         curve2 = [[203, 130], [189, 114], [165, 102], [149, 100], [132, 101],
                   [116, 106], [106, 113], [107, 128], [112, 152], [118, 169],
                   [127, 184], [138, 201], [149, 208], [165, 209], [186, 214],
                   [207, 213]]
         # Assume curve has symmetry y-axis
         x0 = curve2[0][0]
         x_min = min(map(lambda pt: pt[0]-x0,curve2))
         x_max = max(map(lambda pt: pt[0]-x0,curve2))
         y_min = min(map(lambda pt: pt[1],curve2))
         y_max = max(map(lambda pt: pt[1],curve2))
         poly_wb = deepcopy(curve2)

         pts = map(lambda pt: [0,pt[1],0], poly_wb)
         y_min = min(map(lambda pt: pt[1],poly_wb))
         y_max = max(map(lambda pt: pt[1],poly_wb))
         doc = g.Cn(m)
         cx,cy,cz = [0,0,0]
         doc1 = rc.CreateCircleGeometry(doc,cx,cy,cz,r0)

         spath = []
         path = []
         pti = poly_wb[0]
         xi,yi = pti
         yi_last = yi
         
         dx = x_max-x_min
         dy = y_max-y_min

         for i in range(len(poly_wb)):
             pti = poly_wb[i]
             xi,yi = pti
             r = abs(xi - x0)
             dy = yi-yi_last
             epsilon = .1
             if abs(dy) > epsilon:
                 spath.append(1.)
                 path.append([xi,yi,0])

         degrees = 90+180
         axis = [1,0,0]
         q0 = aff.HH.rotation_quaternion(degrees,axis[0],axis[1],axis[2])
         q = q0
         t = [-184,0,100]
         s = [1,1,1]
         C = aff.Center(path)
         pts = aff.Translate(path,-C[0],-C[1],-C[2],align=False)
         pts = aff.Rotate(pts,q,align=False)
         pts = aff.Scale(pts, s[0],s[1],s[2],align=False)
         pts = aff.Translate(pts,t[0],t[1],t[2],align=False)
         path = pts
         H2 = ext.Extrusion0(doc1,path,spath)

    H = ext.GraphUnionS(H1,H2)
    
    return H
示例#5
0
pts = aff.Translate(pts,t[0],t[1],t[2],align=False)
H0['pts'] = pts
Gs = ext.Append(Gs,H0)
G = ext.GraphUnionS(G,H0)

# square table
H1 = SquareTable1()
Gs = ext.Append(Gs,H1)
G = ext.GraphUnionS(G,H1)

# N1 x N2 water bottles
N1 = 1
N2 = 1
for j in range(N2):
    for i in range(N1):
        H2 = rc.WaterBottle(n=10)
        degrees = -90
        axis = [0,1,0]
        q = aff.HH.rotation_quaternion(degrees,axis[0],axis[1],axis[2])
        scale = 1.
        s = [scale,scale,scale] # the same scale as previous for caps
        r = 40.
        t0 = [N1*r,-N2*r,55.]

        if j%2 == 0:
            t = [t0[0]+r*i,t0[1]+r*j,t0[2]]
        else:
            t = [t0[0]+r*i + r*0.5,t0[1]+r*j,t0[2]]
        pts = H2['pts']
        q = aff.HH.rotation_quaternion(degrees,axis[0],axis[1],axis[2])
        C = aff.Center(pts)
示例#6
0
Gs = []

Puma560.P.pt = [0, 0, 0]
G1 = Puma560.P.Graph()

#goal = [-140.772457400456574, 406.0018009385133, 139.89926879829596]
#goal = [-300,300,300]
goal = [-600, 300, 600]
r = 20.
t = deepcopy(goal)
degrees = 90
axis = [0, 0, 1]
q = aff.HH.rotation_quaternion(degrees, axis[0], axis[1], axis[2])
scale = 3.
s = [scale, scale, scale]  # the same scale as previous for caps
H1 = rc.WaterBottle(n=30)
pts = H1['pts']
C = aff.Center(pts)
pts = aff.Translate(pts, -C[0], -C[1], -C[2], align=False)
pts = aff.Rotate(pts, q, align=False)
pts = aff.Scale(pts, s[0], s[1], s[2], align=False)
pts = aff.Translate(pts, t[0], t[1], t[2], align=False)
H1['pts'] = pts
Gs = ext.Append(Gs, H1)
G = ext.GraphUnionS(G, H1)

N = 10
degrees = 0
axis = [0, 1, 0]
qp = aff.HH.rotation_quaternion(degrees, axis[0], axis[1], axis[2])
scale = 1.