Each platelet's location can be represented by a 1x6 vector, with the first three entries representing position as you have done, and the next three representing orientation as given by the normal vector.
You will then need to write a custom distance function. This should give the euclidean distance as usual for platelets in the same orientation, but give inf for platelets with different orientations. Read the documentation to make sure you are implementing this function correctly as it must accept a matrix representing multiple points as its second argument.
pdist just calculates the distances between points. To group them into clusters you will need to use the cluster and linkage functions.
X = [platelet_midpoints platelet_norms];
Z = linkage(X,method,@distance_function);
T = cluster(Z,'cutoff',n);