CityEngine -- Coordinate

本文深入探讨了CityEngine中的四种坐标系:世界坐标系、对象坐标系、Pivot坐标系和范围坐标系,详细解释了每种坐标系的定义、应用及相互之间的关系。

1、概述
在cityengine中有多个坐标系,很是懵逼,一个Shape会涉及到多个不同的坐标系:世界坐标系(world coordinate)、局部坐标系(local coordinate)、对象坐标系(object coordinate)以及Pivot 坐标系(Pivot coordinate)

2、世界坐标系(world coordinate)
在cityengine中新建场景中,则可以选择坐标系,如下图所示:
在这里插入图片描述
如果新建场景时没有选择系统内自带的投影坐标系或者地理坐标系,则会默认为Cityengine界面坐标系为世界坐标系;
场景中所建的形状(shape)均是在世界坐标系下定义的。
在这里插入图片描述
图中的红色为X轴,蓝色为Z轴,绿色为Y轴,在cityengine中Y轴是向上的;

3、对象坐标系(Object coordinate)
在创建几何实体的时候,每一个形状(shape)都会产生一个=局部本地坐标系(Local coordinate),这个本地坐标系的原点位于最初的形状的第一条边的第一个结点上,X轴沿着第一条边,Y轴沿着第一个面的法线,Z轴与X轴、Y轴相互垂直,对象坐标系(Local/Object Coordinate)的原点位置和轴的方向可以被查询;

(此处留下疑惑:
   如何知道形状哪个是第一条边和第一个结点,
   单独在Inspector 的 vertices属性中查看很难分辨,
   应该如何确定呢?希望懂得人可以留言交流;
   几何实体的对象坐标系怎么在Cityengine软件中查询呢) 

在这里插入图片描述

4、Pivot 坐标系(Pivot coordinate)

Privot坐标系是指每个几何实体的每个组件的坐标系,是表示该几何实体各个部分的空间位置,与该几何实体的对象坐标系相关,几何实体在Split(direction)操作后是不断调整的,坐标系的原点位于该形状或者组件(平面)的第一条边的第一个结点处,X轴沿着第一条边,Y轴第一个面的法线垂直于X轴于原点处,Z轴是于X轴和Y轴都垂直的。

在这里插入图片描述
图中的几何实体是在 Split(y){{~3:X}*} 之后的实体,原始几何实体被分割后,其原始的平面也会沿着Y轴方向被分割,分割出来的每个单独的面可以认为是新的组件部分(平面),都有自己独有的Pivot 坐标系(pivot coordinate)

5、范围坐标系(Scope coordinate)
每个形状和实体都有一个范围坐标系(也就是包围盒),范围也有一定的尺寸
在这里插入图片描述

从 `rpgetvar: wall-djm-wailiuchang/z-coordinate: undefined variable` 这个错误信息来看,这通常意味着在尝试获取变量 `wall-djm-wailiuchang/z-coordinate` 的值时,该变量未被定义。以下是可能的解决方法: ### 检查变量是否正确定义 要保证在使用 `rpgetvar` 命令之前,`wall-djm-wailiuchang/z-coordinate` 变量已经被正确定义。不同的编程语言或者环境定义变量的方式有所不同。 比如在 Python 中: ```python # 定义变量 wall_djm_wailiuchang = {"z-coordinate": 10} # 访问变量 z_coordinate = wall_djm_wailiuchang["z-coordinate"] print(z_coordinate) ``` ### 检查作用域 要确保变量的作用域涵盖了 `rpgetvar` 命令所在的位置。变量可能在局部作用域中被定义,而在使用时超出了该作用域。 ```python def some_function(): # 局部变量 local_variable = 42 return local_variable # 调用函数获取变量值 result = some_function() print(result) # 此处无法直接访问 local_variable,因为它是局部变量 # print(local_variable) # 这会导致错误 ``` ### 检查拼写错误 要仔细检查变量名的拼写是否正确。即使一个字母的拼写错误,也会导致变量未定义的错误。 ### 初始化变量 若变量应该在程序开始时就有一个初始值,要确保它已经被正确初始化。 ```python # 初始化变量 wall_djm_wailiuchang = {} wall_djm_wailiuchang["z-coordinate"] = 0 # 现在可以安全地访问变量 z_coordinate = wall_djm_wailiuchang["z-coordinate"] print(z_coordinate) ``` ### 调试输出 在代码中添加调试输出,以确认变量是否被正确定义和赋值。 ```python wall_djm_wailiuchang = {} # 尝试赋值 wall_djm_wailiuchang["z-coordinate"] = 20 # 调试输出 print("wall_djm_wailiuchang:", wall_djm_wailiuchang) # 访问变量 z_coordinate = wall_djm_wailiuchang["z-coordinate"] print(z_coordinate) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值