mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-06 02:16:06 +08:00
Add our own 3D vector class, so we are less depended on Skeinforge.
This commit is contained in:
parent
6ebc6f64d3
commit
16ca7b3683
@ -3,13 +3,13 @@ import math
|
||||
import threading
|
||||
import re
|
||||
|
||||
from fabmetheus_utilities.vector3 import Vector3
|
||||
from newui import util3d
|
||||
|
||||
class gcode():
|
||||
def __init__(self, filename):
|
||||
f = open(filename, 'r')
|
||||
pos = Vector3()
|
||||
posOffset = Vector3()
|
||||
pos = util3d.Vector3()
|
||||
posOffset = util3d.Vector3()
|
||||
currentE = 0
|
||||
pathList = []
|
||||
scale = 1.0
|
||||
@ -73,7 +73,7 @@ class gcode():
|
||||
y = self.getCodeFloat(line, 'Y')
|
||||
z = self.getCodeFloat(line, 'Z')
|
||||
if x is None and y is None and z is None:
|
||||
pos = Vector3()
|
||||
pos = util3d.Vector3()
|
||||
else:
|
||||
if x is not None:
|
||||
pos.x = 0.0
|
||||
|
@ -14,10 +14,12 @@ except:
|
||||
print "Failed to find PyOpenGL: http://pyopengl.sourceforge.net/"
|
||||
hasOpenGLlibs = False
|
||||
|
||||
from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret
|
||||
from fabmetheus_utilities.vector3 import Vector3
|
||||
from fabmetheus_utilities import settings
|
||||
from newui import gcodeInterpreter
|
||||
from newui import util3d
|
||||
|
||||
from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret
|
||||
from fabmetheus_utilities.vector3 import Vector3
|
||||
|
||||
class previewPanel(wx.Panel):
|
||||
def __init__(self, parent):
|
||||
@ -347,7 +349,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
|
||||
for i in xrange(0, len(path['list'])-1):
|
||||
v0 = path['list'][i]
|
||||
v1 = path['list'][i+1]
|
||||
normal = (v0 - v1).cross(Vector3(0,0,1))
|
||||
normal = (v0 - v1).cross(util3d.Vector3(0,0,1))
|
||||
normal.normalize()
|
||||
v2 = v0 + normal * lineWidth
|
||||
v3 = v1 + normal * lineWidth
|
||||
|
70
SkeinPyPy_NewUI/newui/util3d.py
Normal file
70
SkeinPyPy_NewUI/newui/util3d.py
Normal file
@ -0,0 +1,70 @@
|
||||
|
||||
import math
|
||||
|
||||
class Vector3():
|
||||
def __init__(self, x=0.0, y=0.0, z=0.0):
|
||||
self.x = x
|
||||
self.y = y
|
||||
self.z = z
|
||||
|
||||
def __copy__(self):
|
||||
return Vector3(self.x, self.y, self.z)
|
||||
|
||||
def copy(self):
|
||||
return Vector3(self.x, self.y, self.z)
|
||||
|
||||
def __repr__(self):
|
||||
return '%s, %s, %s' % ( self.x, self.y, self.z )
|
||||
|
||||
def __add__(self, v):
|
||||
return Vector3( self.x + v.x, self.y + v.y, self.z + v.z )
|
||||
|
||||
def __sub__(self, v):
|
||||
return Vector3( self.x - v.x, self.y - v.y, self.z - v.z )
|
||||
|
||||
def __mul__(self, v):
|
||||
return Vector3( self.x * v, self.y * v, self.z * v )
|
||||
|
||||
def __div__(self, v):
|
||||
return Vector3( self.x / v, self.y / v, self.z / v )
|
||||
|
||||
def __neg__(self):
|
||||
return Vector3( - self.x, - self.y, - self.z )
|
||||
|
||||
def __iadd__(self, v):
|
||||
self.x += v.x
|
||||
self.y += v.x
|
||||
self.z += v.x
|
||||
return self
|
||||
|
||||
def __isub__(self, v):
|
||||
self.x += v.x
|
||||
self.y += v.x
|
||||
self.z += v.x
|
||||
return self
|
||||
|
||||
def __imul__(self, v):
|
||||
self.x *= v
|
||||
self.y *= v
|
||||
self.z *= v
|
||||
return self
|
||||
|
||||
def __idiv__(self, v):
|
||||
self.x /= v
|
||||
self.y /= v
|
||||
self.z /= v
|
||||
return self
|
||||
|
||||
def cross(self, v):
|
||||
return Vector3(self.y * v.z - self.z * v.y, -self.x * v.z + self.z * v.x, self.x * v.y - self.y * v.x)
|
||||
|
||||
def vsize(self):
|
||||
return math.sqrt( self.x * self.x + self.y * self.y + self.z * self.z )
|
||||
|
||||
def normalize(self):
|
||||
f = self.vsize()
|
||||
if f != 0.0:
|
||||
self.x /= f
|
||||
self.y /= f
|
||||
self.z /= f
|
||||
|
Loading…
x
Reference in New Issue
Block a user