if DangqianPointNum=0 then hudu:=LiangDianHuDu(YuanDian,AJiZhunDian)-LiangDianHuDu(YuanDian,FLinshiQSD) else hudu:=LiangDianHuDu(YuanDian,AJiZhunDian)-LiangDianHuDu(YuanDian,FLinshiJSD); QSDian:=XuanZhuanDian(FLinshiQSD,YuanDian,hudu); JSDian:=XuanZhuanDian(FLinshiJSD,YuanDian,hudu); //这是一条直线沿中点旋转 function TTuXing.LiangDianHuDu(AQSDian, AJSDian: TDian): Double; begin if (Abs(AQSDian.X-AJSDian.X)<0.01) and (Abs(AQSDian.Y-AJSDian.Y)<0.01) then Result:=0 else if Abs(AQSDian.X-AJSDian.X)<0.01 then begin if AJSDian.Y>AQSDian.Y then Result:=(pi/2) else Result:=(3*PI/2); end else begin Result:=ArcCos((AJSDian.X-AQSDian.X)/LiangDianJuLi(AJSDian,AQSDian)); if AJSDian.Y>AQSDian.Y then Result:=2*PI-Result; end; end;这是计算两点的弧度!
你的EMAIL?
hudu:=LiangDianHuDu(YuanDian,AJiZhunDian)-LiangDianHuDu(YuanDian,FLinshiQSD)
else hudu:=LiangDianHuDu(YuanDian,AJiZhunDian)-LiangDianHuDu(YuanDian,FLinshiJSD);
QSDian:=XuanZhuanDian(FLinshiQSD,YuanDian,hudu);
JSDian:=XuanZhuanDian(FLinshiJSD,YuanDian,hudu);
//这是一条直线沿中点旋转
function TTuXing.LiangDianHuDu(AQSDian, AJSDian: TDian): Double;
begin
if (Abs(AQSDian.X-AJSDian.X)<0.01) and (Abs(AQSDian.Y-AJSDian.Y)<0.01) then Result:=0
else
if Abs(AQSDian.X-AJSDian.X)<0.01 then
begin
if AJSDian.Y>AQSDian.Y then Result:=(pi/2) else Result:=(3*PI/2);
end
else
begin
Result:=ArcCos((AJSDian.X-AQSDian.X)/LiangDianJuLi(AJSDian,AQSDian));
if AJSDian.Y>AQSDian.Y then Result:=2*PI-Result;
end;
end;这是计算两点的弧度!