[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2433] branches/geodesic_domes/vefm259. py: removed vefm259.py as it is replaced by vefm_259.py
james bond
thekilon at yahoo.co.uk
Thu Oct 13 16:23:21 CEST 2011
Revision: 2433
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2433
Author: kilon
Date: 2011-10-13 14:23:21 +0000 (Thu, 13 Oct 2011)
Log Message:
-----------
removed vefm259.py as it is replaced by vefm_259.py
Removed Paths:
-------------
branches/geodesic_domes/vefm259.py
Deleted: branches/geodesic_domes/vefm259.py
===================================================================
--- branches/geodesic_domes/vefm259.py 2011-10-13 13:47:24 UTC (rev 2432)
+++ branches/geodesic_domes/vefm259.py 2011-10-13 14:23:21 UTC (rev 2433)
@@ -1,1327 +0,0 @@
-## vert class and overloading experiments
-import bpy
-import math
-from math import sqrt,acos,pi,sin,cos,atan,tan,fabs
-#from Blender import NMesh
-from mathutils import Vector
-dbg = True
-sgn = lambda x : (x>0) - (x<0) #missing signum functin in Python
-try:
- breakpoint = bpy.types.bp.bp
-except:
- pass
-
-#PKHG to test a mesh
-from add_utils import AddObjectHelper, add_object_data
-from mathutils import Vector
-from collections import Counter
-
-def find_twice_vert(l1,l2):
- tmp = [el for el in l1]
- tmp.extend(l2)
- tt = Counter(tmp)
- result = max(tt.keys(),key = lambda k:tt[k])
- print("twice give", result)
- return result
-#extra test phase
-
-
-
-
-class vertex:
-
- def __init__(self,vec=(0,0,0)): #x=0,y=0,z=0):
- self.vector = Vector(vec)
- self.x = vec[0]
- self.y = vec[1]
- self.z = vec[2]
- self.length = self.vector.length
- self.index = 0
- self.normal = 0
- self.edges = []
- self.faces = []
- self.boundary = 0
- if dbg:
- print("dbg: vertex generate with length = ",self.length)
-
-
- def findlength(self):
-
-# self.length=sqrt(self.x*self.x+self.y*self.y+self.z*self.z)
- self.length = self.vector.length
-
- def normalize(self):
-
- self.findlength()
- if self.length > 0:
- tmp = 1.0/self.length
- self.vector = tmp * self.vector
- self.x = self.vector[0] #(1.0/self.length)
- self.y = self.vector[1] #(1.0/self.length)
- self.z = self.vector[2] #(1.0/self.length)
- self.length = 1.0
-
- def findnormal(self):
- target = []
- if self.faces[:] == []:
- print("pkhg:*****ERROR**** findnormal has no faces")
- return
- for currentface in self.faces:
- target.append(currentface.normal)
- self.normal = average(target).centroid()
- self.normal.findlength()
- if self.length == 0:
- print("******ERROR*** lenght zero in findnormal")
- self.normal.normalize()
-
- def clockwise(self):
- if self.boundary:
- start = self.boundarystart()
- else:
- start = self.faces[0]
- #PKHG TODO do understand
- start = self.faces[0]
- start.docorners() #PKHG????
- self.tempedges = []
- self.tempfaces = []
- for i in range(len(self.edges)):
- print("\n----------------------voor breakpunt pkhg in clockwise")
- #breakpoint(locals(), self.index == 0)
- self.tempfaces.append(start)
- for corner in start.corners:
- if corner[0] is not self:
- pass
- elif corner[0] is self:
- self.tempedges.append(corner[1])
- nextedge = corner[2]
- for facey in nextedge.faces:
- if facey is not start:
- start = facey
- break
- self.edges = self.tempedges
- self.faces = self.tempfaces
-
- def boundarystart(self):
- #PKHG not implemented, needed?
- pass
-
- def __add__(self,other):
- tmp = self.vector + other.vector
- #x = self.x+other.x
- #y = self.y+other.y
- #z = self.z+other.z
- #return vertex((x,y,z))
- return vertex(tmp)
-
- def __sub__(self,other):
- tmp = self.vector - other.vector
- #x = self.x-other.x
- #y = self.y-other.y
- #z = self.z-other.z
- #return vertex((x,y,z))
- return vertex(tmp)
-
- def __mul__(self,other):
- #x = self.x*other
- #y = self.y*other
- #z = self.z*other
- tmp = self.vector * other
- #return vertex((x,y,z))
- return vertex(tmp)
-
- def __truediv__(self,other):
- denom = 1.0/other
- tmp = self.vector * denom
- return (tmp)
-# x = self.x*tmp#(1/other)
-# y = self.y*tmp#(1/other)
-# z = self.z*tmp#(1/other)
-# return vertex((x,y,z))
-
- def negative(self):
- return vertex((-self.x,-self.y,-self.z))
-
-class crossp:
- ## Takes in two vertices(vectors), returns the cross product.
- def __init__(self,v1,v2):
- self.v1 = v1
- self.v2 = v2
- # self.docrossproduct(v1,v2)
-#
- def docrossproduct(self):
- tmp = self.v1.vector.cross(self.v2.vector)
-# x = (self.v1.y*self.v2.z)-(self.v2.y*self.v1.z)
-# y = (self.v1.z*self.v2.x)-(self.v2.z*self.v1.x)
-# z = (self.v1.x*self.v2.y)-(self.v2.x*self.v1.y)
-# return vertex(x,y,z)
- return vertex(tmp)
-class average:
- ## Takes a list of vertices and returns the average. If two verts are passed, returns midpoint.
- def __init__(self,vertlist):
- self.vertlist = vertlist
- # self.centroid()
-
- def centroid(self):
-# x = y = z = 0
- tmp = Vector()
- divisor = 1.0 / len(self.vertlist)
- for vert in self.vertlist:
- tmp += vert.vector
-# x=x+vert.x
-# y=y+vert.y
-# z=z+vert.z
- tmp *= divisor
-# return vertex(x/divisor,y/divisor,z/divisor)
- #return vertex(tmp[0],tmp[1],tmp[2])
- return vertex(tmp)
-
-class edge:
- def __init__(self,a=0,b=0):
- self.a = a
- self.b = b
- self.index = 0
- self.normal = 0
- self.cross = 0
- self.unit = 0
- self.faces = []
- self.vect = 0 #PKHG becomes b - a
- self.vectb = 0 #PKHG becomes a - b
-# self.length = 0
- self.boundary = 0
- self.findvect()
-# print("vect len before",self.vect.length)
- self.findlength()
-# print("vect after",self.vect.length)
-
- def findvect(self):
- self.vect = self.b - self.a
- self.vectb = self.a - self.b
-
- def findlength(self):
- #print("in edge findlength")
- self.vect.findlength()
- self.vectb.length = self.vect.length
-
- def findnormal(self):
-
- if self.boundary:
- self.normal = self.faces[0].normal #average([self.a,self.b]).centroid()
-
- else:
-
- self.normal = average([self.faces[0].normal,self.faces[1].normal]).centroid()
-
- self.normal.normalize()
-# def findother(self,vertindex):
-#
-# if vertindex==self.a:
-#
-# return self.b
-#
-# else:
-# return self.a
-## different classes for 3,4,> sides??
-class face:
- def __init__(self,vertices=[]):
- print("\ndbg face vertices = ",vertices)
- self.vertices=vertices ## List of vertex instances.
- self.edges=[] ## Will be filled with the sides of the face.
- self.boundary=0 ## When set will have bool and id of edge concerned.
- self.normal=0 ## Face normal found through cross product.
- self.corners=[]
- self.spokes=[] ## Vectors of the bisecting angles from each corner to the centre + dotproduct.
- self.index=0
-
- #dotproduct is misleading name, it is the hook between two vectors!
- def dotproduct(self,v1,v2):
- # print("dp ",v1.x,v1.y,v1.z," ",v2.x,v2.y,v2.z)
- # print("v1 length",v1.length)
- # print("v2 length",v2.length)
-
- v1.findlength()
- v2.findlength()
- if v1.length == 0 or v2.length == 0:
- print("\nPKHG warning, =========== at least one zero vector 0.0 used")
- return 0.0
- # print("v1 length",v1.length)
- # print("v2 length",v2.length)
- dot=(v1.x*v2.x)+(v1.y*v2.y)+(v1.z*v2.z)
- costheta=dot/(v1.length*v2.length)
- pkhgtmp = v1.vector.dot(v2.vector)
- tmp = acos(costheta)
- print("dbg 204 dotprod in face",dot,pkhgtmp,tmp)
- return tmp
-
- def orderedges(self):
- print("\n-----------------dbg 212 orderedeges called")
- temp=[]
- finish=len(self.vertices)
- for i in range(finish):
- current=self.vertices[i]
- if i==finish-1:
- next=self.vertices[0]
- else:
- next=self.vertices[i+1]
- for edge in face.edges:
- if edge.a==current and edge.b==next:
- face.clockw.append(edge.vect)
- face.aclockw.append(edge.vectb)
- temp.append(edge)
- if edge.b==current and edge.a==next:
- face.clockw.append(edge.vectb)
- face.aclockw.append(edge.vect)
- temp.append(edge)
- for edge in face.edges:
- if edge.a==current and edge.b==next:
- face.clockw.append(edge.vect)
- face.aclockw.append(edge.vectb)
- temp.append(edge)
- if edge.b==current and edge.a==next:
- face.clockw.append(edge.vectb)
- face.aclockw.append(edge.vect)
- temp.append(edge)
- face.vertices=temp
-
-
- def docorners(self):
- ## This function identifies and stores the vectors coming from each vertex
- ## allowing easier calculation of cross and dot products.
- finish=len(self.vertices)
- '''
- which = None
- occur1 = None
- occur2 = None
- if finish == 3 and len(self.edges) == 2 :
- print("\n***ERROR*** only two edges should be three")
- # return
- occur1 = [self.vertices.index(self.edges[0].a),self.vertices.index(self.edges[0].b)]
- occur2 = [self.vertices.index(self.edges[1].a),self.vertices.index(self.edges[1].b)]
- #occur2 = [self.edges[1].a.index, self.edges[1].b.index]
- twice = find_twice_vert(occur1,occur2)
- occur1.remove(twice)
- occur2.remove(twice)
- #new_edge = edge(self.vertices[occur1[0]],self.vertices[occur2[0]])
- #self.edges.append(new_edge)
- '''
- for i in range(finish):
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list