数据分析--不同形式坐标点转换

数据分析–不同形式坐标点转换

在绘制数学矩形时, 数据源的坐标形式不尽相同, 最好能转换成角点坐标,这样最方便绘制图像

中心点坐标,长宽,偏转角度 转换 矩形角坐标 2D

import math

def parameter_to_point_2d(x, y, width, length, angle):
    """
    输入中心点坐标,长宽,偏转角度 返回2d坐标点
    Args:
        x: 中心点坐标x
        y: 中心点坐标y
        width: 宽 对应x轴
        length: 高 对应y轴
        angle: 偏转角度

    Returns:
        2d坐标点4个点坐标 顺序 {lt;lb;rb;rt;};
    """
    anglePi = angle * math.pi / 180.0  # 计算角度
    cosA = math.cos(anglePi)
    sinA = math.sin(anglePi)

    x1 = x - 0.5 * length
    y1 = y - 0.5 * width

    x0 = x + 0.5 * length
    y0 = y1

    x2 = x1
    y2 = y + 0.5 * width

    x3 = x0
    y3 = y2

    x0n = (x0 - x) * cosA - (y0 - y) * sinA + x
    y0n = (x0 - x) * sinA + (y0 - y) * cosA + y

    x1n = (x1 - x) * cosA - (y1 - y) * sinA + x
    y1n = (x1 - x) * sinA + (y1 - y) * cosA + y

    x2n = (x2 - x) * cosA - (y2 - y) * sinA + x
    y2n = (x2 - x) * sinA + (y2 - y) * cosA + y

    x3n = (x3 - x) * cosA - (y3 - y) * sinA + x
    y3n = (x3 - x) * sinA + (y3 - y) * cosA + y

    return [[x0n, y0n], [x1n, y1n], [x2n, y2n], [x3n, y3n]]

中心点坐标,长宽高,偏转角度 转换 矩形角坐标 3D

import math
def parameter_to_point_3d(x, y, length, width, height, angle):
    """
    输入中心点坐标,长宽高,偏转角度 返回3d坐标点
    Args:
        x: 中心点坐标x
        y: 中心点坐标y
        length: 长 对应x轴
        width: 宽 对应y轴
        height: 高 对应z轴
        angle: 偏转角度

    Returns:
        3d坐标点8个点坐标 顺序 {lower_lt;lower_lb;lower_rb;lower_rt;upper_lt;upper_lb;upper_rb;upper_rt;};
    """
    anglePi = angle * math.pi / 180.0  # 计算角度
    cosA = math.cos(anglePi)
    sinA = math.sin(anglePi)

    x1 = x - 0.5 * length
    y1 = y - 0.5 * width

    x0 = x + 0.5 * length
    y0 = y1

    x2 = x1
    y2 = y + 0.5 * width

    x3 = x0
    y3 = y2

    x0n = (x0 - x) * cosA - (y0 - y) * sinA + x
    y0n = (x0 - x) * sinA + (y0 - y) * cosA + y

    x1n = (x1 - x) * cosA - (y1 - y) * sinA + x
    y1n = (x1 - x) * sinA + (y1 - y) * cosA + y

    x2n = (x2 - x) * cosA - (y2 - y) * sinA + x
    y2n = (x2 - x) * sinA + (y2 - y) * cosA + y

    x3n = (x3 - x) * cosA - (y3 - y) * sinA + x
    y3n = (x3 - x) * sinA + (y3 - y) * cosA + y

    return [[x0n, y0n, 0], [x1n, y1n, 0], [x2n, y2n, 0], [x3n, y3n, 0], [x0n, y0n, height], [x1n, y1n, height],
            [x2n, y2n, height], [x3n, y3n, height]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值