Articles of 转换

剪切/reflection/放大如何用4x4matrix表示?

我明白,4×4matrix可以表示一个3d点(表示为x,y,z,w) 例如,翻译是 [1 0 0 0] [0 1 0 0] [0 0 1 0] [xyz 1] 其中x,y和z是沿每个轴移动点的量。 我知道如何表示平移,缩放和旋转,但其他变换如剪切(具有任何不变平面和剪切因子),reflection(在任何平面中)和扩大(以任何中心和任何比例因子)表示? 最终目标是让c ++函数创建一个转换matrix。 例如: Matrix4x4.generateReflection(Vector3d planeNormal); Matrix4x4.generateEnlargment(float centerX, float centerY, float centerZ, float scaleFactor); 这些将返回一个Matrix4x4类的实例,其中设置的元素使得它乘以一个点返回剪切/reflection/放大的点。

如何在Android上使用matrix转换Point2f?

我正在开发的Android和我使用android.renderscript.Matrix3f类来做一些计算。 现在我需要做的就是做一些像mat.tranform(pointIn, pointOut); 所以我需要通过给定的Point类来转换matrix。 在awt我只需要这样做: AffineTransform t = new AffineTransform(); Point2D.Float p = new Point2D.Float(); t.transform( p, p ); 但在Android我现在有这样的: Matrix3f t = new Matrix3f(); PointF p = new PointF(); // Now I need to tranform it somehow.. 但Android中的Matrix3f类没有Matrix.transform(Point2D ptSrc, Point2D ptDst)方法。 所以我想我必须手动进行转换。 但我不确定这是如何工作的。 从我看到的东西像translate ,然后rotate ? 任何人都可以请告诉我如何在代码中做到这一点?

立方体通过对象

我有Unity Pro 4.6.1,我试图用方向键移动一个立方体。 以下是我移动魔方之前的障碍: 这是当我移动立方体(问题): 我不希望立方体穿过块,就在里面。 这是我的移动代码: #pragma strict static var selectedId : int; static var speed : int = 5; function Update () { if (Input.GetKey (KeyCode.UpArrow)) transform.Translate (Vector3(0,0,1) * Time.deltaTime*speed); if (Input.GetKey (KeyCode.DownArrow)) transform.Translate (Vector3(0,0,-1) * Time.deltaTime*speed); if (Input.GetKey (KeyCode.LeftArrow)) transform.Translate (Vector3(-1,0,0) * Time.deltaTime*speed); if (Input.GetKey (KeyCode.RightArrow)) transform.Translate (Vector3(1,0,0) * Time.deltaTime*speed); } 我该如何解决? […]

2Dmatrix转换形状的问题

我已经把自己的任务放在创建一个类BaseObject的任务上,该类代表一个带有关联形状的graphics对象作为成员variablesshape,它是一个指向对象Polygon的指针。 我将在这里提供他们的声明,以及我确信导致我的问题的function的相关实现。 我的问题? 就像二维matrix变换一样简单,它们似乎以我不喜欢的方式扭曲了我的形状。 我正在使用SDL2graphics库来解决这个问题。 这是BaseObject类的声明。 class BaseObject : public Entity { protected: Polygon shape; // Pointer to a shape static uint baseObjectCount; // Useless variable? Vector2 posVec; //Position vector public: // Positioning and geometry Vector2 positionRelativeTo(const BaseObject &other) const; double distanceTo(const BaseObject &other) const; // Get, set, ready!!!! Vector2 getPos() const; void setPos(Vector2 newPosVector); […]

点击button时,平稳地改变相机的旋转和位置

在Unity中单击button时,如何顺利更改相机的旋转和位置? 我不想使用更新函数来实现这一点,我没有它应该看的一个游戏对象或变换,而是我想手动调整一切。 我想看看使用C#的方法。

使用加速度计数据进行转换运动

可以通过使用加速度计数据或加速度陀螺仪进行变换运动吗? 正如我们所知,我们可以使用Accel或Gyro数据进行旋转。 但是,我们怎样才能做转型运动呢? 我知道这仍然是有问题的和实验性的。 但必须有一些方法来达成。 有没有解决这个问题的algorithm或math公式?

在本地坐标与世界坐标OpenGL转换相机的例子

我正在学习OpenGL,并正在做一些初学者的学习练习。 其中一个练习是翻译,然后沿着自己的本地坐标旋转摄像机,而不是世界坐标系。 我在如何做一个对另一个。 我知道如何使用glTranslatef()和glRotatef()函数来执行翻译和旋转。 通过研究,我也意识到使用4×4变换matrix乘以我们的vector来创建所需的变换,虽然我还没有搞混它,所以我不太熟悉变换matrix。 这就是说,我仍然有关于本地与世界坐标的问题。 我知道我们可以通过这些函数或变换matrix来实现翻译和旋转,但是我关心的是理解我们如何做到这一点。 我还没有发现任何关于世界坐标变换摄像机(或模型,但我更关心这个例子中的摄像机)的明确的代码/例子,并且同样地相对于其局部坐标。 我觉得现在我需要一些比较明确的东西,因为现在我已经感到困惑了好几天了。 此外,可能有一些我感到困惑的概念性的东西。 这是为了我的理解:如果我们用局部坐标系严格地移动物体和摄像机(这对我的理解起到世界上任何其他物体的作用),这是否意味着所有的局部坐标系统共享它们原点的相同位置彼此和世界坐标系的起源? 那么,另一方面,如果我们严格地将物体/摄像机相对于世界坐标系移动,那么所有的物体将总是在它们自己的本地坐标系的原点上,对吗? 假设没有物体位于同一个点上,那么没有局部坐标系的原点会被放置在同一个点上,对吗?

如何在cocos2dx中用父节点来旋转子节点?

考虑下面的代码… cocos2d::Node* parent = cocos2d::Node::create(); cocos2d::Node* child = cocos2d::Node::create(); parent->addChild(child); parent->rotate(-90.0f); // But its not affecting the child position 当我通过角度旋转父节点时,它不会影响子节点的位置。 我怎样才能正确的? 请帮忙。 谢谢。

SlimDX Direct3D10雪碧延伸窗口大小

我想用SlimDX Direct3D10绘制一个精灵位图,但是我坚持这个问题,我可以在屏幕上看到我的图像,但是根据窗口的大小,它会被拉伸。 这个问题看起来像这样: 我在Direct3D9和Direct2D中得到了相同的绘制精灵的一般想法,因为我只是调整RenderTarget的大小或者用新的BackBuffer重新初始化Device 。 我该如何解决这个问题,使精灵保持独立于窗口大小的相同尺寸? 我看到两个潜在的问题: 我不知道是否和如何设置不同的变换来调整窗口大小(我宁愿调整后台缓冲区大小,只转换用于定位和缩放的精灵) 我想我需要更新backbuffer或者在窗体的resize事件中做一些事情。 这是我的渲染代码: using DiscSim; using SlimDX; using SlimDX.Direct3D10; using SlimDX.DXGI; using System.Windows.Forms; using System.Drawing; using Device = SlimDX.Direct3D10.Device; using Vector2 = SlimDX.Vector2; using Resource = SlimDX.Direct3D10.Resource; namespace DiscSimSlimDX { class Camera_DX10 : Camera { private RenderTargetView renderTarget; private Device device; private SwapChain swapChain; private Sprite sprite; private […]

3D Player x位置问题

我做了Runnig 3D游戏,我做了左右移动,当我向左或向右移动时,我有位置X和旋转Y的问题,每改变一帧,有人可以帮助我这个方向。 private const float LANE_DISTANCE = 2.5f; private const float TURN_SPEED = 0.01f; // private bool isRunnig = false; // Animation private Animator anim; //Movement private CharacterController controller; private float jumpForce = 6f; private float gravity = 10.0f; private float verticalVelocity; private int desiredLane = 1; // 0 = Left, 1 = Middle, 2 […]