坐标系基本概念

直角坐标系可分为左手坐标系与右手坐标系,cad 中用到的是右手坐标系, Laya2D 中用到的是左手坐标系, Laya3D 中使用右手坐标系。

那么如何判断二维直角坐标系是左手还是右手呢?

以原点 O 为支点, 将 x 轴逆时针旋转 90° 后, 若其与 y 轴同向则为右手坐标系,若与 y 轴反向,则为左手坐标系。

在 Laya 中显示 cad 坐标对象

基本原则:不改变数据坐标,改变Laya 容器坐标。

  • 保持根容器不变,变换子容器坐标原点位置
  • 缩放子容器坐标比例
// 例如,我们 Laya 容器坐标系位置变换为屏幕左下角开始的右手坐标系
let drawingSp = new Laya.Sprite();
// 原点从左上角,改为左下角
drawingSp.pos(0, Laya.Browser.Height);
// x 轴保持不变, y 轴反向
drawingSp.scale(1, -1);
// 将 drawingSp 加入根容器
Laya.stage.addChild(rootSp);

通过上面的变换处理,将 drawingSp 中的坐标系改为原点为平面左下方的右手坐标系。其中很重要的一点是:

在未对子容器的坐标系进行变化处理时,子容器的坐标系默认与容器重合。容器的缩放以容器的坐标原点为中心完成。 这也是我们多容器操作的基础。

同理,我们也可以通过对容器的坐标平移、缩放等变换处理, 在当前屏幕中,显示传入的全部数据, 代码如下:

let drawingSp = new Laya.sprite();  // 不对 drawing 坐标系处理,对子容器 viewSp 处理
let viewSp = new Laya.sprite();
// sp 坐标移动到左下角,并给一定的偏移
viewSp.pos(xoffset, Laya.Browser.Height - yoffset);
// 将容器整体缩放,以展示全部输入数据
let ratio = screenWidth / inputDataWidth;
viewSp.scale(ratio, ratio); // 等比例缩放,将容器放大或缩小以适应展示数据

通过以上转换,我们就可以将数据在当前屏幕上显示。

laya2d 与 cad 之间的坐标转换的更多相关文章

  1. ArcGIS Engine开发之旅10--空间参考及坐标转换

    原文:ArcGIS Engine开发之旅10--空间参考及坐标转换 空间参考(Spatial Reference)是 GIS 数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确 ...

  2. GIS空间参考及坐标转换

    空间参考(Spatial Reference)是 GIS 数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确的坐标. 在同一个地图上显示的地图数据的空间参考必须是一致的,如果两 ...

  3. Cesium坐标系及坐标转换详解

    前言 Cesium项目中经常涉及到模型加载.浏览以及不同数据之间的坐标转换,弄明白Cesium中采用的坐标系以及各个坐标系之间的转换,是我们迈向三维GIS大门的前提,本文详细的介绍了Cesium中采用 ...

  4. UGUI在两个UI间坐标转换

    在UGUI中,在两个Canvas之间进行坐标转换,从CanvasA下的坐标转换到CanvasB下. 或者在同一个界面下,从不同的节点下,转成相同的坐标. 函数定义 public static bool ...

  5. 换一个思路压缩图片,RGB转YUV

    一般的压缩方案 做移动平台,终究都是要考虑纹理压缩的问题 IOS/PVR平台上一般会选用PVRTC格式,这个格式压缩还是很给力. Android上设备种类很多,支持的格式各有不同.如果平台能支持下载前 ...

  6. C#进行Visio二次开发之文件导出及另存Web页面

    在我前面很多关于Visio的开发过程中,介绍了各种Visio的C#开发应用场景,包括对Visio的文档.模具文档.形状.属性数据.各种事件等相关的基础处理,以及Visio本身的整体项目应用,虽然时间过 ...

  7. 你真的了解UIView吗?

    一:首先查看一下关于UIView的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIView : UIResponder <NSCoding, UIAppe ...

  8. Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解

    Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放.这个柜架也包 ...

  9. 【转】 UIView如何管理它的子视图

    原文:http://my.oschina.net/u/1984662/blog/293690 目录[-] Core Animation基础 改变视图的层 动画支持 视图坐标系统 边框.边界.和中心的关 ...

随机推荐

  1. 聊聊Java String.intern 背后你不知道的知识

    Java的 String类有个有意思的public方法: public String intern() 返回标准表示的字符串对象.String类维护私有字符串池. 调用此方法时,如果字符串池已经包含等 ...

  2. Java 客户端负载均衡

    客户端侧负载均衡 在下图中,负载均衡能力算法是由内容中心提供,内容中心相对于用户中心来说,是用户中心的客户端,所以又被称为客户端侧负载均衡 自定义实现Client Random负载均衡 获取所有的服务 ...

  3. Jmeter--录制脚本-用户参数化-添加断言

    使用jmeter实现的场景 1.使用badboy录制脚本 2.使用jmeter自带元件进行用户参数化 3.给请求添加断言(给请求添加检查点) 使用badboy录制脚本导入jmeter 1.输入http ...

  4. NOIP2018提高/普及成绩

    明天就要出了,不忍看到自己爆零,现在很慌. 大家都考的如何呢?欢迎留言自己的分数或预估分数.

  5. 用tcp协议实现一个并发的socketserver 进行密文登录

    先在客户端进行摘要,客户端把用户名作为盐. 然后在服务端进行二次摘要,用固定的盐(不能让别人知道你的盐是什么),然后存到文件中,密文存储.或者和文件中的密文对比. 这样即使在网络上用户信息被截获,和存 ...

  6. 《C#从入门到精通(第3版)》目录

    C#从入门到精通(第3版)pdf+源码 一.基础知识 1.初识C#及其开发环境 2.开始C#之旅 3.变量与常量 4.表达式与运算符 5.字符与字符串 6.流程控制语句 7.数组与集合 8.属性和方法 ...

  7. ssm框架下的文件上传和文件下载

    最近在做一个ssm的项目,遇到了添加附件和下载的功能,在网上查了很多资料,发现很多都不好用,经过摸索,发现了一套简便的方法,和大家分享一下. 1.在自己已经构建好的maven  web项目中 pom. ...

  8. JS中构造函数和普通函数有什么区别

    JS中构造函数有普通函数有什么区别? 1.一般规则 构造函数都应该以 一个大写字母开头,eg: function Person(){...} 而非构造函数则应该以一个小写字母开头,eg: functi ...

  9. SpringBoot Kafka 整合使用

    前提 假设你了解过 SpringBoot 和 Kafka. 1.SpringBoot 如果对 SpringBoot 不了解的话,建议去看看 DD 大佬 和 纯洁的微笑 的系列博客. 2.Kafka K ...

  10. 【Java】点击 JButton 修改 Jlabel 的文字和字体颜色

    要求: 点击 JButton 后执行一个方法 m(比较耗时),点击时改变 JLabel 的字体和颜色,方法 m 运行结束后再次修改 JLabel 的字体和颜色. 刚开始点击,都是方法 m 运行结束后, ...