for countends, (p1, p2) in enumerate(itertools.combinations(xyz_endmembers, 2)): for countlines, (l0, l1) in enumerate(xyz_lineendpairs): t = numpy.cross(p1 - p0, p2 - p0) #this is where the line intersects the plane, although it may not be within the triangle xyz_intr = l0 + (numpy.dot(t, p0 - l0) / numpy.dot(t, l1 - l0)) * (l1 - l0) #check within triangle phase field boundary and if so draw a green dot at itnersection and a translucent triangle xyz_triverts = numpy.array([p0, p1, p2]) if intriangle(xyz_intr, xyz_triverts): xyz_intr_dlist += [ dict({}, xyz_intr=xyz_intr, xyz_triverts=xyz_triverts, xyz_lineends=(l0, l1), index_endmems=countends, index_lineends=countlines) ] q.scatter(q.toComp([xyz_intr]), c='g', s=20) verts = [[p0, p1, p2]] collection = Poly3DCollection(verts, linewidths=0, alpha=0.2) face_color = [0.5, 0.5, 0.5] collection.set_facecolor(face_color) q.ax.add_collection3d(collection) q.label(ha='center', va='center', fontsize=16) q.set_projection(azim=-17, elev=-6) pylab.show()
a[i]=1. q.line(a, phcomp, fmt='r-') # iterate over all 4 phase field triangular boundaries (triangle defined by 3 points, the phase p0 and 2 end members p1,p2) and all 4 composition lines. find intersections p0=numpy.array(q.toCart([phcomp])).T[0] xyz_intr_dlist=[] for countends, (p1, p2) in enumerate(itertools.combinations(xyz_endmembers, 2)): for countlines, (l0, l1) in enumerate(xyz_lineendpairs): t = numpy.cross(p1-p0, p2 - p0) #this is where the line intersects the plane, although it may not be within the triangle xyz_intr= l0 + (numpy.dot(t, p0 - l0) / numpy.dot(t, l1 - l0)) * (l1 - l0) #check within triangle phase field boundary and if so draw a green dot at itnersection and a translucent triangle xyz_triverts=numpy.array([p0, p1, p2]) if intriangle(xyz_intr,xyz_triverts): xyz_intr_dlist+=[dict({}, xyz_intr=xyz_intr, xyz_triverts=xyz_triverts, xyz_lineends=(l0, l1), index_endmems=countends, index_lineends=countlines)] q.scatter(q.toComp([xyz_intr]), c='g', s=20) verts = [[p0, p1, p2]] collection = Poly3DCollection(verts, linewidths=0, alpha=0.2) face_color = [0.5, 0.5, 0.5] collection.set_facecolor(face_color) q.ax.add_collection3d(collection) q.label(ha='center', va='center', fontsize=16) q.set_projection(azim=-17, elev=-6) pylab.show()