laya2d 与 cad 之间的坐标转换
坐标系基本概念
直角坐标系可分为左手坐标系与右手坐标系,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 之间的坐标转换的更多相关文章
- ArcGIS Engine开发之旅10--空间参考及坐标转换
原文:ArcGIS Engine开发之旅10--空间参考及坐标转换 空间参考(Spatial Reference)是 GIS 数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确 ...
- GIS空间参考及坐标转换
空间参考(Spatial Reference)是 GIS 数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确的坐标. 在同一个地图上显示的地图数据的空间参考必须是一致的,如果两 ...
- Cesium坐标系及坐标转换详解
前言 Cesium项目中经常涉及到模型加载.浏览以及不同数据之间的坐标转换,弄明白Cesium中采用的坐标系以及各个坐标系之间的转换,是我们迈向三维GIS大门的前提,本文详细的介绍了Cesium中采用 ...
- UGUI在两个UI间坐标转换
在UGUI中,在两个Canvas之间进行坐标转换,从CanvasA下的坐标转换到CanvasB下. 或者在同一个界面下,从不同的节点下,转成相同的坐标. 函数定义 public static bool ...
- 换一个思路压缩图片,RGB转YUV
一般的压缩方案 做移动平台,终究都是要考虑纹理压缩的问题 IOS/PVR平台上一般会选用PVRTC格式,这个格式压缩还是很给力. Android上设备种类很多,支持的格式各有不同.如果平台能支持下载前 ...
- C#进行Visio二次开发之文件导出及另存Web页面
在我前面很多关于Visio的开发过程中,介绍了各种Visio的C#开发应用场景,包括对Visio的文档.模具文档.形状.属性数据.各种事件等相关的基础处理,以及Visio本身的整体项目应用,虽然时间过 ...
- 你真的了解UIView吗?
一:首先查看一下关于UIView的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIView : UIResponder <NSCoding, UIAppe ...
- Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解
Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放.这个柜架也包 ...
- 【转】 UIView如何管理它的子视图
原文:http://my.oschina.net/u/1984662/blog/293690 目录[-] Core Animation基础 改变视图的层 动画支持 视图坐标系统 边框.边界.和中心的关 ...
随机推荐
- 彻底搞清楚c#中的委托和事件
一.什么是委托呢? 听着名字挺抽象,确实不好理解.面试官最喜欢考察这个,而且更喜欢问:“委托和事件有何异同?”.如果对一些知识点没有想明白,那么很容易被绕进去.研究任何事物,我们不妨从它的定义开始,委 ...
- 请问 imgbtn上怎样添加文字呢
陈桂城(49868971) 2013/10/14 21:29:57 <imgbtn>文字</imgbtn>
- jdk安装错误1316,jdk-10.0.1
打开注册表regedit ,定个位到 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\ 把jdk,jre下面的目录删掉.即10.0.1 ,问题解决 参考: https ...
- 了解使用wireshark抓包工具
一.简介 1.什么是wireshark 百度: Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wires ...
- C#3.0新增功能09 LINQ 基础08 支持 LINQ 的 C# 功能
连载目录 [已更新最新开发文章,点击查看详细] 查询表达式 查询表达式使用类似于 SQL 或 XQuery 的声明性语法来查询 IEnumerable 集合. 在编译时,查询语法转换为对 LIN ...
- luogu题解 P5020 【货币系统 】
思路 判断钱数是否可以转化为其他钱数的和 与楼下不同,我没有用sort.而是用了一个数组来特判. 思路其实只是简单dp. 详见代码. #include<cstdio> using name ...
- Oracle JDK与OpenJDK到底有什么不同?
不知道各位developer平时是否有过疑问,Oracle JDK是什么,OpenJDK又是什么? Oracle JDK便是平常我们在windows系统上做开发使用的JDK,又称作SUN JDK.O ...
- 0 MapReduce实现Reduce Side Join操作
一.准备两张表以及对应的数据 (1)m_ys_lab_jointest_a(以下简称表A) 建表语句: create table if not exists m_ys_lab_jointest_a ( ...
- 脱壳系列_2_IAT加密壳_详细版_解法1_包含脚本
1 查看壳程序信息 使用ExeInfoPe 分析: 发现这个壳的类型没有被识别出来,Vc 6.0倒是识别出来了,Vc 6.0的特征是 入口函数先调用GetVersion() 2 用OD找OEP 拖进O ...
- 【Spring】org.springframework.web.context.ContextLoaderListen 报错
详细信息如下: org.apache.catalina.core.StandardContext.listenerStart Error configuring application listene ...