在HTML画布中旋转一个点
Rotating a point in HTML canvas
我正在尝试学习一些基本的矢量数学,但我似乎无法获得这种旋转点的方法。旋转矢量的大小正在按比例放大,我不知道角度的大小。
以下是相关功能。我在javascript/HTML画布上工作。
function rotate(point, center, angle) {
var theta = (Math.PI / 180) * angle,
cX = center.pos.x,
cY = center.pos.y,
pX = point.pos.x,
pY = point.pos.y,
pCos = Math.cos(theta),
pSin = Math.sin(theta),
x = pX - cX,
y = pY - cY;
x = (x * pCos - y * pSin) + cX;
y = (x * pSin + y * pCos) + cY;
return {x: Math.floor(x), y: Math.floor(y)};
}
这是一个奇怪结果
函数几乎正确,但您只是使用修改后的x值来计算y
function rotate(point, center, angle) {
var theta = (Math.PI / 180) * angle,
cX = center.pos.x,
cY = center.pos.y,
pX = point.pos.x,
pY = point.pos.y,
pCos = Math.cos(theta),
pSin = Math.sin(theta),
x = pX - cX,
y = pY - cY;
/* You had
x = (x * pCos - y * pSin) + cX; // you change x on this line
y = (x * pSin + y * pCos) + cY; /// then used the modified x to get y
*/
// this will fix the problem
var xx = (x * pCos - y * pSin) + cX;
var yy = (x * pSin + y * pCos) + cY;
return {x: Math.floor(xx), y: Math.floor(yy)};
}
相关文章:
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何将值传递到上一个html页面
- 一个html元素的克隆次数太多
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 如何在另一个html文件的框架中包含图像
- 按下一个HTML按钮,该按钮使用一个功能在同一个新窗口中打开URL
- 我可以共享一个HTML播放器吗
- 如何在一个html页面上使用js进行2次乘法运算
- 访问下一个html页面的静态4位密码
- 如何在JavaScript中将值从一个html页面传递到另一个页面
- 重定向到Angular JS中的另一个HTML页面
- 使用JavaScript打开另一个html页面时传递变量
- 一个html/javascript'小工具'知道用户何时单击了小部件外的任意位置
- 当源文件夹中有多个jade文件时,gulp-ejade只构建一个HTML文件
- JSON编码一个HTML列表——所有子项都显示在所有父项上
- 创建一个HTML文件,该文件使用DOM在用户每次单击按钮时交换两段内容
- 如何在另一个 html 标签内选择 web 元素硒 Web 驱动程序与 html 源
- 创建一个html表单并使用javascript访问中的python脚本
- 构建一个HTML小部件来嵌入付费内容-如何确保与后端的通信安全
- 在我的php模型中用javascript更改一个html类