const delta: Vec2 = e.getDelta(); const axis: Vec3 = v3(-delta.y, delta.x, 0); //旋转轴,根据相似三角形求出 const rad: number = delta.length() * 1e-2; //旋转角度 this.tempQuat = this.player.getRotation(); //当前的四元数 Quat.rotateAround(this.rotationQuat, this.tempQuat,...
@property(Joystick) Joystick: Joystick = null; @property(Camera) private UICamera: Camera = null; private _startVec2Position: Vec2 = new Vec2(); private _startVec3Position: Vec3 = new Vec3(); start() { this.node.on(Node.EventType.TOUCH_START, this.onTouchStart, this); } private ...
private threeD2Screen2UI(screenPos: Vec2, uiPos: Vec2): void { let screenPoint: Vec3 = this.camera3D.worldToScreen(this.cube.worldPosition); let uiPoint: Vec3 = this.cameraUI.screenToWorld(screenPoint); this.button.setWorldPosition(uiPoint); } //将button放在cube的上面 private threeD2...
public static fromViewUp<Out extends IQuatLike, VecLike extends IVec3Like> (out: Out, view: VecLike, up?: Vec3) { Mat3.fromViewUp(m3_1, view, up); return Quat.normalize(out, Quat.fromMat3(out, m3_1)); } 两向量间的最短路径旋转 也可以用一个四元数表示量向量旋转的最短路径。
方向向量有了,然后就是旋转该方向向量,这里依然使用 Vec3.transformQuat,但 transformQuat 还需要知道当前的四元数,根据当前已知条件,使用 Quat.fromAxisAngle 来计算四元数。 根据旋转轴和旋转弧度计算四元数: Quat.fromAxisAngle(out, axis, rad);
// private onTouchMove(touch: Touch) { const delta = touch.getDelta(); // 绕轴转 // 这里选取轴朝上 const axis2 = Vec3.UP;//旋转轴 const rad2 = 1e-2 * delta.x; //旋转角度 // 计算坐标 const point = this.node_axi.worldPosition; //旋转点 const point_now = this.node_touch...
sin(radian);// 对边 / 斜边 let tan = sin / cos;// 对边 / 邻边 // 结合在一起并归一化 let vec = new Vec2(cos, sin).normalize(); // 返回向量 return(vec); } // !!!其实使用Math.atan2求出弧度再转角度一样的效果 // 向量转角度 vector_to_angle (vector: Vec2): number { //...
Defined in cocos/core/math/vec2.ts:64 复制目标向量 Type parameters Out: IVec2Like Parameters out: Out a: Out Returns Out Static cross cross<Out>(out: Vec3, a: Out, b: Out): Vec3 Defined in cocos/core/math/vec2.ts:301 向量叉积(向量积),注意二维向量的叉积为与 Z 轴平...
getScale 获取节点的缩放,需要传一个 cc.Vec2 或者 cc.Vec3 作为参数来接收返回值。 setScale 设置节点在本地坐标系中坐标轴上的缩放比例。 getRotation 获取该节点的 quaternion 旋转角度,需要传一个 cc.Quat 作为参数来接收返回值。 setRotation 设置该节点的 quaternion 旋转角度。 getContentSize 获取节点自身大...
// 对应vfmtPosUvColor结构里的3个字段// 注意这里a_position是vec3类型,但是vfmtPosUvColor对其自定义了2个float长度。所以a_position.z = 0in vec3 a_position; // gfx.ATTR_POSITIONin vec2 a_uv0; // gfx.ATTR_UV0in vec4 a_color; // gfx.ATTR_COLOR ...