!!!已知屏幕上一直线上的A、B两点的坐标,如何计算出交于A或B点的一条垂线上任一点的坐标????

OnDraw 2002-01-06 05:27:38
...全文
734 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
OnDraw 2002-01-10
  • 打赏
  • 举报
回复
goodsong(如风):假设直线上两个点的坐标是a(a1,a2)和b(b1,b2),你能完整的说一下整个的步骤吗?或者说说这个bv怎么代入直线方程?多谢了
yoursoft 2002-01-10
  • 打赏
  • 举报
回复
老兄,如果你是用来在屏幕上画垂线用,你首先得确定垂线是直线还是射线或线段,如果仅仅是表示垂线,可以按屏幕边缘线的横或纵坐标带入垂线方程式求另一个纵或横坐标.
一可以将AB线段的长度作为该垂线的长度来求另一点坐标.
计算方法楼上的朋友已经有了.
goodsong 2002-01-10
  • 打赏
  • 举报
回复
to OnDraw:
对,将B点坐标代入y=kv*x+bv,就可以求出bv,这样直线方程就求出了,要画直线就没问题了,
在直线上任取两点,对你说的那种情况,实际上只而再取一点,加上B点就可画出垂线。对于斜率
不存在的情况,需要单独考虑,不过这种情况很简单。
goodsong 2002-01-10
  • 打赏
  • 举报
回复
假设作过A点(x1,y1)的垂线
1.若由A(x1,y1),B(x2,y2)决定的直线平行于x轴或y轴,要得到垂线是很容易的
if(x1==x2&&y1!=y2),则直线AB平行于y轴,垂线为y=y1, 其上的两点为(x1,y1),(x3,y1),x3为不等于x1的任一值
if(x1!=x2&&y1==y2),则直线AB平行于x轴,垂线为x=x1,其上的两点为(x1,y1),(x1,y3),y3为不等于y1的任一值
2.若直线AB不平行于x轴或y轴,则
斜率k=(y2-y1)/(x2-x1)
其垂线的斜率为kv=-1/k
于是可以假设直线的斜截式方程为:y=kv*x+bv,bv是垂线在y轴上的截距
因为垂线过A点(x1,y1)
所以有y1=kv*x1+bv,则bv=y1-kv*x1=y1+x1/k
所以求得垂线的方程为:y=-x/k+(y1+x1/k)
显然此真线过A(x1,y1),只需再取一点C(x3,y3),
不妨取x3=x1+2,y3=-x3/k+(y1+x1/k)
画直线AC即可
完毕


trivita 2002-01-09
  • 打赏
  • 举报
回复
天哪,sin、cos都是算法里面应该尽量避免的!而且你考虑了xB-xA=0的情况吗?
这个算法不好,算都算死了。
关于直线,你该看看Breshmen
Arter 2002-01-08
  • 打赏
  • 举报
回复
AB = |AB|(cos(arg(AB)) +i*sin(arg(AB))
arg(AB)= actan((yB-yA)/(xB-xA));

X = A + k*(cos(arg(AB)+Pi/2) + i*sin(arg(AB)+Pi/2))
or = B + k*(cos(arg(AB)+Pi/2) + i*sin(arg(AB)+Pi/2))

(x,y)=( x0 -k*sin(actan((yB-yA)/(xB-xA))), y0 + k*cos(actan((yB-yA)/(xB-xA)))
(x0,y0)=(xA,yA) or (xB,yB),k is a Real.
trivita 2002-01-08
  • 打赏
  • 举报
回复
真简单,学过复数吧?
假设Va=Xa+i*Ya,Vb=Xb+i*Yb为AB两点的向量,问题就是再求一个C点的Vc=Xc+i*Yc,
Vc=-i*(Va-Vb)+Vb(这里以B点为中心)
然后在连接BC,就是你要求的直线了(已知两点,用参数曲线即可)
OnDraw 2002-01-07
  • 打赏
  • 举报
回复
to:liuto(b34)用这个y=kv*x+bv代替第三步那个y=kv+bv吗?
OnDraw 2002-01-07
  • 打赏
  • 举报
回复
1up
liuto 2002-01-07
  • 打赏
  • 举报
回复
俺写漏了一个
垂线方程是:y=kv*x+bv
OnDraw 2002-01-06
  • 打赏
  • 举报
回复
to:liuto(B34) :非常感谢,但是还是不太明白,假如我的坐标直线上a、b两点的坐标分别是a(a1,a2)和b(b1,b2),并且我想做一条经过b点的垂线,你看看我带入公式的方法对不对

k=(b2-a2)/(b1-a1)
kv=(-1)*(1/k)
bv=b2-kv //此bv是垂线上x点坐标还是y点坐标?
bv=b1-kv // 此bv是垂线上x点坐标还是y点坐标?

liuto 2002-01-06
  • 打赏
  • 举报
回复
1.算直线的斜率 k=(yb-ya)/(xb-xa)
2.垂线的斜率 kv=(-1)*(1/k)
3.垂线方程 y=kv+bv
4.用A点或B点坐标代入解出bv,得垂线方程
5.该轮到你了:-)
OnDraw 2002-01-06
  • 打赏
  • 举报
回复
我想做一条垂直于这个直线的线段,但是不知道应该怎么计算垂线上另一个点的坐标
goodsong 2002-01-06
  • 打赏
  • 举报
回复
不懂你的意思,你的垂线是凭空冒出来的吗?

33,028

社区成员

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

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