免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1641 | 回复: 9
打印 上一主题 下一主题

[算法] 请教一个数学问题,关于求点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-23 10:37 |只看该作者 |倒序浏览
已知A坐标,B坐标. C坐标与B 坐标距离为1,且在A B 坐标延长线上,求C坐标.

论坛徽章:
0
2 [报告]
发表于 2013-09-23 10:40 |只看该作者
假设 a坐标 是 0,0 b坐标是 1,1 C坐标大概是  2,2 的位置
假设 a坐标 是 0,0 b坐标是 -1,-1 C坐标大概是  -2,-2 的位置

论坛徽章:
0
3 [报告]
发表于 2013-09-23 10:43 |只看该作者
数学都还给老师了,网上找了个类似的问题
一条直线3个坐标,已知两点坐标A1:X=71157,Y=39267;A2:X=71158,Y=39211,A3点为距A1点2000距离,A3坐标是多少?

  -- double dLA1A2 = sqrt((Ax2-Ax1)^2 + (Ay2-Ay1)^2);  
  -- //计算A1A2的长度double Ax3 = 2000 / dLA1A2 * (Ax2-Ax1) + AX1;      
  -- //A3的横坐标double Ay3 = 2000 / dLA1A2 * (Ay2-Ay1) + Ay1;      
  -- //A3的横坐标数学公式采用向量计算   

但是求得的答案不正确,求出的 c坐标 x,y 总是正数。如果b坐标有负数,c坐标也应该是负数
  

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
4 [报告]
发表于 2013-09-23 11:00 |只看该作者
精钢狼 发表于 2013-09-23 10:37
已知A坐标,B坐标. C坐标与B 坐标距离为1,且在A B 坐标延长线上,求C坐标.

struct pt
{
    double x;
    double y;
};

#include <cmath>
pt foo( const pt& a, const pt& b )
{
    double dt = sqrt( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) );
    pt c = { b.x + (b.x-a.x)/dt, b.y+(b.y-a.y)/dt };
    return c;
}

#include <iostream>
std:stream& operator<< ( std:stream& os, const pt& point )
{
    return os << '(' << point.x << ',' << point.y << ')';
}

#include <cassert>
using namespace std;

int main()
{
    {
        pt a={0,0}, b={sqrt(3.0),1};
        pt c = foo( a, b );
        cout << c << endl;

        assert( c.x==sqrt(3.0)*1.5 && c.y==1.5 );
    }

    return 0;
}

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
5 [报告]
发表于 2013-09-23 11:05 |只看该作者
回复 3# 精钢狼
  1. struct pt
  2. {
  3.     double x;
  4.     double y;
  5. };

  6. #include <cmath>
  7. pt foo( const pt& a, const pt& b, double dist )
  8. {
  9.     double dt = sqrt( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) );
  10.     pt c = { b.x + (b.x-a.x)/dt*dist, b.y+(b.y-a.y)/dt*dist };
  11.     return c;
  12. }

  13. #include <iostream>
  14. std::ostream& operator<< ( std::ostream& os, const pt& point )
  15. {
  16.     return os << '(' << point.x << ',' << point.y << ')';
  17. }

  18. #include <cassert>
  19. using namespace std;

  20. int main()
  21. {
  22.     {
  23.         pt a={71157,39267}, b={71158,39211};
  24.         pt c = foo( a, b, 2000 );
  25.         cout << c << endl;
  26.     }

  27.     return 0;
  28. }
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-09-23 11:20 |只看该作者
谢谢 bruceteen,测试正确,请问,数学上求这个的名词是什么?我想去查下原理,公式。谢谢

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
7 [报告]
发表于 2013-09-23 14:00 |只看该作者
本帖最后由 w_anthony 于 2013-09-23 14:10 编辑

这个我怎么看着像作业题啊?bruceteen好精力!
话说这个不就是解一组方程组就完事了吗?
CB和BA斜率相同,得式子一;
C到B距离是1,得式子二;
连立应该可以得到两组解,取(A.x - B.x) * (B.x - C.x) >0的那组就行(如果是0尝试用y)。

-------------------------------

我想复杂了,bruceteen这个方法好很多。

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
8 [报告]
发表于 2013-09-23 14:05 |只看该作者
精钢狼 发表于 2013-09-23 10:40
假设 a坐标 是 0,0 b坐标是 1,1 C坐标大概是  2,2 的位置
假设 a坐标 是 0,0 b坐标是 -1,-1 C坐标大概是   ...


话说你这个距离不是√2吗?

论坛徽章:
0
9 [报告]
发表于 2013-09-23 14:15 |只看该作者
CU高手多,怪不得朋友推荐来这里学习,以后再这里混了

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
10 [报告]
发表于 2013-09-23 15:42 |只看该作者
回复 9# 精钢狼


    这就是一高中数学题好吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP