Python math 模块,pi() 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用math.pi()

项目:PGO-mapscan-opt    作者:seikur0    | 项目源码 | 文件源码
def neighbor_circle(location, pos, shift=False, factor=1.0):
    pos = pos % 6
    latrad = location[0] * pi / 180
    x_un = factor * safety / earth_Rrect / cos(latrad) * 180 / pi
    y_un = factor * safety / earth_Rrect * 180 / pi
    if not shift:
        y_un = y_un * (3.0 ** 0.5) / 2.0 * HEX_R
        x_un = x_un * HEX_R * 1.5
        yvals = [-2, -1, 1, 2, 1, -1]
        xvals = [0, 1, 1, 0, -1, -1]
    else:
        y_un = y_un * HEX_R * 1.5
        x_un = x_un * (3.0 ** 0.5) / 2.0 * HEX_R
        yvals = [-1, 0, 1, 1, 0, -1]
        xvals = [1, 2, 1, -1, -2, -1]

    newlat = location[0] + y_un * yvals[pos]
    newlng = ((location[1] + x_un * xvals[pos] + 180) % 360) - 180
    return (newlat, newlng)
项目:RasterFairy    作者:Quasimondo    | 项目源码 | 文件源码
def getBestCircularMatch(n):
    bestc = n*2
    bestr = 0
    bestrp = 0.0

    minr = int(math.sqrt(n / math.pi))
    for rp in range(0,10):
        rpf = float(rp)/10.0
        for r in range(minr,minr+3):
            rlim = (r+rpf)*(r+rpf)
            c = 0
            for y in range(-r,r+1):
                yy = y*y
                for x in range(-r,r+1):
                    if x*x+yy<rlim:
                        c+=1
            if c == n:
                return r,rpf,c

            if c>n and c < bestc:
                bestrp = rpf
                bestr = r
                bestc = c
    return bestr,bestrp,bestc
项目:Deep360Pilot-optical-flow    作者:yenchenlin    | 项目源码 | 文件源码
def flow_orientation(orientation):
    """ Currently not use anymore """
    # Boolean map
    _greater_pi = orientation > math.pi/2
    _less_minuspi = orientation < -math.pi/2
    _remaining_part = ~(_greater_pi & _less_minuspi)

    # orientation map
    greater_pi = orientation*_greater_pi
    less_minuspi = orientation*_less_minuspi
    remaining_part = orientation*_remaining_part
    pi_map = math.pi * np.ones(orientation.shape)

    # converted orientation map
    convert_greater_pi = pi_map*_greater_pi - greater_pi
    convert_less_minuspi = -pi_map*_less_minuspi - less_minuspi

    new_orient = remaining_part + convert_greater_pi + convert_less_minuspi

    return new_orient
项目:astrobase    作者:waqasbhatti    | 项目源码 | 文件源码
def angle_wrap(angle,radians=False):
    '''
    Wraps the input angle to 360.0 degrees.

    if radians is True: input is assumed to be in radians, output is also in
    radians

    '''

    if radians:
        wrapped = angle % (2.0*PI)
        if wrapped < 0.0:
            wrapped = 2.0*PI + wrapped

    else:

        wrapped = angle % 360.0
        if wrapped < 0.0:
            wrapped = 360.0 + wrapped

    return wrapped
项目:Projects    作者:it2school    | 项目源码 | 文件源码
def _compute(self):
        """Compute r min max and labels position"""
        delta = 2 * pi / self._len if self._len else 0
        self._x_pos = [.5 * pi + i * delta for i in range(self._len + 1)]
        for serie in self.all_series:
            serie.points = [
                (v, self._x_pos[i])
                for i, v in enumerate(serie.values)]
            if self.interpolate:
                extended_x_pos = (
                    [.5 * pi - delta] + self._x_pos)
                extended_vals = (serie.values[-1:] +
                                 serie.values)
                serie.interpolated = list(
                    map(tuple,
                        map(reversed,
                            self._interpolate(
                                extended_x_pos, extended_vals))))

        # x labels space
        self._box.margin *= 2
        self._rmin = self.zero
        self._rmax = self._max or 1
        self._box.set_polar_box(self._rmin, self._rmax)
        self._self_close = True
项目:Python4ScientificComputing_Fundamentals    作者:bnajafi    | 项目源码 | 文件源码
def spectralBlackBody(Lambda=0.7, T=5800):
    """ here is the explanation of this function"""
    import math 

    c0 = 2.9979*10**8 #m/s speed of light in vacuum
    h_Plank=6.626069*10**-34 #J.s Plank's Constant
    sigma_stefan_Boltzmann= 5.67*10**-8 #Stefan-Boltzmann Constant
    n=1 #the index of refraction of that medium
    c=c0/n# the speed of propagation of a wave in the medium 
    F=c/Lambda #the frequency of the wave
    e_wave=h_Plank*F
    E_blackBody = sigma_stefan_Boltzmann*T**4
    k_Boltzmann=1.38065*10**-23 #J/K Boltzmann Constant

    #Plank's Law: 
    C1=2*math.pi*h_Plank*c0**2*(10**24)#J*s*m^2/s^2--W*m2 --->W 
    C2=h_Plank*c0/k_Boltzmann*(10**6) #microm m/K

    EmissiveSpectral= C1/(Lambda**5*(math.exp(C2/(Lambda*T))-1))
    outPut = {"EmissiveSpectral":EmissiveSpectral,"E_blackBody":E_blackBody}
    return outPut
项目:s2sphere    作者:sidewalklabs    | 项目源码 | 文件源码
def get_directed_hausdorff_distance(self, other):
        if other.contains(self):
            return 0.0
        if other.is_empty():
            return math.pi

        other_complement_center = other.get_complement_center()
        if self.contains(other_complement_center):
            return self.__class__.positive_distance(other.hi(),
                                                    other_complement_center)
        else:
            if self.__class__(other.hi(), other_complement_center) \
                    .contains(self.hi()):
                hi_hi = self.__class__.positive_distance(other.hi(), self.hi())
            else:
                hi_hi = 0

            if self.__class__(other_complement_center, other.lo()) \
                    .contains(self.lo()):
                lo_lo = self.__class__.positive_distance(self.lo(), other.lo())
            else:
                lo_lo = 0

            assert hi_hi > 0 or lo_lo > 0
            return max(hi_hi, lo_lo)
项目:s2sphere    作者:sidewalklabs    | 项目源码 | 文件源码
def testConstructorsAndAccessors(self):
        self.assertEqual(self.quad12.lo(), 0)
        self.assertEqual(self.quad12.hi(), math.pi)
        self.assertEqual(self.quad34.bound(0), math.pi)
        self.assertEqual(self.quad34.bound(1), 0)
        self.assertEqual(self.pi.lo(), math.pi)
        self.assertEqual(self.pi.hi(), math.pi)

        # Check that [-Pi, -Pi] is normalized to [Pi, Pi].
        self.assertEqual(self.mipi.lo(), math.pi)
        self.assertEqual(self.mipi.hi(), math.pi)
        self.assertEqual(self.quad23.lo(), math.pi / 2.0)
        self.assertEqual(self.quad23.hi(), -math.pi / 2.0)

        default_empty = SphereInterval()
        self.assertTrue(default_empty.is_valid())
        self.assertTrue(default_empty.is_empty())
        self.assertEqual(self.empty.lo(), default_empty.lo())
        self.assertEqual(self.empty.hi(), default_empty.hi())
        # Should check intervals can be modified here
项目:s2sphere    作者:sidewalklabs    | 项目源码 | 文件源码
def testSimplePredicates(self):
        # is_valid(), is_empty(), is_full(), is_inverted()
        self.assertTrue(self.zero.is_valid() and
                        not self.zero.is_empty() and
                        not self.zero.is_full())
        self.assertTrue(self.empty.is_valid() and
                        self.empty.is_empty() and
                        not self.empty.is_full())
        self.assertTrue(self.empty.is_inverted())
        self.assertTrue(self.full.is_valid() and
                        not self.full.is_empty() and
                        self.full.is_full())
        self.assertTrue(not self.quad12.is_empty() and
                        not self.quad12.is_full() and
                        not self.quad12.is_inverted())
        self.assertTrue(not self.quad23.is_empty() and
                        not self.quad23.is_full() and
                        self.quad23.is_inverted())
        self.assertTrue(self.pi.is_valid() and
                        not self.pi.is_empty() and
                        not self.pi.is_inverted())
        self.assertTrue(self.mipi.is_valid() and
                        not self.mipi.is_empty() and
                        not self.mipi.is_inverted())
项目:s2sphere    作者:sidewalklabs    | 项目源码 | 文件源码
def testApproxEquals(self):

        self.assertTrue(self.empty.approx_equals(self.empty))
        self.assertTrue(self.zero.approx_equals(self.empty) and
                        self.empty.approx_equals(self.zero))
        self.assertTrue(self.pi.approx_equals(self.empty) and
                        self.empty.approx_equals(self.pi))
        self.assertTrue(self.mipi.approx_equals(self.empty) and
                        self.empty.approx_equals(self.mipi))
        self.assertTrue(self.pi.approx_equals(self.mipi) and
                        self.mipi.approx_equals(self.pi))
        self.assertTrue(self.pi.union(self.mipi).approx_equals(self.pi))
        self.assertTrue(self.mipi.union(self.pi).approx_equals(self.pi))
        self.assertTrue(self.pi.union(
            self.mid12).union(self.zero).approx_equals(self.quad12))
        self.assertTrue(self.quad2.intersection(
            self.quad3).approx_equals(self.pi))
        self.assertTrue(self.quad3.intersection(
            self.quad2).approx_equals(self.pi))
项目:s2sphere    作者:sidewalklabs    | 项目源码 | 文件源码
def testGetVertex(self):
        r1 = LatLngRect(LineInterval(0, math.pi / 2.0),
                        SphereInterval(-math.pi, 0))
        self.assertEqual(r1.get_vertex(0), LatLng.from_radians(0, math.pi))
        self.assertEqual(r1.get_vertex(1), LatLng.from_radians(0, 0))
        self.assertEqual(r1.get_vertex(2),
                         LatLng.from_radians(math.pi / 2.0, 0))
        self.assertEqual(r1.get_vertex(3),
                         LatLng.from_radians(math.pi / 2.0, math.pi))

        # Make sure the get_vertex() returns vertices in CCW order.
        for i in range(4):
            lat = math.pi / 4.0 * (i - 2)
            lng = math.pi / 2.0 * (i - 2) + 0.2
            r = LatLngRect(LineInterval(lat, lat + math.pi / 4.0),
                           SphereInterval(s2sphere.drem(lng, 2 * math.pi),
                           s2sphere.drem(lng + math.pi / 2.0, 2 * math.pi)))
            for k in range(4):
                self.assertTrue(
                    s2sphere.simple_ccw(r.get_vertex((k - 1) & 3).to_point(),
                                        r.get_vertex(k).to_point(),
                                        r.get_vertex((k + 1) & 3).to_point())
                )
项目:ssbio    作者:SBRG    | 项目源码 | 文件源码
def get_angle_formed_by(p1,p2,p3): # angle formed by three positions in space

    # based on code submitted by Paul Sherwood
    r1 = distance(p1,p2)
    r2 = distance(p2,p3)
    r3 = distance(p1,p3)

    small = 1.0e-10

    if (r1 + r2 - r3) < small:
        # This seems to happen occasionally for 180 angles 
        theta = math.pi
    else:
        theta = math.acos( (r1*r1 + r2*r2  - r3*r3) / (2.0 * r1*r2) )
    return theta;

#------------------------------------------------------------------------------
项目:mav_rtk_gps    作者:ethz-asl    | 项目源码 | 文件源码
def mitsuta_mean(self, angles_array):
        # Function meant to work with degrees, covert inputs
        # from radians to degrees and output from degrees to radians
        D = math.degrees(angles_array[0])
        mysum = D
        for val in angles_array[1:]:
            val = math.degrees(val)
            delta = val - D
            if delta < -180.0:
                D = D + delta + 360.0
            elif delta < 180.0:
                D = D + delta
            else:
                D = D + delta - 360.0
            mysum = mysum + D
        m = mysum / len(angles_array)

        avg = math.radians((m + 360.0) % 360.0)
        # make sure avg is between -pi and pi
        if avg > math.pi:
            avg = avg - 2.0 * math.pi
        elif avg < -math.pi:
            avg = avg + 2.0 * math.pi

        return avg
项目:TrackToTrip    作者:ruipgil    | 项目源码 | 文件源码
def distance(latitude_1, longitude_1, elevation_1, latitude_2, longitude_2, elevation_2,
             haversine=None):
    """ Distance between two points """

    # If points too distant -- compute haversine distance:
    if haversine or (abs(latitude_1 - latitude_2) > .2 or abs(longitude_1 - longitude_2) > .2):
        return haversine_distance(latitude_1, longitude_1, latitude_2, longitude_2)

    coef = math.cos(latitude_1 / 180. * math.pi)
    #pylint: disable=invalid-name
    x = latitude_1 - latitude_2
    y = (longitude_1 - longitude_2) * coef

    distance_2d = math.sqrt(x * x + y * y) * ONE_DEGREE

    if elevation_1 is None or elevation_2 is None or elevation_1 == elevation_2:
        return distance_2d

    return math.sqrt(distance_2d ** 2 + (elevation_1 - elevation_2) ** 2)
项目:pypilot    作者:pypilot    | 项目源码 | 文件源码
def ComputeCoverage(sigma_points, bias):
    def ang(p):
        v = rotvecquat(vector.sub(p.compass, bias), vec2vec2quat(p.down, [0, 0, 1]))
        return math.atan2(v[1], v[0])

    angles = sorted(map(ang, sigma_points))
    #print 'angles', angles

    max_diff = 0
    for i in range(len(angles)):
        diff = -angles[i]
        j = i+1
        if j == len(angles):
            diff += 2*math.pi
            j = 0
        diff += angles[j]
        max_diff = max(max_diff, diff)
    return max_diff
项目:pypilot    作者:pypilot    | 项目源码 | 文件源码
def onMouseEventsBoatPlot( self, event ):
        self.BoatPlot.SetFocus()

        pos = event.GetPosition()
        if event.LeftDown():
            self.lastmouse = pos

        if event.Dragging():
            dx, dy = pos[0] - self.lastmouse[0], pos[1] - self.lastmouse[1]
            q = pypilot.quaternion.angvec2quat((dx**2 + dy**2)**.4/180*math.pi, [dy, dx, 0])

            self.boat_plot.Q = pypilot.quaternion.multiply(q, self.boat_plot.Q)
            self.BoatPlot.Refresh()
            self.lastmouse = pos

        rotation = event.GetWheelRotation() / 60
        if rotation:
            self.BoatPlot.Refresh()
        while rotation > 0:
            self.boat_plot.Scale /= .9
            rotation -= 1
        while rotation < 0:
            self.boat_plot.Scale *= .9
            rotation += 1
项目:Maps    作者:DarkPurple141    | 项目源码 | 文件源码
def __init__(self,seed):
        random.seed(seed)
        self.ISLAND_FACTOR = 1.13 # 1.0 means no small islands; 2.0 leads to a lot
        self.bumps = random.randrange(1,7)
        self.startAngle = random.uniform(0,2*math.pi)
        self.dipAngle = random.uniform(0,2*math.pi)
        self.dipWidth = random.uniform(0.2,0.7)
项目:joysix    作者:niberger    | 项目源码 | 文件源码
def __init__(self):
        self.ser = serial.Serial('/dev/ttyACM0', 9600)

        #geometrical calibration
        self.rs = [50, 50, 50]
        self.ls = [95, 130, 95]
        self.pot_rad_per_unit = 1./3000.*math.pi
        angles = [2./3.*math.pi, 0., -2./3.*math.pi]

        #placements of the 3 joysticks
        self.placements = []
        #attach point on the ball
        self.attach_ps = []
        for r,l,a in zip(self.rs, self.ls, angles):
            p_init = pose.exp(col([0, 0, 0, 0, 0, -(r+l)]))
            p_rot = pose.exp(col([0, a, 0, 0, 0, 0]))
            placement = p_rot * p_init
            self.placements.append(placement)
            attach_p = placement * col([0, 0, l])
            self.attach_ps.append(attach_p)

        #last calculated pose in logarithmic coordinates
        self.last_x = col([0, 0, 0, 0, 0, 0])
        #definition of the numerical solver
        f = lambda x: self.getValuesFromPose(pose.exp(x))
        self.solver = solver.Solver(f)
项目:drl.pth    作者:seba-1511    | 项目源码 | 文件源码
def __init__(self, model, action_size=1, init_value=0.0, *args, **kwargs):
        super(DiagonalGaussianPolicy, self).__init__(model, *args, **kwargs)
        self.init_value = init_value
        self.logstd = th.zeros((1, action_size)) + self.init_value
        self.logstd = P(self.logstd)
        self.halflog2pie = V(T([2 * pi * exp(1)])) * 0.5
        self.halflog2pi = V(T([2.0 * pi])) * 0.5
        self.pi = V(T([pi]))
项目:drl.pth    作者:seba-1511    | 项目源码 | 文件源码
def _normal(self, x, mean, logstd):
        std = logstd.exp()
        std_sq = std.pow(2)
        a = (-(x - mean).pow(2) / (2 * std_sq)).exp()
        b = (2 * std_sq * self.pi.expand_as(std_sq)).sqrt()
        return a / b
项目:BlenderRokuro    作者:satoyuichi    | 项目源码 | 文件源码
def rokuro_add_euler(euler, r):
    props = bpy.context.window_manager.rokuro

    if props.rotate_direction:
        if (euler + r) < 0:
            new_euler = euler + r + (2.0 * math.pi)
        else:
            new_euler = euler + r
    else:
        if (euler + r) > (2.0 * math.pi):
            new_euler = euler + r - (2.0 * math.pi)
        else:
            new_euler = euler + r

    return new_euler
项目:BlenderRokuro    作者:satoyuichi    | 项目源码 | 文件源码
def rokuro_proc(scene):
    props = bpy.context.window_manager.rokuro

    r = props.rotate_step * 2.0 * math.pi / (scene.frame_end - scene.frame_start)
    if props.rotate_direction:
        r *= -1.0

    if props.rotate_axis_x:
        bpy.context.object.rotation_euler[0] = rokuro_add_euler(bpy.context.object.rotation_euler[0], r)

    if props.rotate_axis_y:
        bpy.context.object.rotation_euler[1] = rokuro_add_euler(bpy.context.object.rotation_euler[1], r)

    if props.rotate_axis_z:
        bpy.context.object.rotation_euler[2] = rokuro_add_euler(bpy.context.object.rotation_euler[2], r)
项目:coa_tools    作者:ndee85    | 项目源码 | 文件源码
def drag_bone(self,context, event ,bone=None):
        ### math.atan2(0.5, 0.5)*180/math.pi
        if bone != None:

            bone.hide = False
            mouse_vec_norm = (self.cursor_location - self.mouse_click_vec).normalized()
            mouse_vec = (self.cursor_location - self.mouse_click_vec)
            angle = (math.atan2(mouse_vec_norm[0], mouse_vec_norm[2])*180/math.pi)
            cursor_local = self.armature.matrix_world.inverted() * self.cursor_location
            cursor_local[1] = 0
            if event.shift:
                if angle > -22.5 and angle < 22.5:
                    ### up
                    bone.tail =  Vector((bone.head[0],cursor_local[1],cursor_local[2]))
                elif angle > 22.5 and angle < 67.5:
                    ### up right
                    bone.tail = (bone.head +  Vector((mouse_vec[0],0,mouse_vec[0])))
                elif angle > 67.5 and angle < 112.5:
                    ### right
                    bone.tail = Vector((cursor_local[0],cursor_local[1],bone.head[2]))
                elif angle > 112.5 and angle < 157.5:
                    ### down right
                    bone.tail = (bone.head +  Vector((mouse_vec[0],0,-mouse_vec[0])))
                elif angle > 157.5 or angle < -157.5:   
                    ### down
                    bone.tail = Vector((bone.head[0],cursor_local[1],cursor_local[2]))
                elif angle > -157.5 and angle < -112.5:
                    ### down left
                        bone.tail = (bone.head +  Vector((mouse_vec[0],0,mouse_vec[0])))
                elif angle > -112.5 and angle < -67.5:
                    ### left
                    bone.tail = Vector((cursor_local[0],cursor_local[1],bone.head[2]))
                elif angle > -67.5 and angle < -22.5:       
                    ### left up
                    bone.tail = (bone.head +  Vector((mouse_vec[0],0,-mouse_vec[0])))
            else:
                bone.tail = cursor_local
项目:coa_tools    作者:ndee85    | 项目源码 | 文件源码
def get_bone_angle(armature,bone,relative=True):
    loc, rot, scale = get_bone_matrix(armature,bone,relative).decompose()
    compat_euler = Euler((0.0,0.0,math.pi),"XYZ")
    angle = -rot.to_euler().z  # negate angle to fit dragonbones angle

    return round(math.degrees(angle),2)
项目:tree-gen    作者:friggog    | 项目源码 | 文件源码
def get_mesh(self, bend, base_shape, index):
        """produce leaf mesh at position of this leaf given base mesh as input"""
        # calculate angles to transform mesh to align with desired direction
        trf = self.direction.to_track_quat('Z', 'Y')
        right_t = self.right.rotated(trf.inverted())
        spin_ang = pi - right_t.angle(Vector([1, 0, 0]))

        # calculate bend transform if needed
        if bend > 0:
            bend_trf_1, bend_trf_2 = self.calc_bend_trf(bend)
        else:
            bend_trf_1 = bend_trf_2 = None

        vertices = []
        for vertex in base_shape[0]:
            # rotate to correct direction
            vertex = vertex.copy()
            vertex.rotate(Quaternion(Vector([0, 0, 1]), spin_ang))
            vertex.rotate(trf)
            # apply bend if needed
            if bend > 0:
                vertex.rotate(bend_trf_1)
                vertex.rotate(bend_trf_2)
            # move to right position
            vertex += self.position
            # add to vertex array
            vertices.append(vertex)
        # set face to refer to vertices at correct offset in big vertex list
        index *= len(vertices)
        faces = deepcopy(base_shape[1])
        for face in faces:
            for ind, elem in enumerate(face):
                face[ind] = elem + index
        return vertices, faces
项目:tree-gen    作者:friggog    | 项目源码 | 文件源码
def calc_bend_trf(self, bend):
        """calculate the transformations required to 'bend' the leaf out/up from WP"""
        normal = self.direction.cross(self.right)
        theta_pos = atan2(self.position.y, self.position.x)
        theta_bend = theta_pos - atan2(normal.y, normal.x)
        bend_trf_1 = Quaternion(Vector([0, 0, 1]), theta_bend * bend)
        self.direction.rotate(bend_trf_1)
        self.right.rotate(bend_trf_1)
        normal = self.direction.cross(self.right)
        phi_bend = normal.declination()
        if phi_bend > pi / 2:
            phi_bend = phi_bend - pi
        bend_trf_2 = Quaternion(self.right, phi_bend * bend)
        return bend_trf_1, bend_trf_2
项目:tree-gen    作者:friggog    | 项目源码 | 文件源码
def calc_helix_points(turtle, rad, pitch):
    """ calculates required points to produce helix bezier curve with given radius and pitch in direction of turtle"""
    # alpha = radians(90)
    # pit = pitch/(2*pi)
    # a_x = rad*cos(alpha)
    # a_y = rad*sin(alpha)
    # a = pit*alpha*(rad - a_x)*(3*rad - a_x)/(a_y*(4*rad - a_x)*tan(alpha))
    # b_0 = Vector([a_x, -a_y, -alpha*pit])
    # b_1 = Vector([(4*rad - a_x)/3, -(rad - a_x)*(3*rad - a_x)/(3*a_y), -a])
    # b_2 = Vector([(4*rad - a_x)/3, (rad - a_x)*(3*rad - a_x)/(3*a_y), a])
    # b_3 = Vector([a_x, a_y, alpha*pit])
    # axis = Vector([0, 0, 1])

    # simplifies greatly for case inc_angle = 90
    points = [Vector([0, -rad, -pitch / 4]),
              Vector([(4 * rad) / 3, -rad, 0]),
              Vector([(4 * rad) / 3, rad, 0]),
              Vector([0, rad, pitch / 4])]

    # align helix points to turtle direction and randomize rotation around axis
    trf = turtle.dir.to_track_quat('Z', 'Y')
    spin_ang = rand_in_range(0, 2 * pi)
    for p in points:
        p.rotate(Quaternion(Vector([0, 0, 1]), spin_ang))
        p.rotate(trf)

    return points[1] - points[0], points[2] - points[0], points[3] - points[0], turtle.dir.copy()
项目:tree-gen    作者:friggog    | 项目源码 | 文件源码
def points_for_floor_split(self):
        """Calculate Poissonly distributed points for stem start points"""
        array = []
        # calculate approx spacing radius for dummy stem
        self.tree_scale = self.param.g_scale + self.param.g_scale_v
        stem = Stem(0, None)
        stem.length = self.calc_stem_length(stem)
        rad = 2.5 * self.calc_stem_radius(stem)
        # generate points
        for _ in range(self.param.floor_splits + 1):
            point_ok = False
            while not point_ok:
                # distance from center proportional for number of splits, tree scale and stem radius
                dis = sqrt(rand_in_range(0, 1) * self.param.floor_splits / 2.5 * self.param.g_scale * self.param.ratio)
                # angle random in circle
                theta = rand_in_range(0, 2 * pi)
                pos = Vector([dis * cos(theta), dis * sin(theta), 0])
                # test point against those already in array to ensure it will not intersect
                point_m_ok = True
                for point in array:
                    if (point[0] - pos).magnitude < rad:
                        point_m_ok = False
                        break
                if point_m_ok:
                    point_ok = True
                    array.append((pos, theta))
        return array
项目:tree-gen    作者:friggog    | 项目源码 | 文件源码
def shape_ratio(self, shape, ratio):
        """Calculate shape ratio as defined in paper"""
        if shape == 1:  # spherical
            result = 0.2 + 0.8 * sin(pi * ratio)
        elif shape == 2:  # hemispherical
            result = 0.2 + 0.8 * sin(0.5 * pi * ratio)
        elif shape == 3:  # cylindrical
            result = 1.0
        elif shape == 4:  # tapered cylindrical
            result = 0.5 + 0.5 * ratio
        elif shape == 5:  # flame
            if ratio <= 0.7:
                result = ratio / 0.7
            else:
                result = (1.0 - ratio) / 0.3
        elif shape == 6:  # inverse conical
            result = 1.0 - 0.8 * ratio
        elif shape == 7:  # tend flame
            if ratio <= 0.7:
                result = 0.5 + 0.5 * ratio / 0.7
            else:
                result = 0.5 + 0.5 * (1.0 - ratio) / 0.3
        elif shape == 8:  # envelope
            if ratio < 0 or ratio > 1:
                result = 0.0
            elif ratio < 1 - self.param.prune_width_peak:
                result = pow(ratio / (1 - self.param.prune_width_peak),
                             self.param.prune_power_high)
            else:
                result = pow((1 - ratio) / (1 - self.param.prune_width_peak),
                             self.param.prune_power_low)
        else:  # conical (0)
            result = 0.2 + 0.8 * ratio
        return result
项目:PGO-mapscan-opt    作者:seikur0    | 项目源码 | 文件源码
def get_border_cell(s2_id):
    locs = []
    s2_cell = Cell(s2_id)
    for i in [0, 1]:
        for j in [0, 1]:
            locs.append([s2_cell.get_latitude(i, j) * 180 / pi, s2_cell.get_longitude(i, j) * 180 / pi])
    output = [locs[0], locs[1], locs[3], locs[2], locs[0]]
    return output
项目:PGO-mapscan-opt    作者:seikur0    | 项目源码 | 文件源码
def init_lats(self):
        latrad = 0.0
        lats = []

        c = 0.5 * self.r_sight * self.safety
        while latrad < pi / 2:
            lats.append(latrad)
            latrad += c / self.earth_R
        return lats
项目:PGO-mapscan-opt    作者:seikur0    | 项目源码 | 文件源码
def init_grid(self):
        grid_all = []
        lats = self.init_lats()
        c = 2 * pi / (3 ** 0.5 * self.r_sight * self.safety) * self.earth_R

        even_lng = True

        strip_amount = int(ceil(c))
        grid_all.append((0, strip_amount, even_lng))
        ind_lat = 2

        while ind_lat < len(lats):
            amount = int(ceil(c * cos(lats[ind_lat])))
            if amount < strip_amount - (sin(lats[ind_lat]*2)*self.param_shift+self.param_stretch):
                ind_lat -= 1
                strip_amount = int(ceil(c * cos(lats[ind_lat])))
            else:
                even_lng = not even_lng

            if ind_lat + 1 < len(lats):
                lat = lats[ind_lat + 1] * 180 / pi
                grid_all.append((lat, strip_amount, even_lng))
            ind_lat += 3

        grid_all.append((90.0, 1, True))  # pole

        return grid_all
项目:PGO-mapscan-opt    作者:seikur0    | 项目源码 | 文件源码
def cover_circle(self,loc,radius):
        lat,lng = loc
        output = []
        r_lat = radius / earth_Rrect*180/pi
        r_lng = r_lat /cos(min(abs(lat)+r_lat,90.0)*pi/180)
        locations = self.cover_region((lat-r_lat,lng-r_lng),(lat+r_lat,lng+r_lng))
        for location in locations:
            dist = get_distance(loc,location)
            if dist < radius:
                output.append(location)
        return output
项目:RasterFairy    作者:Quasimondo    | 项目源码 | 文件源码
def getCircularBounds(fitCloud=None,width=64,height=64,smoothing=0.01):
    circumference = 2*(width+height)

    if not fitCloud is None:
        cx = np.mean(fitCloud[:,0])
        cy = np.mean(fitCloud[:,1])
        r = 0.5* max( np.max(fitCloud[:,0])- np.min(fitCloud[:,0]),np.max(fitCloud[:,1])- np.min(fitCloud[:,1]))
    else:
        r = circumference /(2.0*math.pi)
        cx = cy = r
    perimeterPoints = np.zeros((circumference,2),dtype=float)
    for i in range(circumference):
        angle = (2.0*math.pi)*float(i) / circumference - math.pi * 0.5 
        perimeterPoints[i][0] = cx + r * math.cos(angle)
        perimeterPoints[i][1] = cy + r * math.sin(angle)


    bounds = {'top':perimeterPoints[0:width],
              'right':perimeterPoints[width-1:width+height-1],
              'bottom':perimeterPoints[width+height-2:2*width+height-2],
              'left':perimeterPoints[2*width+height-3:]}

    bounds['s_top'],u = interpolate.splprep([bounds['top'][:,0], bounds['top'][:,1]],s=smoothing)
    bounds['s_right'],u = interpolate.splprep([bounds['right'][:,0],bounds['right'][:,1]],s=smoothing)
    bounds['s_bottom'],u = interpolate.splprep([bounds['bottom'][:,0],bounds['bottom'][:,1]],s=smoothing)
    bounds['s_left'],u = interpolate.splprep([bounds['left'][:,0],bounds['left'][:,1]],s=smoothing)


    return bounds
项目:tailbiter    作者:darius    | 项目源码 | 文件源码
def test_import(self):
        self.assert_ok("""\
            import math
            print(math.pi, math.e)
            from math import sqrt
            print(sqrt(2))
            """)
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def test_FileSourceTimecodeType2000Complex(self):
        # Create a test file with frequency on the X-axis and time on the
        # Y-axis (as one might see from an FFT)
        subsize = 200
        xdelta = 2.0*math.pi/subsize
        ydelta = 0.125
        hdr = bluefile.header(2000, 'CF', subsize=subsize)
        hdr['xstart'] = -math.pi/2.0
        hdr['xdelta'] = xdelta
        hdr['xunits'] = 3 # frequency
        hdr['ydelta'] = ydelta
        hdr['yunits'] = 1 # time
        data = numpy.arange(1000, dtype=numpy.complex64).reshape((-1,subsize))

        self._check_FileSourceTimecode(hdr, data, subsize*2, ydelta)
项目:zellij    作者:nedbat    | 项目源码 | 文件源码
def rotate(self, degrees):
        # Cairo uses radians, let's be more convenient.
        self.ctx.rotate(degrees * math.pi / 180)
项目:zellij    作者:nedbat    | 项目源码 | 文件源码
def circle(self, xc, yc, radius):
        self.arc(xc, yc, radius, 0, math.pi * 2)
项目:Fluent-Python    作者:Ehco1996    | 项目源码 | 文件源码
def angle(self, n):
        # ?? n???? ???????????
        r = math.sqrt(sum(x * x for x in self[n:]))
        a = math.atan2(r, self[n - 1])
        if (n == len(self)) and (self[-1] < 0):
            return math.pi * 2 - a
        else:
            return a
项目:blender-scripting    作者:njanakiev    | 项目源码 | 文件源码
def createLabels(X, y, labels, cameraObj=None):
    labelIndices = set(y)
    objects = []

    # Draw labels
    for labelIdx in labelIndices:
        center = np.sum([x for x, idx in zip(X, y) \
            if idx == labelIdx], axis=0)
        counts = (y == labelIdx).sum()
        center = Vector(center) / counts

        label = labels[labelIdx]
        fontCurve = bpy.data.curves.new(type="FONT", name=label)
        fontCurve.body = label
        fontCurve.align_x = 'CENTER'
        fontCurve.align_y = 'BOTTOM'
        fontCurve.size = 0.6

        obj = bpy.data.objects.new("Label {}".format(label), fontCurve)
        obj.location = center + Vector((0, 0, 0.8))
        obj.rotation_mode = 'AXIS_ANGLE'
        obj.rotation_axis_angle = (pi/2, 1, 0, 0)
        bpy.context.scene.objects.link(obj)

        if cameraObj is not None:
            constraint = obj.constraints.new('LOCKED_TRACK')
            constraint.target = cameraObj
            constraint.track_axis = 'TRACK_Z'
            constraint.lock_axis = 'LOCK_Y'

        objects.append(obj)

    bpy.context.scene.update()

    return objects
项目:blender-scripting    作者:njanakiev    | 项目源码 | 文件源码
def __init__(self, scene):
        self.n, self.m = 40, 30
        self.r0, self.r1, self.r2 = 10, 2, 2
        self.h0, self.h1 = 10, 3
        self.frames = scene.frame_end - scene.frame_start + 1

        # Calculate and compensate for angle offset for infinite animation
        self.offset = (self.frames * goldenAngle) % TAU
        if self.offset > pi: self.offset -= TAU

        # Create object
        mesh = bpy.data.meshes.new('PhyllotaxisFlower')
        self.obj = bpy.data.objects.new('PhyllotaxisFlower', mesh)

        # Create mesh
        bm = self.geometry()
        bm.to_mesh(mesh)
        mesh.update()
        bm.free()

        # Link object to scene
        scene.objects.link(self.obj)
        scene.update()

        # Append new frame change handler to redraw geometry
        # for each frame change
        bpy.app.handlers.frame_change_pre.append(self.__frameChangeHandler)
项目:blender-scripting    作者:njanakiev    | 项目源码 | 文件源码
def geometry(self, frame=0):
        t = frame / self.frames
        Rot = Matrix.Rotation(0.5*pi, 4, 'Y')
        bm = bmesh.new()

        for i in range(self.n):
            t0 = i / self.n
            r0, theta = t0*self.r0, i*goldenAngle - frame*goldenAngle + t*self.offset

            x = r0*cos(theta)
            y = r0*sin(theta)
            z = self.h0/2 - (self.h0 / (self.r0*self.r0))*r0*r0
            p0 = Vector((x, y, z))

            T0, N0, B0 = getTNBfromVector(p0)
            M0 = Matrix([T0, B0, N0]).to_4x4().transposed()

            for j in range(self.m):
                t1 = j / self.m
                t2 = 0.4 + 0.6*t0
                r1, theta = t2*t1*self.r1, j*goldenAngle #- frame*goldenAngle + t*self.offset

                x = r1*cos(theta)
                y = r1*sin(theta)
                z = self.h1 - (self.h1 / (self.r1*self.r1))*r1*r1
                p1 = Vector((x, y, z))
                T1, N1, B1 = getTNBfromVector(p1)
                M1 = Matrix([T1, B1, N1]).to_4x4().transposed()

                p = p0 + M0*p1
                r2 = t2*t1*self.r2

                T = Matrix.Translation(p)
                bmesh.ops.create_cone(bm,
                                cap_ends=True, segments=6,
                                diameter1=r2, diameter2=r2,
                                depth=0.1*r2, matrix=T*M0*M1*Rot)
        return bm
项目:hip-mdp-public    作者:dtak    | 项目源码 | 文件源码
def __log_likelihood_factor__(self, samples_q, v_noise, X, wb, y):
        # Account for occasions where we're optimizing the latent weighting distributions
        if wb.shape[0] == 1:
            if wb.shape[1] > self.num_latent_params: # Further account
                # Reshape the wb to be a full matrix and build full latent array
                Wb = np.reshape(wb, [-1,self.num_latent_params])
                latent_weights = np.array([Wb[int(X[tt,-1]),:] for tt in range(X.shape[0])])
                outputs = self.__predict__(samples_q, np.hstack([X[:,:-1], latent_weights]))
            else:
                outputs = self.__predict__(samples_q, np.hstack([X, np.tile(wb,(X.shape[0],1))]))
        else:
            outputs = self.__predict__(samples_q, np.hstack([X, wb]))
        return (-0.5*np.log(2*math.pi*v_noise)) - (0.5*(np.tile(np.expand_dims(y,axis=0), (self.num_weight_samples,1,1))-outputs)**2)/v_noise
项目:hip-mdp-public    作者:dtak    | 项目源码 | 文件源码
def __log_normalizer__(self, q): 
        return np.sum(0.5*np.log(q['v']*2*math.pi) + 0.5*q['m']**2/q['v'])
项目:hip-mdp-public    作者:dtak    | 项目源码 | 文件源码
def __log_Z_prior__(self):
        return self.num_weights * 0.5 * np.log(self.v_prior*2*math.pi)
项目:hip-mdp-public    作者:dtak    | 项目源码 | 文件源码
def get_error_and_ll(self, X, y, location, scale):
        v_noise = np.exp(self.parser.get(self.weights, 'log_v_noise')[0,0]) * scale**2
        q = self.__get_parameters_q__()
        samples_q = self.__draw_samples__(q)
        outputs = self.__predict__(samples_q, X)
        log_factor = -0.5*np.log(2*math.pi*v_noise) - 0.5*(np.tile(np.expand_dims(y,axis=0), (self.num_weight_samples,1,1))-np.array(outputs))**2/v_noise
        ll = np.mean(logsumexp(np.sum(log_factor,2)-np.log(self.num_weight_samples), 0))
        error = np.sqrt(np.mean((y-np.mean(outputs, axis=0))**2))
        return error, ll
项目:Deep360Pilot-optical-flow    作者:yenchenlin    | 项目源码 | 文件源码
def show_result(hists, bin_edges):
    """ check results """
    for b_edge in bin_edges/math.pi*180:
        print '{0:.2f}\t'.format(round(b_edge)),
    print
    for hist in hists:
        print '{0:.2f}\t'.format(hist),
    print
项目:Deep360Pilot-optical-flow    作者:yenchenlin    | 项目源码 | 文件源码
def gradient_histogram(flow_img, binsize=12):
    """ calculate histogram """
    assert len(flow_img.shape) == 3, "Wrong flow image."

    # NOTE the frame is in RGB, while cv2 is in BGR, so do REMEMBER to reverse it.
    img_mag, img_v, img_u = np.split(flow_img, 3, 2)

    # NOTE the role reversal: the "y-coordinate" is the first function parameter, the "x-coordinate" is the second.
    # NOTE that we use same axis configure as image axis(x is larger to the right, y is larger to the bottom),
    # so add a minus sign before img_v, to make the two axis align.
    orientation = np.arctan2(-img_v, img_u)

    # Original result not applicable
    # Directly use full 360 degree
    new_orient = orientation

    # Prune zero motion
    _mag_greater_zero = img_mag > 0.0
    pruned_orient = new_orient[_mag_greater_zero]

    # Histogram of optical flow
    hofbins = np.arange(-math.pi, math.pi+1e-6, 2*math.pi/binsize)
    hist, bin_edges = np.histogram(pruned_orient.flatten(), bins= hofbins) #, density=True)

    # Normalize
    hist = hist.astype(np.float32) / (np.sum(_mag_greater_zero) + 1e-6)

    return hist, bin_edges
项目:aws-greengrass-mini-fulfillment    作者:awslabs    | 项目源码 | 文件源码
def cart2polar(x, y, degrees=True):
    """
    Convert cartesian X and Y to polar RHO and THETA.
    :param x: x cartesian coordinate
    :param y: y cartesian coordinate
    :param degrees: True = return theta in degrees, False = return theta in
        radians. [default: True]
    :return: r, theta
    """
    rho = ma.sqrt(x ** 2 + y ** 2)
    theta = ma.arctan2(y, x)
    if degrees:
        theta *= (180 / math.pi)

    return rho, theta
项目:Daniel-Arbuckles-Mastering-Python    作者:PacktPublishing    | 项目源码 | 文件源码
def degrees(radians):
    return 180 * (radians / math.pi)