一个简单的集几何问题,晕死了 请问大侠们一个算法问题,希望您给出代码,谢谢啦!坐标系上有三个点(x1,y1)、(x2,y2)、(x3,y3),三个点不在一个直线上,现在(x1,y1)、(x2,y2)这两个点连成一个线,求(x3,y3)到这个直线的最短距离? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 从(x3, y3)点到(x1, y1)、(x2, y2)的垂直线最短,找找初中的数学书应该有作业题? uses Math;function Get3Len(pt1,pt2,pt3:TPoint):Extended;var a,b,c:Extended;begin a:=ArcCos(pt3.X/sqrt(pt3.X*pt3.X+pt3.Y*pt3.Y)); //取得pt3和x轴的夹角 //取得pt1,pt2直线和x轴的夹角 b:=ArcCos(Abs(pt1.X-pt2.X)/sqrt((pt1.X-pt2.X)*(pt1.X-pt2.X)+(pt1.Y-pt2.Y)*(pt1.Y-pt2.Y))); c:=Abs(a-b); //两者相减,得到直线pt1pt3和直线pt1pt2的夹角 //根据正弦原理y=r*sin(a)求得高 result:=Sqrt((pt3.X-pt1.X)*(pt3.X-pt1.X)+(pt3.Y-pt1.Y)*(pt3.Y-pt1.Y))*sin(c);end;procedure TForm1.Button1Click(Sender: TObject);var a:Extended; pt1,pt2,pt3:TPoint;begin pt1.X:=50; pt1.Y:=50; pt2.X:=60; pt2.Y:=150; pt3.X:=200; pt3.Y:=120; a:=Get3Len(pt1,pt2,pt3); ShowMessage(FloatToStr(a));end; 马上要升级当爹了,提前发帖散分 线程中用到 WebBrowser.OleObject 关于sncDBCurrencyEdit和dbgrideh的问题,在线等 深度讨论wuiki ADO连接SQL SERVER问题? 用IDFTP的异常保护问题 在程序中对打印控件PrintDbgridEh中如何设置打印纸张的方向? 谁能给我说说Wm_Message=Wm_User+100的工作原理? 求救,关于ADOQuery的问题 D10导入wsdl接口文件包含错误 急 vc++翻译成Delphi函数 谁有winpcap for delphi请给我一份!
作业题?
function Get3Len(pt1,pt2,pt3:TPoint):Extended;
var
a,b,c:Extended;
begin
a:=ArcCos(pt3.X/sqrt(pt3.X*pt3.X+pt3.Y*pt3.Y)); //取得pt3和x轴的夹角
//取得pt1,pt2直线和x轴的夹角
b:=ArcCos(Abs(pt1.X-pt2.X)/sqrt((pt1.X-pt2.X)*(pt1.X-pt2.X)+(pt1.Y-pt2.Y)*(pt1.Y-pt2.Y)));
c:=Abs(a-b); //两者相减,得到直线pt1pt3和直线pt1pt2的夹角
//根据正弦原理y=r*sin(a)求得高
result:=Sqrt((pt3.X-pt1.X)*(pt3.X-pt1.X)+(pt3.Y-pt1.Y)*(pt3.Y-pt1.Y))*sin(c);
end;procedure TForm1.Button1Click(Sender: TObject);
var
a:Extended;
pt1,pt2,pt3:TPoint;
begin
pt1.X:=50;
pt1.Y:=50;
pt2.X:=60;
pt2.Y:=150;
pt3.X:=200;
pt3.Y:=120;
a:=Get3Len(pt1,pt2,pt3);
ShowMessage(FloatToStr(a));
end;