def drawCornerAsArc(corner, bm): if corner.startx == WRONG_FLOAT or corner.starty == WRONG_FLOAT or corner.endx == WRONG_FLOAT or corner.endy == WRONG_FLOAT: return center = Vector((corner.x, corner.y, defaultZ)) startPoint = Vector ((corner.startx, corner.starty, defaultZ)) endPoint = Vector ((corner.endx, corner.endy, defaultZ)) geomCalc = GeometryCalculator() angleDeg, angle = geomCalc.getPositiveAngleBetween3Points(startPoint, center, endPoint) spinAxis = Vector((0, 0, 1)) v0 = bm.verts.new(startPoint) if corner.flipAngle: v0 = bm.verts.new(endPoint) angle = two_pi - angle result = bmesh.ops.spin(bm, geom = [v0], cent = center, axis = spinAxis, \ angle = -angle, steps = corner.sides, use_duplicate = False)
def drawCornerAsArc(corner, bm): if corner.startx == WRONG_FLOAT or corner.starty == WRONG_FLOAT or corner.endx == WRONG_FLOAT or corner.endy == WRONG_FLOAT: return center = Vector((corner.x, corner.y, defaultZ)) startPoint = Vector((corner.startx, corner.starty, defaultZ)) endPoint = Vector((corner.endx, corner.endy, defaultZ)) geomCalc = GeometryCalculator() angleDeg, angle = geomCalc.getPositiveAngleBetween3Points( startPoint, center, endPoint) spinAxis = Vector((0, 0, 1)) v0 = bm.verts.new(startPoint) if corner.flipAngle: v0 = bm.verts.new(endPoint) angle = two_pi - angle result = bmesh.ops.spin(bm, geom = [v0], cent = center, axis = spinAxis, \ angle = -angle, steps = corner.sides, use_duplicate = False)
def drawTangentConnectionTemplate(corner1, corner2, connection, bm, getRadiusesForIntersections, getConnectionEndPoints): c1 = Vector((corner1.x, corner1.y, defaultZ)) c2 = Vector((corner2.x, corner2.y, defaultZ)) r1, r2 = getRadiusesForIntersections(connection.radius, corner1.radius, corner2.radius) geomCalc = GeometryCalculator() intersections = geomCalc.getCircleIntersections(c1, r1, c2, r2) if intersections == None: assignCornerEndPoint(corner1, None) assignCornerStartPoint(corner2, None) return center = None if len(intersections) == 1: center = intersections[0] elif len(intersections) == 2: if not connection.flipCenter: center = intersections[1] else: center = intersections[0] connectionStartPoint, connectionEndPoint = getConnectionEndPoints( geomCalc, center, c1, corner1.radius, c2, corner2.radius, connection.radius) assignCornerEndPoint(corner1, connectionStartPoint) assignCornerStartPoint(corner2, connectionEndPoint) angleDeg, angleRad = geomCalc.getPositiveAngleBetween3Points( connectionStartPoint, center, connectionEndPoint) if (angleDeg == None) or (angleRad == None): return if connection.flipAngle: angleRad = -(2 * pi - angleRad) spinAxis = Vector((0, 0, 1)) v0 = bm.verts.new(connectionEndPoint) result = bmesh.ops.spin(bm, geom = [v0], cent = center, axis = spinAxis, \ angle = angleRad, steps = connection.sides, use_duplicate = False)
def drawTangentConnectionTemplate(corner1, corner2, connection, bm, getRadiusesForIntersections, getConnectionEndPoints): c1 = Vector((corner1.x, corner1.y, defaultZ)) c2 = Vector((corner2.x, corner2.y, defaultZ)) r1, r2 = getRadiusesForIntersections(connection.radius, corner1.radius, corner2.radius) geomCalc = GeometryCalculator() intersections = geomCalc.getCircleIntersections(c1, r1, c2, r2) if intersections == None: assignCornerEndPoint(corner1, None) assignCornerStartPoint(corner2, None) return center = None if len(intersections) == 1: center = intersections[0] elif len(intersections) == 2: if not connection.flipCenter: center = intersections[1] else: center = intersections[0] connectionStartPoint, connectionEndPoint = getConnectionEndPoints(geomCalc, center, c1, corner1.radius, c2, corner2.radius, connection.radius) assignCornerEndPoint(corner1, connectionStartPoint) assignCornerStartPoint(corner2, connectionEndPoint) angleDeg, angleRad = geomCalc.getPositiveAngleBetween3Points(connectionStartPoint, center, connectionEndPoint) if (angleDeg == None) or (angleRad == None): return if connection.flipAngle: angleRad = -(2 * pi - angleRad) spinAxis = Vector((0, 0, 1)) v0 = bm.verts.new(connectionEndPoint) result = bmesh.ops.spin(bm, geom = [v0], cent = center, axis = spinAxis, \ angle = angleRad, steps = connection.sides, use_duplicate = False)