画布绘制 - 在不清除旧状态的情况下更改旋转轴
canvas draw - change rotation axis without clearing old state
我正在使用html5画布来创建一个简单的3d多边形程序。 该程序允许更改每个轴的旋转 - x,y,z。 在改变 x/y/z 角度的事件中,完成对绘图函数的相应调用。 问题是每次我对 draw 函数进行新调用时,它都会清除旧位置,结果是它跳跃。 基本上每个函数都独立工作,但它们不能一起工作。
示例代码:
var Perspective = function(rotate){
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
//clear
...
switch(rotate){
case "x" : {
var transform = Mat3.rotationX(Math.radians(rotateX.getValue())); //rotation x
break;
}
case "y" : {
var transform = Mat3.rotationY(Math.radians(rotateY.getValue())); //rotation y
break;
}
case "z" : {
var transform = Mat3.rotationZ(Math.radians(rotateZ.getValue())); //rotation Z
}
...
draw(...settings..)
}
为每个滑块更改事件设置侦听器(也适用于 Y 和 Z)。AngleX 调用 Perspective,将字符串"x"作为旋转参数传递。
var angleX = $('#AngleX').slider()
.on('slide change', AngleX)
.data('slider');
如果不同的轴更动态,我如何进行更改?
无论如何,
我已经解决了它,谢谢你 QBM5 .. 开关情况是一个错误,我不得不像这样乘以所有轴变换矩阵:
var transform = Mat3.rotationX(-Math.radians(rotateY.getValue())) .multiply(Mat3.rotationY(Math.radians(rotateX.getValue())));
相关文章:
- jquery在不触发更改事件的情况下切换设置状态
- 是否可以在没有视图状态和回发的情况下使用asp.net web表单
- 在不改变状态的情况下,根据减少器中的给定索引更改嵌套数组值
- 如何在不使用主题或命令式操作的情况下管理状态 在一个简单的 RxJS 示例中
- 如何在禁用 JavaScript 的情况下维护下拉列表的持久性状态 - PHP
- 在不触发状态更改的情况下更新 URL
- 是否可以在不导致单击事件的情况下更改复选框状态
- 画布绘制 - 在不清除旧状态的情况下更改旋转轴
- UI 路由器在不更改 url 的情况下更改状态
- Jquery 序列化 :尝试在不提交表单的情况下将表单状态传递给 ASP.NET MVC 控制器
- 在不使用状态/属性的情况下与父组件通信
- 角度 UI 路由器 - 在没有参数的情况下从一个状态转换到同一状态失败
- 是否可以在不让他们安装应用程序的情况下更新用户的 facebook 状态
- 如何在没有闭包的情况下对共享状态进行编程
- 如何在应用所有样式并删除javascript的情况下捕获运行时html内容/状态
- Knockout模板在某些情况下保持加载状态
- 如果用户在不按登出的情况下关闭浏览器,如何使其处于脱机状态
- 在不改变整个状态的情况下改变state数组(REACT / REDUX)
- 如何在不将状态传递给子组件的情况下更新状态
- FP:在没有实际状态变化的情况下反映状态