如何计算弦所在的矩形和形成的区域 ( 积分: 100 )

  • 主题发起人 主题发起人 hwljerry
  • 开始时间 开始时间
H

hwljerry

Unregistered / Unconfirmed
GUEST, unregistred user!
Canvas.Chord(219, 141, 473, 395, 429, 365, 261, 174);
半径R:127;
圆心:346,268
有上面的数据如何计算这个弦外接矩形....
以及弦本身形成的区域大小。。。。
 
没人知道吗。。。太失望了吧。。。
 
没人知道吗。。。
 
怎么算没人知道吗。。。
提供思路也行啊。。。。
 
procedure TForm1.Button2Click(Sender: TObject);
var
HCircle, HChord, HRect, HResult: HRGN;
Ps: array[0..5] of TPoint;
begin
HCircle := CreateEllipticRgn(346-127, 268-127, 346+127, 268+127); //圆HCircle
Ps[0] := Point(261, 174);
Ps[1] := Point(429, 365);
Ps[2] := Point(429, 365);
Ps[3] := Point(473, 365);
Ps[4] := Point(473, 141);
Ps[5] := Point(261, 141);
HResult := CreatePolygonRgn(Ps, Length(Ps), WINDING); //多边形HResult
HChord := CreateRectRgn(0, 0, 0, 0); //初始化半圆HChord
CombineRgn(HChord, HResult, HCircle, RGN_AND); //生成半圆HChord,HCicle与HResult交集
HRect := CreateRectRgn(261, 141, 473, 365); //半圆外接矩形HRect
CombineRgn(HResult, HRect, HChord, RGN_DIFF); //外接矩形和半圆成的区域HReslut
//Canvas.Brush.Color := clRed;
//PaintRgn(Canvas.Handle, HResult); //绘制HResult,是你要的结果吗?
end;
 
可能表达有问题。我的意思是想要任意一个弦所外接的矩形大小。。以及弦本身形成的区域大小。。。。
 
思路就是这样了,自己用变量代代替数字,多试试应该行的

没找到生成半圆的API,所以用CombineRgn
 
to:ANiDelphi 计算区域可能比较好算吧。。
我要的外接矩形也算出来了,是下面的连接的方法做的。。。不过他只提供劣弧的计算方式,自己还要加上“盈弧”(是不是这么叫)的计算方式。麻烦了一点。
http://cg.sjtu.edu.cn/lecture_site/chap4/mainframe473.htm#4.7.3%20基本几何计算
还是谢谢。。。。
 
后退
顶部