收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 2986|回复: 3

[求助] 三角函数及坐标问题~

[复制链接]
发表于 2020-3-23 10:28:46 | 显示全部楼层 |阅读模式
已知坐标中的2个点A和B,以AB为底做等腰三角形。2个底角30度,求点顶点C的2个坐标的计算公式~
实际是想在canvas画布中使用arcTo命令画出任意2点间的曲线
发表于 2020-4-29 17:57:15 | 显示全部楼层
本帖最后由 jianwang19 于 2020-4-29 17:58 编辑

A=[x, y],B=[x, y],C=[x, y]。
首先,把A点移动到原点A1(0, 0)。
然后,把B点移动到B1(R, 0)。
有以下计算:
  1. let x = B1[0] - A1[0];
  2. let y = B1[1] - A1[1];
  3. let R = Math.sqrt(x*x + y*y);
复制代码

通过三角函数可以计算得:
  1. let angle = 30;
  2. 平移后的C为:
  3. C[0] = R/2;
  4. C[1] = Math.tan(angle * Math.PI / 180) * C[0];
复制代码

现在问题是怎么把C点的坐标转换回原来的位置。
这就需要用到矩阵的平移和旋转了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-11 16:23:07 | 显示全部楼层
终于百度到了-,-这里备份1下

function getaCpos(x1,y1,x2,y2,r){
               
                var c1 = (x2*x2 - x1*x1 + y2*y2 - y1*y1) / (2 *(x2 - x1)),
                    c2 = (y2 - y1) / (x2 - x1),//斜率 //y=k*x+a ,反斜率y2 = 1/k*x+b
                    A = (c2*c2 + 1),
                    B = (2 * x1*c2 - 2 * c1*c2 - 2 * y1),
                    C = x1 * x1 - 2 * x1 * c1 + c1 * c1 + y1 * y1 - r * r;
               

                var y3 = (-B + Math.sqrt(B*B - 4 * A*C)) / (2 * A),
                    x3 = c1 - c2 * y3,
                    y4 = (-B - Math.sqrt(B*B - 4 * A*C)) / (2 * A),
                    x4 = c1 - c2 * y4;

                return {x3:x3,x4:x4,y3:y3,y4:y4}
               
            }
回复 支持 反对

使用道具 举报

发表于 2020-9-1 13:04:54 | 显示全部楼层
学习了 强
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )  

GMT+8, 2020-10-1 01:08 , Processed in 0.107151 second(s), 7 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表