已知一个线段的两端端点x、y坐标,求此线段的平行线,要求二线距离为5

Asun01 2006-06-15 02:50:02
想到用平移,具体怎么做就不清楚拉
...全文
828 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Asun01 2006-06-16
  • 打赏
  • 举报
回复
谢谢各位。。我先弄一下
积木 2006-06-15
  • 打赏
  • 举报
回复
呜呜,我的向量都白学了。。。
寻开心 2006-06-15
  • 打赏
  • 举报
回复
基本思路就是通过确定线段的单位方向向量,找到它的垂直方向,把A和B沿着垂直方向各自移动5个距离就是了

用的是向量运算,不用三角函数
获得垂直向量比较简单,通过交换向量的x和y分量,并且把其中一个分量取负值就是了
寻开心 2006-06-15
  • 打赏
  • 举报
回复
有两条线啊

已知两个端点AB,确定一个方向v:B-A, 单位化它vn = vt / |vt|
然后得到这个方向的垂直方向 vt:vn它的两个垂直方向 vt: vt.x =-vt.y, vt.y=vt.x

平行线段1
a' = a + vt * 5
b' = b + vt * 5

平行线段2
a' = a - vt * 5
b' = b - vt * 5

只需要一次sqrt计算,其他都是四则运算
积木 2006-06-15
  • 打赏
  • 举报
回复
实际上我给的方法用计算机很容易就编程实现了。。。反三角函数都是现成的。。。
crazy_lazy_pig 2006-06-15
  • 打赏
  • 举报
回复
没什么好办法硬算吧。
直线的两点式方程:
x-x1 y-y1
---- = ----
x1-x2 y1-y2
整理得:
(y1-y2)x-(x1-x2)y+(x1y2-x2y1)=0
点(x0,y0)到直线的距离d为:
d=(y1-y2)x0-(x1-x2)y0+(x1y2-x2y1)/sqrt((y1-y2)^2+(x1-x2)^2)
整理得(我不喜欢分母上有东西,以免影响精度)
d*sqrt((y1-y2)^2+(x1-x2)^2)-(x1y2-x2y1)=(y1-y2)x0-(x1-x2)y0
解这个方程就可以了
积木 2006-06-15
  • 打赏
  • 举报
回复

已知直线
y1 = k * x + c1
未知直线,但是知道平行,也就是斜率向等。
y2 = k * x + c2


而截距差的绝对值
5/|c1-c2| = sin (arctg(k));
从而c2 可求,从而得解。

33,025

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧