zoukankan      html  css  js  c++  java
  • 平面坐标与极坐标转换

    import numpy as np
    def pnt2polar(p):
        # 平面点转极坐标
        x, y = p
        length = np.sqrt(x * x + y * y)
        x = round(x, 6)
        y = round(y, 6)
        alpha = np.arctan(abs(y / x)) if x != 0. else 0.
        if x > 0:
            if y > 0:
                angle = alpha
            elif y == 0:
                angle = 0
            else:
                angle = pi * 2 - alpha
        elif x == 0:
            if y > 0:
                angle = pi / 2
            elif y == 0:
                angle = 0
            else:
                angle = 3 * pi / 2
        else:
            if y > 0:
                angle = pi - alpha
            elif y == 0:
                angle = pi
            else:
                angle = pi + alpha
    
        return round(length, 3), round(angle, 3)
    
    
    def polar2pnt(p):
        # 极坐标转平面坐标
        length, angle = p
        eps = 1e-8
    
        if length == 0:
            x, y = 0
        else:
            if angle < eps:
                x = length
                y = 0
            elif angle - 3 * pi / 2 > eps:
                x = length * np.cos(2 * pi - angle)
                y = -length * np.sin(2 * pi - angle)
            elif angle - 3 * pi / 2 == eps:
                x = 0
                y = length
            elif angle - pi > eps:
                x = -length * np.cos(angle - pi)
                y = -length * np.sin(angle - pi)
            elif angle - pi == eps:
                x = -length
                y = 0
            elif angle - pi / 2 > eps:
                x = -length * np.cos(pi - angle)
                y = length * np.sin(pi - angle)
            elif angle - pi / 2 == eps:
                x = 0
                y = -length
            else:
                x = length * np.cos(angle)
                y = length * np.sin(angle)
    
        return round(x, 3), round(y, 3)
    

      

  • 相关阅读:
    java对象转json对象
    cas-client登录后报INVALID_PROXY_CALLBACK
    tomcat启动一闪而过,调试tomcat
    获取url中的参数
    cas 退出后跳转指定页面
    cas增加验证码
    spring security+cas(cas proxy配置)
    oracle 导入导出指定表
    Marshaller根据对象生成xml文件
    webpack学习笔记
  • 原文地址:https://www.cnblogs.com/ddzhen/p/15293376.html
Copyright © 2011-2022 走看看