知道了一根直线的两个端点A和B和一个角度,如何求C点? 首先,知道两个端点A和B,这两个点可以画一个直线。其次,知道跟AB线的一个角度,从A点画出另外一条直线AC,C是这条线的端点。要求,AB的长度等于AC的长度,求C的坐标。请问怎么计算? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MS是高中数学~解2元方程1.AB的模=AC的模2.cosBAC=AB*CA/(a*a)a是AB的长度 Lr=sqrt((Xb-Xa)*(Xb-Xa)+(Yb-Ya)*(Yb-Ya));th=夹角+atg((Yb-Ya)/(Xb-Xa));Xc=Xa+Lr*cos(th);Yc=Ya+Lr*sin(th); 错了一点,改一下:Lr=sqrt((Xb-Xa)*(Xb-Xa)+(Yb-Ya)*(Yb-Ya));th=夹角+atan((Yb-Ya)/(Xb-Xa));Xc=Xa+Lr*cos(th);Yc=Ya+Lr*sin(th); 按楼上gz_qmc同志的算法试试看,实际上我的项目是在嵌入式平台实现的,没有三角函数可以调用,不知道有没有办法解决? 回9楼一般如果在单片机上用的话,没有数学公式支持速度最快的办法是:将0到2π分成628份,没份0.01;建立一个数组分别装每个角度的人工计算值float arctan[628];float sin[628];float cos[628];则计算的时候将角度和数组比较取最近的那个值这628是我举例说的,楼主根据个人情况选可以选100,也可选1000;只不过,数小了快,但精度也差,数大了慢,占地方,但精度高 gz_qmc很聪明,刚才跟同事讨论过不用三角函数如何求C点的问题。先做一条AB的垂直线BD,垂直线的斜率就是原来参考线的负倒数,容易算出D点。画出AD,在AD之间分成90份,角度(假设是锐角)跟90度的比例和AD之间的比例就是E点。算出BE线的斜率,在BE上找出C点。不知道这样是不是可以? 设A(x1, y1), B(x2, y2), C(x3, y3),AB与AC夹角theta,AC相对AB逆时针旋转为正方向 +- -+ x3 = | x1 - cos(theta) (x2 - x1) - sin(theta) (y2 - y1) | | | y3 = | y1 - cos(theta) (y2 - y1) + sin(theta) (x2 - x1) | +- -+ Shell扩展问题,如何拦截文件夹的双击操作 求WpdApiSample例子下载 求教一个关于MFC中CListCtrl的问题 如何实现下面的问题?在线等 单单的开启线程出现一个不明确的问题,大家帮忙... 在dll中使用MsFlexGrid控件 GDI 和GDI+ 的问题! 使用MFC中的CRecordset类,如何获取SQL SERVER 2000中Datetime类型的值? 收藏夹被清空了??? 我用ShellExecute()打开一个URL,却在有的机子不能运行,有的却能,为什么? mscomm控件接收是,事件一直为3 模拟163邮箱,设置邮件接收人失败
解2元方程
1.AB的模=AC的模
2.cosBAC=AB*CA/(a*a)a是AB的长度
Lr=sqrt((Xb-Xa)*(Xb-Xa)+(Yb-Ya)*(Yb-Ya));
th=夹角+atg((Yb-Ya)/(Xb-Xa));
Xc=Xa+Lr*cos(th);
Yc=Ya+Lr*sin(th);
Lr=sqrt((Xb-Xa)*(Xb-Xa)+(Yb-Ya)*(Yb-Ya));
th=夹角+atan((Yb-Ya)/(Xb-Xa));
Xc=Xa+Lr*cos(th);
Yc=Ya+Lr*sin(th);
一般如果在单片机上用的话,没有数学公式支持
速度最快的办法是:将0到2π分成628份,没份0.01;
建立一个数组分别装每个角度的人工计算值
float arctan[628];
float sin[628];
float cos[628];
则计算的时候将角度和数组比较取最近的那个值这628是我举例说的,楼主根据个人情况选
可以选100,也可选1000;
只不过,数小了快,但精度也差,数大了慢,占地方,但精度高
+- -+
x3 = | x1 - cos(theta) (x2 - x1) - sin(theta) (y2 - y1) |
| |
y3 = | y1 - cos(theta) (y2 - y1) + sin(theta) (x2 - x1) |
+- -+