跳转至

05 - 坐标、角度与单位

本章列出 LESS 使用的坐标系、角度和单位,供建模和查阅时参考。

坐标系

场景坐标原点位于地面的西北角,Z 轴向上:

坐标系

轴 方向 单位
X 向东 m
Y 向南 m
Z 向上 m

scene.size 设置地面的水平范围,地面在 XY 平面上从 (0, 0) 延伸到 (size_x, size_y):

import less

scene = less.Scene()
scene.size = 50.0          # 50 m × 50 m
scene.size = (100, 50)     # 东西 100 m,南北 50 m

影像结果的第一行在北,第一列在西,与这一坐标系一致。

放置物体

物体位置 (x, y, z) 使用同一坐标系,z = 0 表示地面:

scene.size = 50.0
tree = less.Object("tree", mesh=less.asset_path("FREX.obj"))
scene.add(tree, positions=[[25.0, 25.0, 0.0],     # 场景中心
                           [45.0, 45.0, 0.0]])    # 东南角附近

在有起伏的地形上,可以只给出 (x, y),物体会自动放在该位置的地面高度上。

OBJ 模型

OBJ 文件按“Y 轴向上”读入:文件中的点 (x, y, z) 对应场景中的 (-x, -z, y)。三角形的正面按 OBJ 的通常约定确定:从正面看,三个顶点按逆时针排列。叶片的 reflectance 作用于正面,back_reflectance 作用于背面,不设置 back_reflectance 时两面相同。

天顶角

天顶角从正上方开始量:

天顶角 含义
0° 正上方(星下点)
30° 太阳高度角 60°
60° 太阳高度角 30°
90° 水平方向

方位角

方位角从正北开始,顺时针增加:

方位角 方向
0° 北(−Y)
90° 东(+X)
180° 南(+Y)
270° 西(−X)

太阳的方位角表示太阳所在的方向,观测方位角表示传感器所在的方向:

scene.illumination = less.Illumination(
    source=less.Sun(zenith=30, azimuth=135),        # 太阳在东南
    atmosphere=less.NoAtmosphere())
camera = less.Orthographic(view_zenith=30, view_azimuth=270)  # 从西侧斜视

由时间和地点计算太阳位置

from datetime import datetime, timedelta, timezone

beijing = timezone(timedelta(hours=8))
sun = less.compute_sun_position(
    latitude=39.9, longitude=116.4,
    date_time=datetime(2024, 6, 21, 10, 0, tzinfo=beijing),
)
print(f"天顶角 {sun.sun_zenith:.1f}°,方位角 {sun.sun_azimuth:.1f}°")

不带时区的时间按协调世界时(UTC)处理,因此本地时间请像上例一样写明时区。

单位

物理量 单位
位置、距离、高度 m
角度 度
波长 nm
反射率、透射率、发射率 无量纲,0–1
光谱辐照度 W m⁻² nm⁻¹
光谱辐亮度 W m⁻² sr⁻¹ nm⁻¹
物体温度 K
气温(Microclimate) °C
相对湿度 %
风速 m s⁻¹
叶面积密度 m² m⁻³
微波频率 Hz

下一步