TransformPoint的意义和使用场景

意义:将距离本物体一定距离(或子物体很少用到此处,因子物体可以直接用transform.position得到其世界坐标的,此函数用到其它任意点才有意义)的任意点的相对坐标转换为世界坐标

Vector3 WorldPosition = gameObject.transform.TransformPoint(xdistance, ydistance, zdistance);

得到的WorldPosition为相对于本物体(父物体)在三个方向上距离分别为(xdistance, ydistance, zdistance)的点(localPosition为(xdistance, ydistance, zdistance)的子物体)的世界坐标。它考虑了父物体的旋转和缩放,不管父物体有没有旋转和缩放尽管放心用,一句话就可以得到正确的世界坐标。

 代码挂载父物体cube上:

Vector3 WorldPosition = gameObject.transform.TransformPoint(1, 1, 2);
        Debug.Log($"世界坐标是{WorldPosition}");

测试实例1无旋转无缩放,坐标如下:

 

测试实例2父物体cube仅有旋转时

 测试实例3父物体cube仅有缩放时

 

 测试实例4父物体cube有旋转和缩放时

 

 由上可知所有情况都可直接用TransformPoint得到相对于本物体一定距离的任意点的世界坐标

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Maven项目中使用GDAL,你需要添加以下依赖项到你的`pom.xml`文件中: ```xml <dependency> <groupId>org.gdal</groupId> <artifactId>gdal</artifactId> <version>3.0.1</version> </dependency> ``` 这将添加GDAL的Java绑定到你的项目中。请确保将`version`属性设置为你想要使用的GDAL版本。 下面是一个简单的示例代码,演示如何使用GDAL进行坐标转换: ```java import org.gdal.gdal.Dataset; import org.gdal.gdal.gdal; import org.gdal.osr.CoordinateTransformation; import org.gdal.osr.SpatialReference; public class GDALExample { public static void main(String[] args) { // 初始化GDAL gdal.AllRegister(); // 打开输入数据集 Dataset inputDataset = gdal.Open("input.tif"); // 获取输入数据集的空间参考 SpatialReference inputSRS = new SpatialReference(inputDataset.GetProjection()); // 定义输出的EPSG:4479空间参考 SpatialReference outputSRS = new SpatialReference(); outputSRS.ImportFromEPSG(4479); // 创建坐标转换对象 CoordinateTransformation transform = new CoordinateTransformation(inputSRS, outputSRS); // 定义待转换的坐标 double[] srcCoord = new double[]{1234567.0, 9876543.0}; double[] targetCoord = new double[2]; // 进行坐标转换 transform.TransformPoint(targetCoord, srcCoord); // 输出转换后的坐标 System.out.println("Transformed coordinates: " + targetCoord[0] + ", " + targetCoord[1]); // 关闭数据集 inputDataset.delete(); } } ``` 在上述示例代码中,我们首先调用`gdal.AllRegister()`来初始化GDAL。然后,我们打开输入数据集(例如一个GeoTIFF文件),并获取其空间参考信息。接下来,我们创建一个输出的EPSG:4479空间参考,并使用`SpatialReference.ImportFromEPSG()`方法导入EPSG代码。然后,我们创建一个`CoordinateTransformation`对象,将输入和输出的空间参考传递给它。最后,我们定义待转换的坐标,并使用`CoordinateTransformation.TransformPoint()`方法进行坐标转换。 请确保将示例中的`input.tif`替换为你自己的输入文件路径,并根据需要调整EPSG代码和坐标转换的参数。 希望这可以帮助到你。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值