怎么画正N边形

rendy 2004-04-01 05:58:15
已知圆心和半径,怎么等分圆周
...全文
365 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
syy64 2004-08-04
  • 打赏
  • 举报
回复
不难
rendy 2004-08-04
  • 打赏
  • 举报
回复
用三角函数就行了,太笨了!
哈哈,结贴。
lxstudent 2004-04-02
  • 打赏
  • 举报
回复
#define Pi 3.1415926
#define r 100
#include <math.h>


void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
Point point[10];
double fAngle = 0;
CRect rect;
GetClientRect(&rect);
pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);
pDC->MoveTo(CPoint(r,0));
for ( int i=0; i<10; i++, fAngle+= 2*Pi/10)
{
point[i].x = r * cos (fAngle);
point[i].y= r * sin (fAngle);
pDC->LineTo(CPoint(point[i].x,point[i].y));

}
pDC->LineTo(r,0);
}
itmaster 2004-04-01
  • 打赏
  • 举报
回复
学习
smallbull 2004-04-01
  • 打赏
  • 举报
回复
int N = 100; //凸N边形,假设为凸100边形
double Radius = 20.00; //圆的半径,假设为20
double DevideAngle,Pai = 3.1415926;//平分角度和圆周率
double CoordinateX[100],CoordinateY[100];//凸100边形的100个顶点的笛卡儿座标
DevideAngle = Pai*360/(N*180);
for(int i=0;i<N;i++)
{
CoordinateX[i] = Radius * cos(DevideAngle);
CoordinateY[i] = Radius * sin(DevideAngle);
}
寻开心 2004-04-01
  • 打赏
  • 举报
回复
POINT * pPoint = new POINT[N];
POINT * pTemp = pPoint;
float fAngle = 0;
for ( int i=0; i<N; i++, fAngle+= 2*Pi/N, pTemp++ ) {
*pTemp.x = r * cos (fAngle)
*pTemp.y = r * sin (fAngle)
};
pDC->Polyline(pPoint, N);
delete[] pPoint;
寻开心 2004-04-01
  • 打赏
  • 举报
回复
N 是边数, N大于2

float fAngle = 0;
for ( int i=0; i<N; i++, fAngle+= 2*Pi/N ) {
xi = r * cos (fAngle)
yi = r * sin (fAngle)
输出xi,yi
};
yening0914 2004-04-01
  • 打赏
  • 举报
回复
角度问题,很好算的呀,k=360/N,然后x=cos(k),y=sin(k),一个角度一个角度的算就是了!
GameWeaverDummy 2004-04-01
  • 打赏
  • 举报
回复
用GOOGLE查一下相关的数学知识

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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