初学Direct X(7) --位图的旋转,缩放以及平移 本文旨在实现通过D3DXMatrixTransformation2D函数实现位图的旋转,缩放以及平移操作,但是具体的原理部分会在后面进一步的探讨. 1. 使用 下面是D3DXMatrixTransformation2D函数的定义: D3DXMATRIX* D3DXMatrixTransformation2D( _Inout_ D3DXMATRIX *pOut, _In_ const D3DXVECTOR2 *pScalingCenter,…
初学Direct X(5) 前面学习了使用表面绘制屏幕,但这种方法与另一种比较起来,有着绘图速度颇慢以及缺乏对任何透明类型的支持,这就是前面的篮框以及炸弹会有黑色背景的原因,这种方法就是纹理.他可以绘制出有透明效果的物体,即只显示对象本身的像素而没有背景. 1. 加载带有位图的纹理 应该要让纹理像表面一样有该有的功能,比如将位图加载于纹理上.要做到这个,首先得创建纹理对象,它是LPDIRECT3DTEXTURE9类型: LPDIRECT3DTEXTURE9 texture = NULL; 接着从…
初学Direct X(8) --碰撞检测 真正让一个游戏鹤立鸡群的是程序对碰撞的响应有多好,这里介绍两种检测的方法: 1) 基于边框的碰撞检测 2) 基于距离的碰撞检测 1. 基于边框的碰撞检测 1.1 实现的基础 我们将要检测的两个物体(位图)视为两个矩形,在此基础之上,检测两矩形是否有重叠区域.若存在重叠区域,则发生了碰撞:反之则没有.检测两矩形是否有重叠到了Windows API,即IntersectRect,它的定义如下: BOOL IntersectRect( _Out_ LPRECT…
初学Direct X(6) 这一文本应和上一篇放在一起的,但是上一章写着写着发现对Draw绘制透明位图的方式有感觉了,决定就单写一篇,留作笔记了. 那这一篇是记录如何使用位图表来绘制动画帧,想象一下,利用图1制作出来的图2 图1 图2 其实实现的方式不难,回忆一下在Draw函数中,有一个参数为pSrcRect,它可以在我们需要时取出在pTexture中指定的一部分,或者称之为图片单元,或者帧.根据可以取出指定部分的思路,只要计算出来下一帧的位图在pTexture中的坐标即可,帧数为framenu…
初学Direct X(4) 本文学着做出一个如下的小游戏 游戏方式是使用键盘控制红色的Bucket收集蓝色的炸弹 1.酝酿一下 现在我已经掌握: 将位图文件加载到内存 绘制位图到buckbuffer 获取外设输入 再来几个,获取表面的信息,例如宽和高 D3DSURFACE_DESC desc; source->GetDesc(&desc); 以及获取位图的信息,例如宽和高 D3DXIMAGE_INFO image_info; HRESULT result = D3DXGetImageInfo…
初学Direct X (2) 这一次要学习如何现实位图,尽管看过对双缓冲机制还有很多疑问,但是这并不阻碍我对他的入门了解 Direct3D提供了一个双重/后台缓冲区,在调用CreateDevice之时就有了.其运行机制就是,我们需要在其中一个缓冲区上绘制完所需要显示的一切,之后将这个缓冲区快速的复制到另一个缓冲区,因为后者的缓冲区被称为Front Buffer,显示器在刷新之时会直接从中取出数据以显示,而前者就称之为backbuffer 但是,还有一种buffer,是可供我们在内存中进行操作的,…
位图的旋转也可以借助Matrix或者Canvas来实现. 通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最后用drawBitmap方法绘制到屏幕上,于是就实现了旋转操作. 下面例子中把原位图和经旋转处理的位图都绘制到屏幕上,目的是做一个对比. package xiaosi.bitmap; import android.app.Activity; import android.os.Bundle; public class mi…
位图的旋转也可以借助Matrix或者Canvas来实现. 通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最后用drawBitmap方法绘制到屏幕上,于是就实现了旋转操作. 下面例子中把原位图和经旋转处理的位图都绘制到屏幕上,目的是做一个对比. package xiaosi.bitmap; import android.app.Activity; import android.os.Bundle; public class mi…
osg矩阵变换节点-----平移旋转缩放 转自:http://www.cnblogs.com/ylwn817/articles/1973396.html 平移旋转缩放这个三个是osg矩阵操作中,最常见的操作,下面给出示例以及说明 首先先了解下osg空间方向: osg方向如左图所示,x轴表示屏幕水平方向,y轴表示和屏幕垂直方向即屏幕里面方向,z轴表示屏幕垂直方向,每个箭头指向表示正方向 下面来学习矩阵变换操作 首先平移: #include<osgDB/ReadFile> #include<…
osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html#undefined MatrixTransform是从Transform - Group继承而来,因此可以在它的下面挂接Node对象. 通过设置其矩阵,来实现其下子节点的模型变换. -- 用局部坐标系来理解(局部坐标系又称惯性坐标系,其与模型的相对位置在变换的过程中始终不变) 如下代码: // 创建…
本项目实现了用OpenGL绘制一个简单场景,包括正方体.球体和网格,实现了物体的旋转.缩放.平移和灯光效果.附有项目完整代码.有具体凝视.适合刚開始学习的人熟悉opengl使用. 开发情况 开发环境VS2012+OpenGL 开发平台 Intel core i5,Intel HD Graphics Family 本项目实现了绘制一个场景(包含立方体.球体.网格),对各物体实现平移.旋转.缩放功能,加入了光源并简单设置了物体材质. 本项目演示样例代码下载(里面有具体凝视) 感谢nehe的框架! 场…
编译环境:VS2017 编译框架:MFC 实验内容:显示一个三角形,并将其绕中心进行旋转.缩放以及平移等操作 实验步骤: 1.打开VS2017,并创建MFC项目,具体方法参见:http://www.cnblogs.com/junjunjun123/p/8811150.html 2.在新建的执行程序中加入如下代码 void CMFCApplication10View::Ontransfor() { // TODO: 在此添加命令处理程序代码 CDC *pDC = GetDC(); ; //顺时针旋…
初学Direct X(10) -- D3D基础预备知识 1. 像素格式 D3DFMT_X8R8G8B8(F) X:未加使用 8:8位用于显示 B:用于显示蓝色 F:浮点像素类型 以下三个较为常用,使用其他之前务必验证显卡是否支持 D3DFMT_R8G8B8 D3DFMT_X8R8G8B8 D3DFMT_A8R8G8B8 2. 内存池 定义资源缓存的存储位置 可默认宏为:D3DPOOL_DEFAULT 3. 深度缓存 是只含有特定像素的深度信息而不含图像数据的表面,可用于判断物体的前后显示 D3D…
初学Direct X(9) --文字的显示 本次学习如何使用ID3DXFont创建字体,使得我们可以在任何安装了Windows系统中TrueType字体来打印文字,不过最好使用标准字体,这样文字在每一台PC上的显示才会和计划中的一样. 1. 显示前的准备 就像创建LPDIRECT3DDEVICE9一样,我们需要先声明一个接口: LPD3DXFONT font = NULL; 接着设置创建字体所需要的参数: typedef struct _D3DXFONT_DESCA { INT Height;…
初学Direct X(3) 1.获取外设输入--键盘以及鼠标 无论是获取鼠标还是键盘的设备,首先得初始化DirectInput,不过先把必要的环境先配置好: 所要用到的头文件以及库文件是(相比于前两次): #include <dinput.h> #pragma comment(lib,"dinput8.lib") #pragma comment(lib,"dxguid.lib") 以及要用到的DirectInput对象以及设备(包括键盘和鼠标)对象: L…
Blender跟Unity的XYZ轴不同的原因,导致Blender模型导入Unity之后会发生模型朝向不对. 请先看看下边这个情况: 首先,Blender物体模式下,对模型进行 旋转 缩放,将会在右边的窗口中有对应的数值: 而这些数值,导入Unity之后,直接把模型放入游戏场景里,是会附带的,而且还跟blender里面的数值对不上,显得乱七八糟: 模型导进Unity时,我们期待的是: ①模型旋转全为0.缩放全为1 ②模型正脸朝向Z+,右手朝向X+,头顶朝向Y+   下面是Blender模型师在导…
创建场景中的三维模型往往需要设置显示大小.位置.角度,three.js提供了一系列网格模型对象的几何变换方法,从WebGL的角度看,旋转.缩放.平移对应的都是模型变换矩阵,关于矩阵变换内容可以观看本人博客发布的原生WebGL课程. 网格模型对象的旋转.缩放.平移等方法或属性可以查找three.js文档的Object3D对象,该对象是网格模型对象.点模型对象.线条模型对象的基类. 缩放 立方体网格模型x轴方向放大2倍,如果连续执行两次该语句,相等于比原来方法4倍 mesh.scale.x = 2.…
前言: 公司一个售前问我能不能用H5做一个手机拍照,给相片添加相框和添加文字上传到服务器的功能,我当时一琢磨觉得可行,就利用空余时间做了一个demo,去掉了拍照和上传,如果以后有机会,会给补上,当然对于开发过webApp的朋友来做到这个很简单.下面来看代码 1,思路 首先我们需要准备素材,一个相框和一个相片,然后我们要思考,只是把他们和并且就可以了吗?答案是否定的,我还需要对照片进行编辑,比如平移和缩放等.还要可以切换相框. 2,如何合并相框和图片? 上面是我的界面,从界面可以看出,我有三张图片…
****动画效果 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [UIView animateWithDuration: animations:^{ // 旋转 // _imageView.layer.transform = CATransform3DMakeRotation(M_PI, 1, 1, 0); // 平移 // _imageView.layer.transform = CATransform3D…
MainActivity如下: import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageView; import android.app.Activity; import android.graphics.Matrix; /** * Demo描述:…
常常需要最图像进行仿射变换,仿射变换后,我们可能需要将原来图像中的特征点坐标进行重新计算,获得原来图像中例如眼睛瞳孔坐标的新的位置,用于在新得到图像中继续利用瞳孔位置坐标. 仿射变换在:http://blog.csdn.net/xiaowei_cqu/article/details/7616044 这位大牛的博客中已经介绍的非常清楚. 关于仿射变换的详细介绍,请见上面链接的博客. 我这里主要介绍如何在已经知道原图像中若干特征点的坐标之后,计算这些特征点进行放射变换之后的坐标,然后做一些补充. *…
1.实现相机跟随主角运动 一种简单的方法是把Camera直接拖到Player下面作为Player的子物体,另一种方法是取得Camera与Player的偏移向量,并据此设置Camera位置,便能实现简单的相机跟随了. 这里我们选取第二种方法,首先给Camera添加一个脚本,取名为FollowPlayer,脚本很简单不做说明了 public class FollowPlayer : MonoBehaviour { private Transform player; private Vector3 o…
基本功能实现:物体通过鼠标左键上下移动,中间键缩放.右键旋转,30秒没操作,物体自动旋转 实例代码: using UnityEngine; using System.Collections; public class Script_07_11 : MonoBehaviour { public Transform target; private int MouseWheelSensitivity = 50; private int MouseZoomMin = 20; private int Mo…
//旋转 byte[] photoBytes = File.ReadAllBytes(HttpContext.Current.Server.MapPath(diyInfo.ImageUrl)); ImageFactory imageFactory = new ImageFactory(); imageFactory.Load(photoBytes); imageFactory.Rotate(diyInfo.RotationAngle); var ss = imageFactory.Image;…
首先在页面中创建一个canvas标签: <body> <canvas id="c1" width="500" height="500"></canvas> </body> js部分: 注意save()和restore()的运用,在num累加的情况下,保存路径和恢复路径可以让方块匀速运动: 定义变量num和value来设置临界点的方法. <script> window.onload = f…
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1d9421 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; min-height: 21.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p4 { margin:…
1.transform浏览器支持情况 也就是说目前不考虑老浏览器的话是不用加前缀的,感谢菜鸟教程:https://www.runoob.com/cssref/css3-pr-transform.html transform默认值none;就是不转换,不继承,js中对其更改示例:object.style.transform="rotate(7deg)" 2.transform能干啥? transform属性让元素进行2D或3D转换.可以将元素:旋转,缩放,移动,倾斜等. 3.transf…
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-…
一.需求 实现imageView的缩放旋转效果,一般有两种方式: 1.底层加scrollview,利用scrollview的属性实现.(推荐这种,这是我比较后发现的,手势做缩放旋转会有点弊端) 2.利用手势,捏合手势.旋转手势等. 这里我测试的第二种:手势实现,记录一下. 二.问题描述 一般手势处理后,对imageView进行transform处理,但我发现,每次获取手势再处理时,都会覆盖上一次的transform,从而达不到连续手势处理的效果. 比如: 我先放大一倍,再用手势放大,会发现图片会…
写在前面 建议先阅读下前面我的两篇文章. webgl学习笔记一-绘图单点 webgl学习笔记二-绘图多点 平移 1.关键点说明 顶点着色器需要加上 uniform vec4 u_Translation, 存储平移的坐标矢量. 顶点坐标位置 : gl_Position = a_Position + u_Translation 平移API : gl.uniform4f(u_Translation, Tx, Ty, Tz, 0.0); 2.demo html <!DOCTYPE html> <…