求三点画圆弧算法--不能调用现成的画圆弧函数

fage407 2005-04-08 09:41:46
小弟急需三点画圆弧算法,不能调用库里面的函数,只能调用setpixel()或putpixel()函数,用C或C++语言。提供算法思路也行,谢谢!!!!!
...全文
391 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
三点(不共线),可以构造三条直线。

任意两条,中垂线的交点就是圆心。。。。设置x,y(增量足够小) 画很密的点
vcmute 2005-04-09
  • 打赏
  • 举报
回复
求圆心:
根据-1/斜率算出垂直线的斜率
根据两点在两条垂直线上,算出交点

double a12 = -(double(p1.x - p2.x)/(p1.y - p2.y));//(double)-1/GetP(p1,p2);
double b12 = p2.y-p2.x*a12;
double a13 = -(double(p1.x - p3.x)/(p1.y - p3.y));
double b13 = p3.y-p3.x*a13;
POINT p4;
p4.y=(p1.y+(b12*a13-b13*a12)/(a13-a12))/2;
p4.x=(p1.x+(b12-b13)/(a13-a12))/2;

vcmute 2005-04-08
  • 打赏
  • 举报
回复
只有SetPixel可用的情况下,画一段弧

for(int t=0;t<150;++t)
{
int y=y0-r*sin(PI*t/180);
int x=x0+r*cos(PI*t/180);
dc.SetPixel(x,y,RGB(255,0,0));
}
xuzheng318 2005-04-08
  • 打赏
  • 举报
回复
BOOL CDC::Arc( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );

BOOL CDC::Arc( LPCRECT lpRect, POINT ptStart, POINT ptEnd );
fage407 2005-04-08
  • 打赏
  • 举报
回复
能再具体点吗?
画一个圆容易,画一段的圆就难了
vcmute 2005-04-08
  • 打赏
  • 举报
回复
三点求圆心,算出两端的角度,画一段的圆

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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