游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10344|回复: 46

这个问题该怎么用数学方法解决?

[复制链接]

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
发表于 2007-1-23 12:01:00 | 显示全部楼层 |阅读模式
已知屏幕上一点坐标(x,y),打算以此点为圆心,半径为r画一个圆,怎样求得这个圆上每一点的屏幕坐标?
挺实用的问题吧?

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-1-23 12:33:00 | 显示全部楼层

Re:这个问题该怎么用数学方法解决?

把圆画出来自然就知道了每一点的屏幕坐标了啊

3

主题

67

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2007-1-23 12:36:00 | 显示全部楼层

Re:这个问题该怎么用数学方法解决?

参考Bresenham画圆算法

22

主题

371

帖子

387

积分

中级会员

Rank: 3Rank: 3

积分
387
发表于 2007-1-23 12:36:00 | 显示全部楼层

Re:这个问题该怎么用数学方法解决?

如果一个点的横坐标为x1,纵坐标为y1,
那么当(x-x1)^2 + (y-y1)^2 < r^2时,这个点在圆内;= r^2时,点在圆周上。
从x1=x-r,y1=y-r穷举到x1=x+r,y1=y+r即可求所有点

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2007-1-23 12:40:00 | 显示全部楼层

Re:这个问题该怎么用数学方法解决?

Bresenham / DDA

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
 楼主| 发表于 2007-1-23 13:03:00 | 显示全部楼层

Re:这个问题该怎么用数学方法解决?

To psic:
假设你只有一个画点的指令,要自己用它画出圆。

To silver_gp:
Bresenham画圆算法是经典,但在不要求高精度时显得比较烦琐。

“(x-x1)^2 + (y-y1)^2 = r^2时,点在圆周上”,利用这一点应该最容易吧?圆上某点的x或y总是线性变化的,根据公式算另一个即可。只是对开方运算,有什么变换方法呢?

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2007-1-23 13:04:00 | 显示全部楼层

Re:这个问题该怎么用数学方法解决?

当然某些人先想到QB里面的 CIRCLE

CIRCLE(200,200),10,BF

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-1-23 13:10:00 | 显示全部楼层

Re: Re:这个问题该怎么用数学方法解决?

系统崩溃: Re:这个问题该怎么用数学方法解决?

To psic:
假设你只有一个画点的指令,要自己用它画出圆。



只是对开方运算,有什么变换方法呢?


哦,那就用(x-x1)^2 + (y-y1)^2 = r^2逐点话吧

既然是只考虑屏幕坐标,那x,y应该都是整数吧,有没有整型的快速开方的办法呢……


22

主题

371

帖子

387

积分

中级会员

Rank: 3Rank: 3

积分
387
发表于 2007-1-23 13:45:00 | 显示全部楼层

Re:这个问题该怎么用数学方法解决?

快速开方
http://blog.csdn.net/xueyong1203/archive/2007/01/04/1473396.aspx

在有限的整数地图上,求平方还是查表法较好吧

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
 楼主| 发表于 2007-1-23 14:18:00 | 显示全部楼层

Re: Re:这个问题该怎么用数学方法解决?

Cipher: Re:这个问题该怎么用数学方法解决?

快速开方
http://blog.csdn.net/xueyong1203/archive/2007/01/04/1473396.aspx

在有限的整数地图上,求平方还是查表法较好吧



妙啊!值得学习,没想到抛出砖真能引来玉,谢谢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 08:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表