CF_1C中关于给定正多边形三点坐标,求满足条件的使得面积最小的正多边形。

 1 #include <stdio.h>
 2 #include <math.h>
 3 #define pi 3.14159265354
 4 #define esp 1e-4
 5 double gcd(double,double);
 6 double edge(double,double,double,double);
 7 int main(void)
 8 {
 9     double x1,y1,x2,y2,x3,y3;
10     double r,A,B,C,a,b,c,area;
11     double  n;
12     scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
13     a=edge(x1,y1,x2,y2);
14     b=edge(x1,y1,x3,y3);
15     c=edge(x2,y2,x3,y3);
16     A=acos((b*b+c*c-a*a)/(2*b*c));
17     B=acos((a*a+c*c-b*b)/(2*a*c));
18     C=acos((a*a+b*b-c*c)/(2*a*b));
19     double d=gcd(A,B);
20     d=gcd(d,C);
21     n=pi/d;
22     area=fabs(x2*y3+x3*y1+x1*y2-x3*y2-x1*y3-x2*y1)/2;
23     r=a*b*c/4/area;
24     printf("%.8f\n",(n*r*r/2)*sin(2*pi/n));
25     return 0;
26 }double edge(double x1,double y1,double x2,double y2)
27 {
28     return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
29 }
30 double gcd(double x,double y)//这里是一中求浮点型数据的最大公约数的一种方法,比较巧妙,值得学习。
31 {
32     while(fabs(x)>esp&&fabs(y)>esp)
33     {
34         if(x>y)
35             x-=floor(x/y)*y;
36         else
37           y-=floor(y/x)*x;
38     }
39     return x+y;
40 }

通过过,r=a*b*c/(4*s)求出外接圆的面积,然后通过A=acos((b*b+c*c-a*a)/(2*b*c))求出三角形三个顶角,然后利用求gcd函数求出A,B,C最大公约数,由于三角形每条边所对应的圆周角都是正多边形圆周角的整数倍,故n=pi/gcd(A,B,C),然后正多边形的面积便是n个相同的三角形的面积了,其中每个三角形面积为r*r/2*sin(2*pi/n),正多边形面积即可求出。

在 Windows 编程环境中,`CF_HTML` 并不是一个标准的剪贴板格式常量,因此不会直接出现在常见的 Win32 API 头文件(如 `windows.h`)中。实际上,`CF_HTML` 是由 Internet Explorer 引入的一种自定义剪贴板格式名称,用于表示包含 HTML 文本的内容。 由于这不是预定义的剪贴板格式之一,所以在使用时需要手动注册这个格式名。这通常是在应用程序启动时完成的一次性操作,并将得到的结果保存下来供后续使用。例如: ```cpp #include <windows.h> #include <string> // 全局变量存储已注册的剪贴板格式编号 static UINT g_cfHtml = 0; void RegisterCustomFormats() { // 如果还没有注册过,则创建一个新的名为 "HTML Format" 的剪贴板格式 if (g_cfHtml == 0) g_cfHtml = RegisterClipboardFormat(L"HTML Format"); } BOOL IsHtmlOnClipboard() { return IsClipboardFormatAvailable(g_cfHtml); } ``` 需要注意的是,虽然我们在这里使用了 `"HTML Format"` 字符串来注册格式,但在实际的应用程序间通信中,应该始终使用系统提供的确切标识符,即 `L"text/html` 或者其他官方推荐的形式。因为不同的应用程序可能会用不同名字注册相同的剪贴板格式,导致兼容性问题。 对于想要处理 HTML 类型剪贴板内容的应用来说,可以参考 Microsoft 官方文档中的 [“关于 HTML 格式的详细说明”](https://docs.microsoft.com/en-us/windows/win32/dataxchg/about-html-format),那里有关于如何正确解析这种特定类型的剪贴板数据的具体指导。 总结而言: - `CF_HTML` 没有专门对应的头文件声明; - 使用前需调用 `RegisterClipboardFormat()` 函数对其进行注册; - 应尽量避免硬编码具体的格式字符串,而采用系统提供的方式确保跨平台一致性。 如果你希望进一步了解或查看完整的实现细节,请查阅相关的 MSDN 文档或其他权威资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值