随笔分类 - iOS
摘要:上一篇讲到如何使用OpenGL ES绘制一个3D场景,这一篇我们会配合使用iOS提供的CoreMotion框架把虚拟世界中的摄像机的位置朝向和设备实际的位置朝向绑定起来。本文还对防抖做了处理。 首先说明几个容易混淆的问题: 1. OpenGL ES的摄像机,位置固定在世界坐标系原点,Up方向和世界坐标系y轴重合,Right方向和世界坐标系x轴重合,Look方向和世界坐标系负z轴重合 2. 为了抽象一个可以缩放,旋转,移动的摄像机,我们可以在OpenGL ES的的矩阵操作中通过左乘这个摄像机的变换矩阵的逆矩阵来实现 3. CoreMotion框架中,可以从API中获取...
阅读全文
摘要:1.jenkins可以单独作为web应用部署和启动,但建议将其部署在tomcat上,可以方便的管理其他一些web应用,下面讲解如何在Mac设备上安装tomcat到tomcat官网下载适用于Mac设备的tomcat压缩包下载后解压缩并重命名为tomcat,拷贝到/Library目录下在/Library/tomcat/bin下执行startup.sh即可启动tomcat在浏览器中输入localhost:8080,如果能看到tomcat首页,安装就成功了2. 部署jenkins到tomcat到jenkins官网下载jenkins的war包将war包拷贝到/Library/tomcat/webapps
阅读全文
摘要:本文采用OpenGL ES 1固定渲染管线实现,目标为在设备拍摄到的现实世界中,绘制世界坐标轴,并根据设备所在位置和朝向,绘制周围一定范围内的指定目标(比如餐厅,咖啡馆等)。首先说明几个OpenGL的容易混淆的基础知识OpenGL采用右手坐标系(伸出你的右手,拇指和食指垂直,中指分别和拇指,食指垂直,此时拇指代表x坐标轴,食指代表y坐标轴,中指代表z坐标轴,这就是右手坐标系)OpenGL采用列向量,所以矩阵与向量运算为矩阵左乘OpenGL的glMutMatrixf等操作为右乘OpenGL采用列主序存储矩阵下面为在iOS平台初始化绘制环境的代码EAGLContext *context = [[E
阅读全文
摘要:1. 什么是线程可并发执行的,拥有最小系统资源,共享进程资源的基本调度单位。共用堆,自有栈(官方资料说明iOS主线程栈大小为1M,其它线程为512K)。并发执行进度不可控,对非原子操作易造成状态不一致,加锁控制又有死锁的风险。2. iOS中的线程iOS主线程(UI线程),我们的大部分业务逻辑代码运行于主线程中。没有特殊需求,不应引入线程增加程序复杂度。应用场景:逻辑执行时间过长,严重影响交互体验(界面卡死)等。iOS中的线程NSOperation和NSOperationQueueNSThreadNSCondition(线程锁)performSelectorOnMainThread(线程通信)G
阅读全文
摘要:首先要引入ALAssetsLibrary库。其次要用户授予定位服务权限。保存附加信息到相册到代码如下: 1 NSData *imageData = UIImageJPEGRepresentation(image, 0.5); 2 3 CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude.doubleValue longitude:longitude.doubleValue]; 4 NSDictionary *locationDictionary = [Utili...
阅读全文
摘要:首先需要引入ALAssetsLibrary库。首先需要用户授予定位服务权限。读取图片附加信息的代码如下: 1 NSURL *assetURL = [info objectForKey:UIImagePickerControllerReferenceURL]; 2 3 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 4 [library assetForURL:assetURL resultBlock:^(ALAsset *asset) { 5 NSDictionary *metadata ...
阅读全文