Articles of vector艺术

vector问题的解释

我正在模拟一个蜈蚣游戏,我正在做蛇的运动。 我已经看到了这段代码,但不能得到它,我知道它获得了当前,以前的节点位置之间的不同,但是与法向vector相乘的点是多less呢? for ( int i = 1 ; i < nodes.size(); i++ ) { Vec2f diff = nodes[i-1].m_Pos-nodes[i].m_Pos; float length = diff.length(); Vec2f norm = diff.normalized(); nodes[i].m_Pos+=(length – 5)*norm; }

基本的汽车运动,将2Dvector转换成3D问题

我试图按照这个家伙的方法转向一辆基本的汽车。 链接 。 这是第一个我可以把我的头,我试图将其转换为一个工作的3D版本的例子。 为了得到一些范围,我在OpenGL中渲染了一个代表一辆汽车的立方体,并且我正在使用GLM进行matrix操纵。 即使我正在试图获得一个3D例子工作,我只使用2D控件; 左/右的X轴和前/后的Z轴。 为了清楚起见,我已经将所有的vector显示为vec.x,vec.y,vec.z. 注意到vec.y没有太多的事情发生,因为现在汽车在XZ飞机上保持水平。 (如自上而下的游戏,但在3D环境中)。 我在屏幕上收到一些奇怪的反应,我不明白为什么。 我只能假设我误解了一些代码所属的地方。 这些是我的变数等: glm::vec3 carLocation(0,0,0); //location of car float carHeading = 0.0f; //direction car facing float carSpeed = 0.5f; //speed of car float steeringAngle = 0.0f; //angle of front wheel float wheelBase; //length of car glm::vec3 frontWheel; //vec 3 representing front wheel glm::vec3 backWheel; //vec […]

在GLSL中查看正常计算

对不起,可怕的标题,但我真的不能想到更好的。建议表示欢迎。 我正在尝试在video中展示如下内容: 所以基本上可以顺利地改变面貌时的不透明度。 这是我的顶点着色器,片段着色器很简单,因为它只是将lightColor与纹理相乘: #version 430 core uniform mat4 MV; uniform mat4 MVP; layout(location = 0) attribute vec3 vertexPosition; layout(location = 1) attribute vec2 vertexUV; layout(location = 2) attribute vec3 vertexNormal; layout(location = 3) attribute mat4 bufferMatrix; // For per-instance translation varying vec2 UV; varying vec4 lightColor; flat varying int InstanceID; void main(){ vec4 mcPosition […]

团结:用力量在球形星球周围滚动

我试图在Unity中制作一个游戏角色是一个球(一个球体)的游戏,游戏世界是一个可以滚动的行星(一个非常大的球体)。 球可以通过箭头键在任何方向滚动。 如果球员拿着右箭头,球应该顺利地向右滚动,一直绕着地球不离开地面,直到它最终回到它开始的地方。 照相机跟随球的第三个人,使球总是出现在屏幕上的相同位置,并且行星似乎在其下移动。 我的问题是,我如何使用rigidbody.AddForce()以上述方式滚动球? 我想我需要做的是从水平轴和垂直轴上的input值中获取vector: float moveX = Input.GetAxis ("Horizontal"); float moveY = Input.GetAxis ("Vertical"); Vector3 inputMovement = new Vector3 (moveX, 0.0f, moveY); 并以某种方式旋转它,以便我将该vector作为力施加到球上,但是以与球正在行星上的点相切的方向施加该vector,然后将其作为力施加到球的刚体上。 所以如果你看着行星头,并且球在3点,按下右箭头键应该直接向下施加力。 有人可以帮我从这里出去吗? 我认为这可能很简单,但我很难搞清楚。

顺利与LibGDX联合

我想将敌人从当前位置移动到LibGDX中的鼠标位置。 x,y – 敌方位置saveX,saveY – 我的敌人需要去的位置(或者在特定时间保存的鼠标位置) xSize,ySize – 敌人的尺寸。 protected Vector2 makeVec(float saveX, float saveY){ Vector2 v = new Vector2(saveX – x, saveY – y); return v.nor(); } public void update(float dt){ test += dt; dtTime += dt; if(cont){ vec = makeVec(saveX, saveY); x += vec.x * speed y += vec.y * speed; cont = […]

Raycast闪烁的问题

谁能告诉我什么是我的代码错了? 如果你能看到,每当玩家在光线射击的范围内,敌人就会变成红色。 但是由于某种原因,即使玩家已经达到了让敌人变红的要求,也会变成白色。 这只有当你手动移动时才可见,正常速度看起来好像在闪烁。 我相信造成这种情况的一个原因是,其中一个raycast不再符合要求。 可能与此有关。 我不完全知道。 这张照片显示,即使玩家在使敌人变红的要求之内。 它不。 为什么? using UnityEngine; using System.Collections; /* TL = Top Left * TR = Top Right * BL = Bottom Left * BR = Bottom Right */ public class Script_v2 : MonoBehaviour { // Player Properties private GameObject player; public Vector3 playerSize; private Vector3 playerTransform; public Vector3 […]

如何计算包含任意旋转对象所需的正射投影?

所以我需要设置一个正交投影的尺寸,当从任意位置查看时,它将包含整个边界框。 这是一个眼睛(程序员艺术); 和它旁边的垂直线是我的看法。 我怎样才能算出这个视图的大小,以便它包含我的旋转矩形的最远角(从视图的角度来看)? 我很想用3D做这个,我认为2D会更好地解释它。 到目前为止,我认为如果我有: 从模型matrix的角度来看,我的边界框的每个角的坐标 有了这个,我可以很容易的算出最远的那个,如果我能把它和我的视图matrix相乘的话。 然而,这是我想要计算的视图matrix…

我应该用什么Java类来表示一个Vector?

Java是否具有适合处理冲突检测/响应的内置Vector类? 它应该有subtract(Vector v) , normalize() , dotProduct(Vector v) ,… 使用java.awt.Rectangle和java.awt.Polygon来计算冲突似乎是合乎逻辑的。 我是否正确地使用这些类来达到这个目的? 我理解碰撞检测; 我只想知道在Java中是什么方法是惯用的。 我对语言和应用程序开发一般都不熟悉。

如何在一个物体表面上定位一个3D十字准线,并从物体表面向外设置它的角度**

我现在所拥有的是光标在我的canvas上的光线追踪器,当我单击对象时,它将获得我select的vector在3D空间中的位置。 光线追踪器返回一个Vector3的point ,所以我把我的十字线( line )的位置设置为point ,唯一的问题是,我需要我的十字线从我的对象向外指向像这样:(示例) 这是我的问题在哪里…我需要得到我的光线跟踪器相交的脸的方向,但我不知道如何。 我可以得到物体本身的方向没有问题,但我不想要那个,我希望我的十字准线平躺在它的位置上。 这是不正确的位置在我的模型的一侧: 所以从十字指向外面的那条线应该从脸上指向外面,十字架在我点击的表面上是平的。 这是现在使用的代码: line.position.copy(intersects[0].point); var mx = new THREE.Matrix4().lookAt(intersects[0].point,new THREE.Vector3(0,0,0), intersects[0].normal); var qt = new THREE.Quaternion().setFromRotationMatrix(mx); line.rotation.copy(qt); 更新 我已经尝试了另一种方法在这里看到,但我仍然有麻烦得到它在网格上展平: var mat = intersects[0].object.matrixWorld; mat.setPosition(new THREE.Vector3(0, 0, 0)); var globalNormal = intersects[0].face.normal.clone().applyMatrix4(mat).normalize(); var lookAtTagret = new THREE.Vector3().addVectors(intersects[0].point.clone(), globalNormal); line.lookAt(lookAtTagret); var cPos = new THREE.Vector3().addVectors(intersects[0].point, globalNormal.multiplyScalar(0.05)) line.position.copy(cPos)

SceneKit – 将旋转vector转换为旋转matrix

我很新,我正在从github上的RPasecky/CubesInSpace学习这个ARKit代码,他/她将视角的旋转vector转换成一个旋转matrix https://raw.githubusercontent.com/RPasecky/CubesInSpace/master/CubesInSpace/MainViewController.swift func calculateCameraDirection(cameraNode: SCNVector4) -> SCNVector3 { let x = -cameraNode.x let y = -cameraNode.y let z = -cameraNode.z let w = cameraNode.w let cameraRotationMatrix = GLKMatrix3Make(cos(w) + pow(x, 2) * (1 – cos(w)), x * y * (1 – cos(w)) – z * sin(w), x * z * (1 – cos(w)) + y*sin(w), […]