首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用勾股方程画圆

用勾股方程画圆
EN

Stack Overflow用户
提问于 2013-02-01 20:37:50
回答 2查看 1.8K关注 0票数 0

我必须用下面的代码画一个圆(检查点是否在圆上)。

代码语言:javascript
复制
int rad=10;
// i=x,j=y
for (int j=ymid-rad;j<=ymid+rad;j++){
   for (int i=xmid-rad;i<=xmid+rad;i++){
      if (((i-xmid)*(i-xmid)+(j-ymid)*(j-ymid)) == rad*rad)
         Image1->Canvas->Pixels[i][j]=clRed;
   }
}

然而,它只绘制了圆的几个点。我做错了什么?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-02-01 20:39:35

所有这些都是在整数运算中完成的;有very few integer solutionsx^2 + y^2 == r^2 (对于固定的r)。

我建议使用像这样的东西。

票数 3
EN

Stack Overflow用户

发布于 2013-02-01 23:14:14

基于范围的版本的工作方式如下:

代码语言:javascript
复制
bool RangeCheck(float val, float r1, float r2) {
   return val >= r1 && val <= r2;
}
bool Circle(float x, float y, float rad) {
   return RangeCheck(sqrtf(x*x+y*y), rad-0.8, rad+0.8);
}
bool CircleWithCenter(float x, float y, float cx, float cy, float rad) {
   x-=cx; y-=cy;
   return Circle(x,y,rad);
}

这种范围是他们在天气预报中绘制等值线的方式,但也适用于圆。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14646486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档